From 6d1411e1990de6611f4a911fd0e598ee10d2b1fd Mon Sep 17 00:00:00 2001 From: raphael60650 Date: Wed, 14 Jul 2021 12:01:07 +0200 Subject: [PATCH] added "track selection" menu allowing you to only install mod for 3, 2 or 1 star track (track from other Mario Kart are not affected) --- source/__init__.py | 9 +++++++++ source/create_lecode_config.py | 21 +++++++++++++++------ source/definition.py | 2 ++ source/patch_track.py | 2 +- translation.json | 6 +++++- 5 files changed, 32 insertions(+), 8 deletions(-) diff --git a/source/__init__.py b/source/__init__.py index c0ef1ff..7993ce3 100644 --- a/source/__init__.py +++ b/source/__init__.py @@ -22,6 +22,9 @@ def __init__(self): self.boolvar_dont_check_for_update = BooleanVar(value=self.option["dont_check_for_update"]) self.boolvar_dont_check_track_sha1 = BooleanVar(value=self.option["dont_check_track_sha1"]) self.intvar_process_track = IntVar(value=self.option["process_track"]) + self.boolvar_use_1star_track = BooleanVar(value=True) + self.boolvar_use_2star_track = BooleanVar(value=True) + self.boolvar_use_3star_track = BooleanVar(value=True) self.root.title(self.translate("MKWFaraphel Installer")) self.root.resizable(False, False) @@ -46,6 +49,12 @@ def __init__(self): self.menu_format.add_radiobutton(label="CISO", variable=self.stringvar_game_format, value="CISO", command=lambda: self.change_option("format", "CISO")) self.menu_format.add_radiobutton(label="WBFS", variable=self.stringvar_game_format, value="WBFS", command=lambda: self.change_option("format", "WBFS")) + self.menu_trackselection = Menu(self.menu_bar, tearoff=0) + self.menu_bar.add_cascade(label=self.translate("Track selection"), menu=self.menu_trackselection) + self.menu_trackselection.add_checkbutton(label=self.translate("Select"," 1 ","star"), variable=self.boolvar_use_1star_track) + self.menu_trackselection.add_checkbutton(label=self.translate("Select"," 2 ","stars"), variable=self.boolvar_use_2star_track) + self.menu_trackselection.add_checkbutton(label=self.translate("Select"," 3 ","stars"), variable=self.boolvar_use_3star_track) + self.menu_advanced = Menu(self.menu_bar, tearoff=0) self.menu_bar.add_cascade(label=self.translate("Advanced"), menu=self.menu_advanced) self.menu_advanced.add_checkbutton(label=self.translate("Disable downloads"), variable=self.boolvar_disable_download, command=lambda: self.change_option("disable_download", self.boolvar_disable_download)) diff --git a/source/create_lecode_config.py b/source/create_lecode_config.py index 70f799e..eeccfeb 100644 --- a/source/create_lecode_config.py +++ b/source/create_lecode_config.py @@ -9,7 +9,7 @@ def create_lecode_config(self): else: warning = "" if "score" in track: - if track["score"] > 0: + if 0 < track["score"] <= 3: return "★" * track["score"] + "☆" * (3 - track["score"]) + warning + " " return "" @@ -43,9 +43,9 @@ def create_lecode_config(self): ctfile.write(header) rctfile.write(header) - for cup in ctconfig["cup"]: # defined cup section + for cup in ctconfig["cup"]: # defined cup section _cup_config = ctconfig["cup"][cup] - if int(cup) >= 9: # Course qui ne sont ni les originales, ni les courses aléatoires. + if int(cup) >= 9: # Track that are not original and not random selection cup = f'\nC "{_cup_config["name"]}"\n' ctfile.write(cup) rctfile.write(cup) @@ -55,7 +55,16 @@ def create_lecode_config(self): ctfile.write(get_ctfile_text(_course_config, race=False)) rctfile.write(get_ctfile_text(_course_config, race=True)) - for i, _course_config in enumerate(ctconfig["tracks_list"]): # undefined cup section + tracks_list = ctconfig["tracks_list"] + if not self.boolvar_use_1star_track.get(): # if 1 star track are disabled, remove them + tracks_list = list(filter(lambda track: track.get("score") != 1, tracks_list)) + if not self.boolvar_use_2star_track.get(): # if 2 stars track are disabled, remove them + tracks_list = list(filter(lambda track: track.get("score") != 2, tracks_list)) + if not self.boolvar_use_3star_track.get(): # if 3 stars track are disabled, remove them + tracks_list = list(filter(lambda track: track.get("score") != 3, tracks_list)) + # using dict.get allow track that with no "score" attribute to not raise an exception by returning None + + for i, _course_config in enumerate(tracks_list): # undefined cup section if i % 4 == 0: cup = f'\nC "TL{i//4}"\n' ctfile.write(cup) @@ -65,8 +74,8 @@ def create_lecode_config(self): rctfile.write(get_ctfile_text(_course_config, race=True)) for _ in range(1, 4-(i%4)): # Complete cup if track are missing - ctfile.write(f' T T44; T44; 0x00; "_"; ""; "-"\n') - rctfile.write(f' T T44; T44; 0x00; "_"; ""; "-"\n') + ctfile.write(EMPTY_TRACK) + rctfile.write(EMPTY_TRACK) except: self.log_error() diff --git a/source/definition.py b/source/definition.py index bd09c40..0c16aba 100644 --- a/source/definition.py +++ b/source/definition.py @@ -19,6 +19,8 @@ region_ID = { "E": "USA" } +EMPTY_TRACK = ' T T44; T44; 0x00; "_"; ""; "-"\n' + with open("./translation.json", encoding="utf-8") as f: translation_dict = json.load(f) diff --git a/source/patch_track.py b/source/patch_track.py index 58b210f..4e2f5df 100644 --- a/source/patch_track.py +++ b/source/patch_track.py @@ -84,7 +84,7 @@ def patch_track(self, tracks, total_track="?"): "./file/Track/%N.szs", "--szs", "--overwrite", "--autoadd-path", "./file/auto-add/"], creationflags=CREATE_NO_WINDOW, stderr=subprocess.PIPE) else: - messagebox.showerror(self.translate("Erreor"), + messagebox.showerror(self.translate("Error"), self.translate("Can't convert track.\nEnable track download and retry.")) return -1 elif self.boolvar_del_track_after_conv.get(): os.remove(get_track_wu8(track_file)) diff --git a/translation.json b/translation.json index 66fe1c8..9283261 100644 --- a/translation.json +++ b/translation.json @@ -61,7 +61,11 @@ "Can't convert track.\nEnable track download and retry.": "Impossible de convertir la course.\nRéactiver le téléchargement des courses et réessayer.", "Too much track had a conversion issue.": "Trop de course ont eu une erreur de conversion.", "La course": "The track", - "do not have been properly converted.": "n'a pas été correctement converti." + "do not have been properly converted.": "n'a pas été correctement converti.", + "Track selection": "Sélection de course", + "Select": "Sélectionner", + "star": "étoile", + "stars": "étoiles" }, "ge": { "Random: All tracks": "Zufällig: Alle Spuren",