merged OriginalTrack and Slot to avoid confusion with the Track module

This commit is contained in:
Faraphel 2022-08-19 18:39:34 +02:00
parent 49c8353252
commit b67517dc59
6 changed files with 48 additions and 143 deletions

View file

@ -81,7 +81,6 @@
"CONVERTING_TO_GAME_FILE": "Converting to game file", "CONVERTING_TO_GAME_FILE": "Converting to game file",
"CANNOT_FIND_COLOR": "Can't find color", "CANNOT_FIND_COLOR": "Can't find color",
"NORMALIZING_TRACKS": "Normalizing tracks", "NORMALIZING_TRACKS": "Normalizing tracks",
"CANNOT_FIND_ORIGINAL_TRACK": "Can't find original track",
"INVALID_MACRO": "Invalid macro", "INVALID_MACRO": "Invalid macro",
"INVALID_AST_TYPE": "Invalid ast type", "INVALID_AST_TYPE": "Invalid ast type",
"MAGIC_ATTRIBUTE_ARE_FORBIDDEN": "Magic attribute are forbidden", "MAGIC_ATTRIBUTE_ARE_FORBIDDEN": "Magic attribute are forbidden",

View file

@ -82,7 +82,6 @@
"CONVERTING_TO_GAME_FILE": "Conversion en fichier de jeu", "CONVERTING_TO_GAME_FILE": "Conversion en fichier de jeu",
"CANNOT_FIND_COLOR": "Impossible de trouver la couleur", "CANNOT_FIND_COLOR": "Impossible de trouver la couleur",
"NORMALIZING_TRACKS": "Normalisation des courses", "NORMALIZING_TRACKS": "Normalisation des courses",
"CANNOT_FIND_ORIGINAL_TRACK": "Impossible de trouver la course originale",
"INVALID_MACRO": "Macro invalide", "INVALID_MACRO": "Macro invalide",
"INVALID_AST_TYPE": "Type d'Ast invalide", "INVALID_AST_TYPE": "Type d'Ast invalide",
"MAGIC_ATTRIBUTE_ARE_FORBIDDEN": "Les attributs magique sont interdit", "MAGIC_ATTRIBUTE_ARE_FORBIDDEN": "Les attributs magique sont interdit",

View file

@ -6,7 +6,7 @@ import json
from PIL import Image from PIL import Image
from source import threaded from source import threaded
from source.mkw import Tag from source.mkw import Tag, Slot
from source.mkw.Cup import Cup from source.mkw.Cup import Cup
from source.mkw.MKWColor import bmg_color_text, bmg_color_raw from source.mkw.MKWColor import bmg_color_text, bmg_color_raw
from source.mkw.ModSettings import AbstractModSettings from source.mkw.ModSettings import AbstractModSettings
@ -450,7 +450,7 @@ class ModConfig:
# if the track should use the default track instead in multiplayer, # 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 # copy the default track to the same file but with a _d at the end
shutil.copy( 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" destination_path / f"{track_file.stem}_d.szs"
) )

View file

@ -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)

View file

