From ee8fea9c5fcb8055b18a9692706e3c49504cd26f Mon Sep 17 00:00:00 2001 From: raphael60650 Date: Fri, 23 Jul 2021 21:30:56 +0200 Subject: [PATCH] reimplemented track selection by star --- source/CT_Config.py | 33 ++++++++++++++++++++------------- source/Game.py | 9 +++++---- 2 files changed, 25 insertions(+), 17 deletions(-) diff --git a/source/CT_Config.py b/source/CT_Config.py index 32353cb..287d2a0 100644 --- a/source/CT_Config.py +++ b/source/CT_Config.py @@ -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,26 +152,23 @@ 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 - else: - filter_func = lambda track: getattr(track, keyword) 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: - 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)) - return track \ No newline at end of file + return track diff --git a/source/Game.py b/source/Game.py index 57f8746..5f48c0a 100644 --- a/source/Game.py +++ b/source/Game.py @@ -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