mirror of
https://github.com/Faraphel/Atlas-Install.git
synced 2025-07-03 19:28:25 +02:00
reimplemented track selection by star
This commit is contained in:
parent
94b15f076d
commit
ee8fea9c5f
2 changed files with 25 additions and 17 deletions
|
@ -29,12 +29,13 @@ def get_cup_icon(id, font_path: str = "./file/SuperMario256.ttf", cup_icon_dir:
|
||||||
|
|
||||||
|
|
||||||
class CT_Config:
|
class CT_Config:
|
||||||
def __init__(self, version: str = None):
|
def __init__(self, version: str = None, gui=None):
|
||||||
self.version = version
|
self.version = version
|
||||||
self.ordered_cups = []
|
self.ordered_cups = []
|
||||||
self.unordered_tracks = []
|
self.unordered_tracks = []
|
||||||
self.all_tracks = []
|
self.all_tracks = []
|
||||||
self.all_version = {version}
|
self.all_version = {version}
|
||||||
|
self.gui = gui
|
||||||
|
|
||||||
def add_ordered_cup(self, cup: Cup):
|
def add_ordered_cup(self, cup: Cup):
|
||||||
"""
|
"""
|
||||||
|
@ -73,7 +74,16 @@ class CT_Config:
|
||||||
|
|
||||||
# generate cup for undefined track
|
# generate cup for undefined track
|
||||||
unordered_cups = []
|
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:
|
if i % 4 == 0:
|
||||||
_actual_cup = Cup(name=f"TL{i // 4}")
|
_actual_cup = Cup(name=f"TL{i // 4}")
|
||||||
unordered_cups.append(_actual_cup)
|
unordered_cups.append(_actual_cup)
|
||||||
|
@ -142,26 +152,23 @@ class CT_Config:
|
||||||
self.all_version.add(track.since_version)
|
self.all_version.add(track.since_version)
|
||||||
self.all_version = sorted(self.all_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 values_list: search track with a value list instead of a single value
|
||||||
:param not_value: search track that does not have value
|
:param not_value: search track that does not have value
|
||||||
:param kwargs: any track property = any value
|
:param kwargs: any track property = any value
|
||||||
:return: track list respecting condition
|
: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 values_list:
|
||||||
if not_value:
|
if not_value: filter_func = lambda track: getattr(track, keyword) not in 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:
|
else:
|
||||||
if not_value:
|
if not_value: filter_func = lambda track: getattr(track, keyword) != value
|
||||||
filter_func = lambda track: getattr(track, keyword) != value
|
else: filter_func = lambda track: getattr(track, keyword) == value
|
||||||
else:
|
|
||||||
filter_func = lambda track: getattr(track, keyword) == value
|
|
||||||
|
|
||||||
for keyword, value in kwargs.items():
|
for keyword, value in kwargs.items():
|
||||||
track = list(filter(filter_func, track))
|
track = list(filter(filter_func, track))
|
||||||
return track
|
return track
|
||||||
|
|
|
@ -50,7 +50,7 @@ class Game:
|
||||||
self.region_ID = region_ID
|
self.region_ID = region_ID
|
||||||
self.game_ID = game_ID
|
self.game_ID = game_ID
|
||||||
self.gui = gui
|
self.gui = gui
|
||||||
self.ctconfig = CT_Config()
|
self.ctconfig = CT_Config(gui=gui)
|
||||||
|
|
||||||
def set_path(self, path):
|
def set_path(self, path):
|
||||||
self.extension = get_extension(path).upper()
|
self.extension = get_extension(path).upper()
|
||||||
|
@ -443,9 +443,10 @@ class Game:
|
||||||
for i, track in enumerate(self.ctconfig.all_tracks):
|
for i, track in enumerate(self.ctconfig.all_tracks):
|
||||||
while True:
|
while True:
|
||||||
if len(thread_list) < max_process:
|
if len(thread_list) < max_process:
|
||||||
thread_list[track.file_wu8] = Thread(target=add_process, args=[track])
|
track_name = track.get_track_name()
|
||||||
thread_list[track.file_wu8].setDaemon(True)
|
thread_list[track_name] = Thread(target=add_process, args=[track])
|
||||||
thread_list[track.file_wu8].start()
|
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",
|
self.gui.progress(statut=self.gui.translate("Converting tracks", f"\n({i + 1}/{total_track})\n",
|
||||||
"\n".join(thread_list.keys())), add=1)
|
"\n".join(thread_list.keys())), add=1)
|
||||||
break
|
break
|
||||||
|
|
Loading…
Reference in a new issue