mirror of
https://github.com/Faraphel/Atlas-Install.git
synced 2025-07-03 19:28:25 +02:00
OriginalTrack is now a dataclass for better readability
This commit is contained in:
parent
025d985316
commit
3bfcfe53e4
3 changed files with 79 additions and 61 deletions
|
@ -11,7 +11,7 @@ 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
|
||||||
from source.mkw.Track import CustomTrack, DefaultTrack, Arena
|
from source.mkw.Track import CustomTrack, DefaultTrack, Arena
|
||||||
from source.mkw.OriginalTrack import OriginalTrack
|
from source.mkw import OriginalTrack
|
||||||
from source.progress import Progress
|
from source.progress import Progress
|
||||||
from source.safe_eval import safe_eval, multiple_safe_eval
|
from source.safe_eval import safe_eval, multiple_safe_eval
|
||||||
from source.wt.szs import SZSPath
|
from source.wt.szs import SZSPath
|
||||||
|
@ -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(track_data=track.special, track_key='slot').name}_d.szs",
|
original_tracks_path / f"{OriginalTrack.get(slot=track.special).name}_d.szs",
|
||||||
destination_path / f"{track_file.stem}_d.szs"
|
destination_path / f"{track_file.stem}_d.szs"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
|
@ -1,3 +1,6 @@
|
||||||
|
from dataclasses import dataclass
|
||||||
|
|
||||||
|
from source.mkw import Slot
|
||||||
from source.translation import translate as _
|
from source.translation import translate as _
|
||||||
|
|
||||||
|
|
||||||
|
@ -6,70 +9,85 @@ class OriginalTrackNotFound(Exception):
|
||||||
super().__init__(_("CANNOT_FIND_ORIGINAL_TRACK", ' "', track_data, '" '))
|
super().__init__(_("CANNOT_FIND_ORIGINAL_TRACK", ' "', track_data, '" '))
|
||||||
|
|
||||||
|
|
||||||
|
@dataclass(init=True, slots=True, frozen=True)
|
||||||
class OriginalTrack:
|
class OriginalTrack:
|
||||||
all_original_tracks: list[dict] = [
|
"""
|
||||||
# wii tracks
|
An object representing one of the original track / arena of the game
|
||||||
{"name": "beginner_course", "slot": "T11", "nickname": "LC"},
|
"""
|
||||||
{"name": "farm_course", "slot": "T12", "nickname": "MMM"},
|
|
||||||
{"name": "kinoko_course", "slot": "T13", "nickname": "MG"},
|
|
||||||
{"name": "factory_course", "slot": "T14", "nickname": "TF"},
|
|
||||||
|
|
||||||
{"name": "castle_course", "slot": "T21", "nickname": "MC"},
|
name: str
|
||||||
{"name": "shopping_course", "slot": "T22", "nickname": "CM"},
|
slot: Slot
|
||||||
{"name": "boardcross_course", "slot": "T23", "nickname": "DKS"},
|
nickname: str
|
||||||
{"name": "truck_course", "slot": "T24", "nickname": "WGM"},
|
|
||||||
|
|
||||||
{"name": "senior_course", "slot": "T31", "nickname": "DC"},
|
|
||||||
{"name": "water_course", "slot": "T32", "nickname": "KC"},
|
|
||||||
{"name": "treehouse_course", "slot": "T33", "nickname": "MT"},
|
|
||||||
{"name": "volcano_course", "slot": "T34", "nickname": "GV"},
|
|
||||||
|
|
||||||
{"name": "desert_course", "slot": "T41", "nickname": "DDR"},
|
all_original_tracks: list[OriginalTrack] = [
|
||||||
{"name": "ridgehighway_course", "slot": "T42", "nickname": "MH"},
|
OriginalTrack(name="beginner_course", slot="T11", nickname="LC"),
|
||||||
{"name": "koopa_course", "slot": "T43", "nickname": "BC"},
|
OriginalTrack(name="farm_course", slot="T12", nickname="MMM"),
|
||||||
{"name": "rainbow_course", "slot": "T44", "nickname": "RR"},
|
OriginalTrack(name="kinoko_course", slot="T13", nickname="MG"),
|
||||||
|
OriginalTrack(name="factory_course", slot="T14", nickname="TF"),
|
||||||
|
|
||||||
# retro tracks
|
OriginalTrack(name="castle_course", slot="T21", nickname="MC"),
|
||||||
{"name": "old_peach_gc", "slot": "T51", "nickname": "gPB"},
|
OriginalTrack(name="shopping_course", slot="T22", nickname="CM"),
|
||||||
{"name": "old_falls_ds", "slot": "T52", "nickname": "dYF"},
|
OriginalTrack(name="boardcross_course", slot="T23", nickname="DKS"),
|
||||||
{"name": "old_obake_sfc", "slot": "T53", "nickname": "sGV2"},
|
OriginalTrack(name="truck_course", slot="T24", nickname="WGM"),
|
||||||
{"name": "old_mario_64", "slot": "T54", "nickname": "nMR"},
|
|
||||||
|
|
||||||
{"name": "old_sherbet_64", "slot": "T61", "nickname": "nSL"},
|
OriginalTrack(name="senior_course", slot="T31", nickname="DC"),
|
||||||
{"name": "old_heyho_gba", "slot": "T62", "nickname": "gSGB"},
|
OriginalTrack(name="water_course", slot="T32", nickname="KC"),
|
||||||
{"name": "old_town_ds", "slot": "T63", "nickname": "dDS"},
|
OriginalTrack(name="treehouse_course", slot="T33", nickname="MT"),
|
||||||
{"name": "old_waluigi_gc", "slot": "T64", "nickname": "gWS"},
|
OriginalTrack(name="volcano_course", slot="T34", nickname="GV"),
|
||||||
|
|
||||||
{"name": "old_desert_ds", "slot": "T71", "nickname": "dDH"},
|
OriginalTrack(name="desert_course", slot="T41", nickname="DDR"),
|
||||||
{"name": "old_koopa_gba", "slot": "T72", "nickname": "gBC3"},
|
OriginalTrack(name="ridgehighway_course", slot="T42", nickname="MH"),
|
||||||
{"name": "old_donkey_64", "slot": "T73", "nickname": "nDKJP"},
|
OriginalTrack(name="koopa_course", slot="T43", nickname="BC"),
|
||||||
{"name": "old_mario_gc", "slot": "T74", "nickname": "gMC"},
|
OriginalTrack(name="rainbow_course", slot="T44", nickname="RR"),
|
||||||
|
|
||||||
{"name": "old_mario_sfc", "slot": "T81", "nickname": "sMC3"},
|
# retro tracks
|
||||||
{"name": "old_garden_ds", "slot": "T82", "nickname": "dPG"},
|
OriginalTrack(name="old_peach_gc", slot="T51", nickname="gPB"),
|
||||||
{"name": "old_donkey_gc", "slot": "T83", "nickname": "gDKM"},
|
OriginalTrack(name="old_falls_ds", slot="T52", nickname="dYF"),
|
||||||
{"name": "old_koopa_64", "slot": "T84", "nickname": "nBC"},
|
OriginalTrack(name="old_obake_sfc", slot="T53", nickname="sGV2"),
|
||||||
|
OriginalTrack(name="old_mario_64", slot="T54", nickname="nMR"),
|
||||||
|
|
||||||
# wii arena
|
OriginalTrack(name="old_sherbet_64", slot="T61", nickname="nSL"),
|
||||||
{"name": "block_battle", "slot": "A11", "nickname": "aBP"},
|
OriginalTrack(name="old_heyho_gba", slot="T62", nickname="gSGB"),
|
||||||
{"name": "venice_battle", "slot": "A12", "nickname": "aDP"},
|
OriginalTrack(name="old_town_ds", slot="T63", nickname="dDS"),
|
||||||
{"name": "skate_battle", "slot": "A13", "nickname": "aFS"},
|
OriginalTrack(name="old_waluigi_gc", slot="T64", nickname="gWS"),
|
||||||
{"name": "casino_battle", "slot": "A14", "nickname": "aCCW"},
|
|
||||||
{"name": "sand_battle", "slot": "A15", "nickname": "aTD"},
|
|
||||||
|
|
||||||
# retro arena
|
OriginalTrack(name="old_desert_ds", slot="T71", nickname="dDH"),
|
||||||
{"name": "old_battle4_sfc", "slot": "A21", "nickname": "asBC4"},
|
OriginalTrack(name="old_koopa_gba", slot="T72", nickname="gBC3"),
|
||||||
{"name": "old_battle3_gba", "slot": "A22", "nickname": "agBC3"},
|
OriginalTrack(name="old_donkey_64", slot="T73", nickname="nDKJP"),
|
||||||
{"name": "old_matenro_64", "slot": "A23", "nickname": "anSS"},
|
OriginalTrack(name="old_mario_gc", slot="T74", nickname="gMC"),
|
||||||
{"name": "old_CookieLand_gc", "slot": "A24", "nickname": "agCL"},
|
|
||||||
{"name": "old_House_ds", "slot": "A25", "nickname": "adTH"},
|
|
||||||
]
|
|
||||||
|
|
||||||
__slots__ = ("name", "slot", "nickname")
|
OriginalTrack(name="old_mario_sfc", slot="T81", nickname="sMC3"),
|
||||||
|
OriginalTrack(name="old_garden_ds", slot="T82", nickname="dPG"),
|
||||||
|
OriginalTrack(name="old_donkey_gc", slot="T83", nickname="gDKM"),
|
||||||
|
OriginalTrack(name="old_koopa_64", slot="T84", nickname="nBC"),
|
||||||
|
|
||||||
def __init__(self, track_data: any, track_key: str = "slot"):
|
# wii arena
|
||||||
colors = list(filter(lambda color: color[track_key] == track_data, self.all_original_tracks))
|
OriginalTrack(name="block_battle", slot="A11", nickname="aBP"),
|
||||||
if len(colors) == 0: raise OriginalTrackNotFound(track_data)
|
OriginalTrack(name="venice_battle", slot="A12", nickname="aDP"),
|
||||||
|
OriginalTrack(name="skate_battle", slot="A13", nickname="aFS"),
|
||||||
|
OriginalTrack(name="casino_battle", slot="A14", nickname="aCCW"),
|
||||||
|
OriginalTrack(name="sand_battle", slot="A15", nickname="aTD"),
|
||||||
|
|
||||||
|
# retro arena
|
||||||
|
OriginalTrack(name="old_battle4_sfc", slot="A21", nickname="asBC4"),
|
||||||
|
OriginalTrack(name="old_battle3_gba", slot="A22", nickname="agBC3"),
|
||||||
|
OriginalTrack(name="old_matenro_64", slot="A23", nickname="anSS"),
|
||||||
|
OriginalTrack(name="old_CookieLand_gc", slot="A24", nickname="agCL"),
|
||||||
|
OriginalTrack(name="old_House_ds", slot="A25", nickname="adTH"),
|
||||||
|
]
|
||||||
|
|
||||||
|
|
||||||
|
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)
|
||||||
|
|
||||||
for key, value in colors[0].items():
|
|
||||||
setattr(self, key, value)
|
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
from source.mkw.OriginalTrack import OriginalTrack
|
from source.mkw import OriginalTrack
|
||||||
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 data: data["name"], OriginalTrack.all_original_tracks))
|
original_tracks_texts: list[str] = list(map(lambda og_track: og_track.name, OriginalTrack.all_original_tracks))
|
||||||
|
|
||||||
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)
|
||||||
|
|
Loading…
Reference in a new issue