@ -1,4 +1,5 @@
from dataclasses import dataclass from dataclasses import dataclass
from source.translation import translate as _
class SlotNotFound(Exception): class SlotNotFound(Exception):
@ -14,66 +15,67 @@ class Slot:
normal: str # T11, T12, ... normal: str # T11, T12, ...
abbreviation: str # LC, MMM, ... abbreviation: str # LC, MMM, ...
track_name: str # beginner_course, farm_course, ...
def __str__(self) -> str: return self.normal def __str__(self) -> str: return self.normal
def __eq__(self, other) -> bool: return any(getattr(self, key) == other for key in self.__slots__) def __eq__(self, other) -> bool: return any(getattr(self, key) == other for key in self.__slots__)
all_slots: list[Slot] = [ all_slots: list[Slot] = [
Slot(normal="T11", abbreviation="LC"), Slot(normal="T11", abbreviation="LC", track_name="beginner_course"),
Slot(normal="T12", abbreviation="MMM"), Slot(normal="T12", abbreviation="MMM", track_name="farm_course"),
Slot(normal="T13", abbreviation="MG"), Slot(normal="T13", abbreviation="MG", track_name="kinoko_course"),
Slot(normal="T14", abbreviation="TF"), Slot(normal="T14", abbreviation="TF", track_name="factory_course"),
Slot(normal="T21", abbreviation="MC"), Slot(normal="T21", abbreviation="MC", track_name="castle_course"),
Slot(normal="T22", abbreviation="CM"), Slot(normal="T22", abbreviation="CM", track_name="shopping_course"),
Slot(normal="T23", abbreviation="DKS"), Slot(normal="T23", abbreviation="DKS", track_name="boardcross_course"),
Slot(normal="T24", abbreviation="WGM"), Slot(normal="T24", abbreviation="WGM", track_name="truck_course"),
Slot(normal="T31", abbreviation="DC"), Slot(normal="T31", abbreviation="DC", track_name="senior_course"),
Slot(normal="T32", abbreviation="KC"), Slot(normal="T32", abbreviation="KC", track_name="water_course"),
Slot(normal="T33", abbreviation="MT"), Slot(normal="T33", abbreviation="MT", track_name="treehouse_course"),
Slot(normal="T34", abbreviation="GV"), Slot(normal="T34", abbreviation="GV", track_name="volcano_course"),
Slot(normal="T41", abbreviation="DDR"), Slot(normal="T41", abbreviation="DDR", track_name="desert_course"),
Slot(normal="T42", abbreviation="MH"), Slot(normal="T42", abbreviation="MH", track_name="ridgehighway_course"),
Slot(normal="T43", abbreviation="BC"), Slot(normal="T43", abbreviation="BC", track_name="koopa_course"),
Slot(normal="T44", abbreviation="RR"), Slot(normal="T44", abbreviation="RR", track_name="rainbow_course"),
# retro tracks # retro tracks
Slot(normal="T51", abbreviation="gPB"), Slot(normal="T51", abbreviation="gPB", track_name="old_peach_gc"),
Slot(normal="T52", abbreviation="dYF"), Slot(normal="T52", abbreviation="dYF", track_name="old_falls_ds"),
Slot(normal="T53", abbreviation="sGV2"), Slot(normal="T53", abbreviation="sGV2", track_name="old_obake_sfc"),
Slot(normal="T54", abbreviation="nMR"), Slot(normal="T54", abbreviation="nMR", track_name="old_mario_64"),
Slot(normal="T61", abbreviation="nSL"), Slot(normal="T61", abbreviation="nSL", track_name="old_sherbet_64"),
Slot(normal="T62", abbreviation="gSGB"), Slot(normal="T62", abbreviation="gSGB", track_name="old_heyho_gba"),
Slot(normal="T63", abbreviation="dDS"), Slot(normal="T63", abbreviation="dDS", track_name="old_town_ds"),
Slot(normal="T64", abbreviation="gWS"), Slot(normal="T64", abbreviation="gWS", track_name="old_waluigi_gc"),
Slot(normal="T71", abbreviation="dDH"), Slot(normal="T71", abbreviation="dDH", track_name="old_desert_ds"),
Slot(normal="T72", abbreviation="gBC3"), Slot(normal="T72", abbreviation="gBC3", track_name="old_koopa_gba"),
Slot(normal="T73", abbreviation="nDKJP"), Slot(normal="T73", abbreviation="nDKJP", track_name="old_donkey_64"),
Slot(normal="T74", abbreviation="gMC"), Slot(normal="T74", abbreviation="gMC", track_name="old_mario_gc"),
Slot(normal="T81", abbreviation="sMC3"), Slot(normal="T81", abbreviation="sMC3", track_name="old_mario_sfc"),
Slot(normal="T82", abbreviation="dPG"), Slot(normal="T82", abbreviation="dPG", track_name="old_garden_ds"),
Slot(normal="T83", abbreviation="gDKM"), Slot(normal="T83", abbreviation="gDKM", track_name="old_donkey_gc"),
Slot(normal="T84", abbreviation="nBC"), Slot(normal="T84", abbreviation="nBC", track_name="old_koopa_64"),
# wii arena # wii arena
Slot(normal="A11", abbreviation="aBP"), Slot(normal="A11", abbreviation="aBP", track_name="block_battle"),
Slot(normal="A12", abbreviation="aDP"), Slot(normal="A12", abbreviation="aDP", track_name="venice_battle"),
Slot(normal="A13", abbreviation="aFS"), Slot(normal="A13", abbreviation="aFS", track_name="skate_battle"),
Slot(normal="A14", abbreviation="aCCW"), Slot(normal="A14", abbreviation="aCCW", track_name="casino_battle"),
Slot(normal="A15", abbreviation="aTD"), Slot(normal="A15", abbreviation="aTD", track_name="sand_battle"),
# retro arena # retro arena
Slot(normal="A21", abbreviation="asBC4"), Slot(normal="A21", abbreviation="asBC4", track_name="old_battle4_sfc"),
Slot(normal="A22", abbreviation="agBC3"), Slot(normal="A22", abbreviation="agBC3", track_name="old_battle3_gba"),
Slot(normal="A23", abbreviation="anSS"), Slot(normal="A23", abbreviation="anSS", track_name="old_matenro_64"),
Slot(normal="A24", abbreviation="agCL"), Slot(normal="A24", abbreviation="agCL", track_name="old_CookieLand_gc"),
Slot(normal="A25", abbreviation="adTH"), Slot(normal="A25", abbreviation="adTH", track_name="old_House_ds"),
] ]

View file

@ -1,4 +1,4 @@
from source.mkw import OriginalTrack from source.mkw import Slot
from source.wt import * from source.wt import *
import re 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 # this command will generate unwanted definition for the originals tracks / arena. Delete them if
# they are not custom # 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 remove_unwanted_definition(match: re.Match) -> str:
def_id = int(match.group("id"), 16) def_id = int(match.group("id"), 16)