diff --git a/assets/language/en.json b/assets/language/en.json index e2c14f5..cdc77d0 100644 --- a/assets/language/en.json +++ b/assets/language/en.json @@ -81,7 +81,6 @@ "CONVERTING_TO_GAME_FILE": "Converting to game file", "CANNOT_FIND_COLOR": "Can't find color", "NORMALIZING_TRACKS": "Normalizing tracks", - "CANNOT_FIND_ORIGINAL_TRACK": "Can't find original track", "INVALID_MACRO": "Invalid macro", "INVALID_AST_TYPE": "Invalid ast type", "MAGIC_ATTRIBUTE_ARE_FORBIDDEN": "Magic attribute are forbidden", diff --git a/assets/language/fr.json b/assets/language/fr.json index f5d2417..c54cb8a 100644 --- a/assets/language/fr.json +++ b/assets/language/fr.json @@ -82,7 +82,6 @@ "CONVERTING_TO_GAME_FILE": "Conversion en fichier de jeu", "CANNOT_FIND_COLOR": "Impossible de trouver la couleur", "NORMALIZING_TRACKS": "Normalisation des courses", - "CANNOT_FIND_ORIGINAL_TRACK": "Impossible de trouver la course originale", "INVALID_MACRO": "Macro invalide", "INVALID_AST_TYPE": "Type d'Ast invalide", "MAGIC_ATTRIBUTE_ARE_FORBIDDEN": "Les attributs magique sont interdit", diff --git a/source/mkw/ModConfig.py b/source/mkw/ModConfig.py index 27c24f8..0f3e9cf 100644 --- a/source/mkw/ModConfig.py +++ b/source/mkw/ModConfig.py @@ -6,7 +6,7 @@ import json from PIL import Image from source import threaded -from source.mkw import Tag +from source.mkw import Tag, Slot from source.mkw.Cup import Cup from source.mkw.MKWColor import bmg_color_text, bmg_color_raw from source.mkw.ModSettings import AbstractModSettings @@ -450,7 +450,7 @@ class ModConfig: # if the track should use the default track instead in multiplayer, # copy the default track to the same file but with a _d at the end shutil.copy( - original_tracks_path / f"{OriginalTrack.get(slot=track.special).name}_d.szs", + original_tracks_path / f"{Slot.get(normal=track.special).track_name}_d.szs", destination_path / f"{track_file.stem}_d.szs" ) diff --git a/source/mkw/OriginalTrack.py b/source/mkw/OriginalTrack.py deleted file mode 100644 index efc34e2..0000000 --- a/source/mkw/OriginalTrack.py +++ /dev/null @@ -1,95 +0,0 @@ -from dataclasses import dataclass - -from source.mkw import Slot -from source.translation import translate as _ - - -class OriginalTrackNotFound(Exception): - def __init__(self, track_data: any): - super().__init__(_("CANNOT_FIND_ORIGINAL_TRACK", ' "', track_data, '" ')) - - -@dataclass(init=True, slots=True) -class OriginalTrack: - """ - An object representing one of the original track / arena of the game - """ - - name: str - slot: Slot - - def __post_init__(self): - if isinstance(self.slot, str): self.slot = Slot.get(normal=self.slot) - - -all_original_tracks: list[OriginalTrack] = [ - OriginalTrack(name="beginner_course", slot=Slot.get(normal="T11")), - OriginalTrack(name="farm_course", slot="T12"), - OriginalTrack(name="kinoko_course", slot="T13"), - OriginalTrack(name="factory_course", slot="T14"), - - OriginalTrack(name="castle_course", slot="T21"), - OriginalTrack(name="shopping_course", slot="T22"), - OriginalTrack(name="boardcross_course", slot="T23"), - OriginalTrack(name="truck_course", slot="T24"), - - OriginalTrack(name="senior_course", slot="T31"), - OriginalTrack(name="water_course", slot="T32"), - OriginalTrack(name="treehouse_course", slot="T33"), - OriginalTrack(name="volcano_course", slot="T34"), - - OriginalTrack(name="desert_course", slot="T41"), - OriginalTrack(name="ridgehighway_course", slot="T42"), - OriginalTrack(name="koopa_course", slot="T43"), - OriginalTrack(name="rainbow_course", slot="T44"), - - # retro tracks - OriginalTrack(name="old_peach_gc", slot="T51"), - OriginalTrack(name="old_falls_ds", slot="T52"), - OriginalTrack(name="old_obake_sfc", slot="T53"), - OriginalTrack(name="old_mario_64", slot="T54"), - - OriginalTrack(name="old_sherbet_64", slot="T61"), - OriginalTrack(name="old_heyho_gba", slot="T62"), - OriginalTrack(name="old_town_ds", slot="T63"), - OriginalTrack(name="old_waluigi_gc", slot="T64"), - - OriginalTrack(name="old_desert_ds", slot="T71"), - OriginalTrack(name="old_koopa_gba", slot="T72"), - OriginalTrack(name="old_donkey_64", slot="T73"), - OriginalTrack(name="old_mario_gc", slot="T74"), - - OriginalTrack(name="old_mario_sfc", slot="T81"), - OriginalTrack(name="old_garden_ds", slot="T82"), - OriginalTrack(name="old_donkey_gc", slot="T83"), - OriginalTrack(name="old_koopa_64", slot="T84"), - - # wii arena - OriginalTrack(name="block_battle", slot="A11"), - OriginalTrack(name="venice_battle", slot="A12"), - OriginalTrack(name="skate_battle", slot="A13"), - OriginalTrack(name="casino_battle", slot="A14"), - OriginalTrack(name="sand_battle", slot="A15"), - - # retro arena - OriginalTrack(name="old_battle4_sfc", slot="A21"), - OriginalTrack(name="old_battle3_gba", slot="A22"), - OriginalTrack(name="old_matenro_64", slot="A23"), - OriginalTrack(name="old_CookieLand_gc", slot="A24"), - OriginalTrack(name="old_House_ds", slot="A25"), -] - - -def get(**track_datas) -> OriginalTrack: - """ - Get a original track object from keys and its value - :param track_datas: dictionary of track key and their value - :return: the corresponding original track - """ - try: - return next(filter( - lambda og_track: all(getattr(og_track, key) == value for key, value in track_datas.items()), - all_original_tracks - )) - except StopIteration: raise OriginalTrackNotFound(track_datas) - diff --git a/source/mkw/Slot.py b/source/mkw/Slot.py index a75c413..79974a0 100644 --- a/source/mkw/Slot.py +++ b/source/mkw/Slot.py @@ -1,4 +1,5 @@ from dataclasses import dataclass +from source.translation import translate as _ class SlotNotFound(Exception): @@ -14,66 +15,67 @@ class Slot: normal: str # T11, T12, ... abbreviation: str # LC, MMM, ... + track_name: str # beginner_course, farm_course, ... def __str__(self) -> str: return self.normal def __eq__(self, other) -> bool: return any(getattr(self, key) == other for key in self.__slots__) all_slots: list[Slot] = [ - Slot(normal="T11", abbreviation="LC"), - Slot(normal="T12", abbreviation="MMM"), - Slot(normal="T13", abbreviation="MG"), - Slot(normal="T14", abbreviation="TF"), + Slot(normal="T11", abbreviation="LC", track_name="beginner_course"), + Slot(normal="T12", abbreviation="MMM", track_name="farm_course"), + Slot(normal="T13", abbreviation="MG", track_name="kinoko_course"), + Slot(normal="T14", abbreviation="TF", track_name="factory_course"), - Slot(normal="T21", abbreviation="MC"), - Slot(normal="T22", abbreviation="CM"), - Slot(normal="T23", abbreviation="DKS"), - Slot(normal="T24", abbreviation="WGM"), + Slot(normal="T21", abbreviation="MC", track_name="castle_course"), + Slot(normal="T22", abbreviation="CM", track_name="shopping_course"), + Slot(normal="T23", abbreviation="DKS", track_name="boardcross_course"), + Slot(normal="T24", abbreviation="WGM", track_name="truck_course"), - Slot(normal="T31", abbreviation="DC"), - Slot(normal="T32", abbreviation="KC"), - Slot(normal="T33", abbreviation="MT"), - Slot(normal="T34", abbreviation="GV"), + Slot(normal="T31", abbreviation="DC", track_name="senior_course"), + Slot(normal="T32", abbreviation="KC", track_name="water_course"), + Slot(normal="T33", abbreviation="MT", track_name="treehouse_course"), + Slot(normal="T34", abbreviation="GV", track_name="volcano_course"), - Slot(normal="T41", abbreviation="DDR"), - Slot(normal="T42", abbreviation="MH"), - Slot(normal="T43", abbreviation="BC"), - Slot(normal="T44", abbreviation="RR"), + Slot(normal="T41", abbreviation="DDR", track_name="desert_course"), + Slot(normal="T42", abbreviation="MH", track_name="ridgehighway_course"), + Slot(normal="T43", abbreviation="BC", track_name="koopa_course"), + Slot(normal="T44", abbreviation="RR", track_name="rainbow_course"), # retro tracks - Slot(normal="T51", abbreviation="gPB"), - Slot(normal="T52", abbreviation="dYF"), - Slot(normal="T53", abbreviation="sGV2"), - Slot(normal="T54", abbreviation="nMR"), + Slot(normal="T51", abbreviation="gPB", track_name="old_peach_gc"), + Slot(normal="T52", abbreviation="dYF", track_name="old_falls_ds"), + Slot(normal="T53", abbreviation="sGV2", track_name="old_obake_sfc"), + Slot(normal="T54", abbreviation="nMR", track_name="old_mario_64"), - Slot(normal="T61", abbreviation="nSL"), - Slot(normal="T62", abbreviation="gSGB"), - Slot(normal="T63", abbreviation="dDS"), - Slot(normal="T64", abbreviation="gWS"), + Slot(normal="T61", abbreviation="nSL", track_name="old_sherbet_64"), + Slot(normal="T62", abbreviation="gSGB", track_name="old_heyho_gba"), + Slot(normal="T63", abbreviation="dDS", track_name="old_town_ds"), + Slot(normal="T64", abbreviation="gWS", track_name="old_waluigi_gc"), - Slot(normal="T71", abbreviation="dDH"), - Slot(normal="T72", abbreviation="gBC3"), - Slot(normal="T73", abbreviation="nDKJP"), - Slot(normal="T74", abbreviation="gMC"), + Slot(normal="T71", abbreviation="dDH", track_name="old_desert_ds"), + Slot(normal="T72", abbreviation="gBC3", track_name="old_koopa_gba"), + Slot(normal="T73", abbreviation="nDKJP", track_name="old_donkey_64"), + Slot(normal="T74", abbreviation="gMC", track_name="old_mario_gc"), - Slot(normal="T81", abbreviation="sMC3"), - Slot(normal="T82", abbreviation="dPG"), - Slot(normal="T83", abbreviation="gDKM"), - Slot(normal="T84", abbreviation="nBC"), + Slot(normal="T81", abbreviation="sMC3", track_name="old_mario_sfc"), + Slot(normal="T82", abbreviation="dPG", track_name="old_garden_ds"), + Slot(normal="T83", abbreviation="gDKM", track_name="old_donkey_gc"), + Slot(normal="T84", abbreviation="nBC", track_name="old_koopa_64"), # wii arena - Slot(normal="A11", abbreviation="aBP"), - Slot(normal="A12", abbreviation="aDP"), - Slot(normal="A13", abbreviation="aFS"), - Slot(normal="A14", abbreviation="aCCW"), - Slot(normal="A15", abbreviation="aTD"), + Slot(normal="A11", abbreviation="aBP", track_name="block_battle"), + Slot(normal="A12", abbreviation="aDP", track_name="venice_battle"), + Slot(normal="A13", abbreviation="aFS", track_name="skate_battle"), + Slot(normal="A14", abbreviation="aCCW", track_name="casino_battle"), + Slot(normal="A15", abbreviation="aTD", track_name="sand_battle"), # retro arena - Slot(normal="A21", abbreviation="asBC4"), - Slot(normal="A22", abbreviation="agBC3"), - Slot(normal="A23", abbreviation="anSS"), - Slot(normal="A24", abbreviation="agCL"), - Slot(normal="A25", abbreviation="adTH"), + Slot(normal="A21", abbreviation="asBC4", track_name="old_battle4_sfc"), + Slot(normal="A22", abbreviation="agBC3", track_name="old_battle3_gba"), + Slot(normal="A23", abbreviation="anSS", track_name="old_matenro_64"), + Slot(normal="A24", abbreviation="agCL", track_name="old_CookieLand_gc"), + Slot(normal="A25", abbreviation="adTH", track_name="old_House_ds"), ] diff --git a/source/wt/ctc.py b/source/wt/ctc.py index 47c0580..b983bed 100644 --- a/source/wt/ctc.py +++ b/source/wt/ctc.py @@ -1,4 +1,4 @@ -from source.mkw import OriginalTrack +from source.mkw import Slot from source.wt import * import re @@ -24,7 +24,7 @@ def bmg_ctfile(ctfile: "Path | str") -> str: # this command will generate unwanted definition for the originals tracks / arena. Delete them if # they are not custom - original_tracks_texts: list[str] = list(map(lambda og_track: og_track.name, OriginalTrack.all_original_tracks)) + original_tracks_texts: list[str] = list(map(lambda slot: slot.track_name, Slot.all_slots)) def remove_unwanted_definition(match: re.Match) -> str: def_id = int(match.group("id"), 16)