reimplemented track selection by star

This commit is contained in:
raphael60650 2021-07-23 21:30:56 +02:00
parent 94b15f076d
commit ee8fea9c5f
2 changed files with 25 additions and 17 deletions

View file

@ -29,12 +29,13 @@ def get_cup_icon(id, font_path: str = "./file/SuperMario256.ttf", cup_icon_dir:
class CT_Config:
def __init__(self, version: str = None):
def __init__(self, version: str = None, gui=None):
self.version = version
self.ordered_cups = []
self.unordered_tracks = []
self.all_tracks = []
self.all_version = {version}
self.gui = gui
def add_ordered_cup(self, cup: Cup):
"""
@ -73,7 +74,16 @@ class CT_Config:
# generate cup for undefined track
unordered_cups = []
for i, track in enumerate(self.unordered_tracks):
star_value = []
if not self.gui.boolvar_use_1star_track.get(): star_value.append(1)
if not self.gui.boolvar_use_2star_track.get(): star_value.append(2)
if not self.gui.boolvar_use_3star_track.get(): star_value.append(3)
track_list = self.search_tracks(not_value=True, values_list=True,
only_unordered_track=True, score=star_value)
for i, track in enumerate(track_list):
if i % 4 == 0:
_actual_cup = Cup(name=f"TL{i // 4}")
unordered_cups.append(_actual_cup)
@ -142,25 +152,22 @@ class CT_Config:
self.all_version.add(track.since_version)
self.all_version = sorted(self.all_version)
def search_tracks(self, values_list=False, not_value=False, **kwargs):
def search_tracks(self, values_list=False, not_value=False, only_unordered_track=False, **kwargs):
"""
:param only_unordered_track: only search in unordered track
:param values_list: search track with a value list instead of a single value
:param not_value: search track that does not have value
:param kwargs: any track property = any value
:return: track list respecting condition
"""
track = self.all_tracks.copy()
track = self.all_tracks.copy() if not only_unordered_track else self.unordered_tracks.copy()
if values_list:
if not_value:
filter_func = lambda track: getattr(track, keyword) not in value
if not_value: filter_func = lambda track: getattr(track, keyword) not in value
else: filter_func = lambda track: getattr(track, keyword) in value
else:
filter_func = lambda track: getattr(track, keyword) in value
else:
if not_value:
filter_func = lambda track: getattr(track, keyword) != value
else:
filter_func = lambda track: getattr(track, keyword) == value
if not_value: filter_func = lambda track: getattr(track, keyword) != value
else: filter_func = lambda track: getattr(track, keyword) == value
for keyword, value in kwargs.items():
track = list(filter(filter_func, track))

View file

@ -50,7 +50,7 @@ class Game:
self.region_ID = region_ID
self.game_ID = game_ID
self.gui = gui
self.ctconfig = CT_Config()
self.ctconfig = CT_Config(gui=gui)
def set_path(self, path):
self.extension = get_extension(path).upper()
@ -443,9 +443,10 @@ class Game:
for i, track in enumerate(self.ctconfig.all_tracks):
while True:
if len(thread_list) < max_process:
thread_list[track.file_wu8] = Thread(target=add_process, args=[track])
thread_list[track.file_wu8].setDaemon(True)
thread_list[track.file_wu8].start()
track_name = track.get_track_name()
thread_list[track_name] = Thread(target=add_process, args=[track])
thread_list[track_name].setDaemon(True)
thread_list[track_name].start()
self.gui.progress(statut=self.gui.translate("Converting tracks", f"\n({i + 1}/{total_track})\n",
"\n".join(thread_list.keys())), add=1)
break