mirror of
https://github.com/Faraphel/Atlas-Install.git
synced 2025-07-05 04:08:21 +02:00
fully implemented the AbstractTrack and DefaultTrack, removing the necessity of default_track in mod_config.json
This commit is contained in:
parent
99287bbd56
commit
f13b18aa57
5 changed files with 27 additions and 18 deletions
|
@ -9,7 +9,7 @@ from source.mkw import Tag
|
|||
from source.mkw.Cup import Cup
|
||||
from source.mkw.MKWColor import bmg_color_text, bmg_color_raw
|
||||
from source.mkw.ModSettings import AbstractModSettings
|
||||
from source.mkw.Track.CustomTrack import CustomTrack
|
||||
from source.mkw.Track import CustomTrack, DefaultTrack
|
||||
import json
|
||||
|
||||
from source.mkw.OriginalTrack import OriginalTrack
|
||||
|
@ -68,14 +68,14 @@ class ModConfig:
|
|||
Representation of a mod
|
||||
"""
|
||||
|
||||
__slots__ = ("name", "path", "nickname", "variant", "default_track", "_tracks", "version",
|
||||
__slots__ = ("name", "path", "nickname", "variant", "_tracks", "version",
|
||||
"original_track_prefix", "swap_original_order", "keep_original_track",
|
||||
"enable_random_cup", "tags_cups", "track_file_template",
|
||||
"multiplayer_disable_if", "macros", "messages", "global_settings",
|
||||
"specific_settings", "lpar_template", "tags_template")
|
||||
|
||||
def __init__(self, path: Path | str, name: str, nickname: str = None, version: str = None, variant: str = None,
|
||||
tags_cups: list[Tag] = None, default_track: "Track | TrackGroup" = None,
|
||||
tags_cups: list[Tag] = None,
|
||||
tracks: list["Track | TrackGroup"] = None, original_track_prefix: bool = None,
|
||||
swap_original_order: bool = None, keep_original_track: bool = None, enable_random_cup: bool = None,
|
||||
track_file_template: str = None, multiplayer_disable_if: str = None, macros: dict[str, str] = None,
|
||||
|
@ -269,7 +269,7 @@ class ModConfig:
|
|||
|
||||
# if there is still tracks in the buffer, create a cup with them and fill with default>
|
||||
if len(track_buffer) > 0:
|
||||
track_buffer.extend([self.default_track] * (4 - len(track_buffer)))
|
||||
track_buffer.extend([DefaultTrack()] * (4 - len(track_buffer)))
|
||||
yield Cup(tracks=track_buffer, cup_name=f"{current_tag_name}/{current_tag_count + 1}")
|
||||
|
||||
def get_unordered_cups(self) -> Generator["Cup", None, None]:
|
||||
|
@ -291,7 +291,7 @@ class ModConfig:
|
|||
|
||||
# if there is still tracks in the buffer, create a cup with them and fill with default
|
||||
if len(track_buffer) > 0:
|
||||
track_buffer.extend([self.default_track] * (4 - len(track_buffer)))
|
||||
track_buffer.extend([DefaultTrack()] * (4 - len(track_buffer)))
|
||||
yield Cup(tracks=track_buffer)
|
||||
|
||||
def get_cups(self) -> Generator["Cup", None, None]:
|
||||
|
|
|
@ -28,7 +28,7 @@ class AbstractTrack(ABC):
|
|||
setattr(self, key, value)
|
||||
|
||||
def __repr__(self):
|
||||
return f"<{self.__class__.__name__} {id(self)}>"
|
||||
return f"<{self.__class__.__name__} {hex(id(self))}>"
|
||||
|
||||
def get_tracks(self) -> Generator["AbstractTrack", None, None]:
|
||||
"""
|
||||
|
@ -46,10 +46,11 @@ class AbstractTrack(ABC):
|
|||
:param default: default value if no tag template is found
|
||||
:return: formatted representation of the tag
|
||||
"""
|
||||
for tag in filter(lambda tag: tag in mod_config.tags_template[template_name], self.tags):
|
||||
return mod_config.multiple_safe_eval(mod_config.tags_template[template_name][tag], env={"tag": tag})
|
||||
for tag in filter(lambda tag: tag in mod_config.tags_templates[template_name], self.tags):
|
||||
return mod_config.multiple_safe_eval(mod_config.tags_templates[template_name][tag], env={"tag": tag})
|
||||
return default
|
||||
|
||||
@abstractmethod
|
||||
def repr_format(self, mod_config: "ModConfig", template: str) -> str:
|
||||
"""
|
||||
return the representation of the track from the format
|
||||
|
@ -57,7 +58,7 @@ class AbstractTrack(ABC):
|
|||
:param mod_config: configuration of the mod
|
||||
:return: formatted representation of the track
|
||||
"""
|
||||
return mod_config.multiple_safe_eval(template, env={"track": self, "get_tag_template": self.get_tag_template})
|
||||
...
|
||||
|
||||
@abstractmethod
|
||||
def get_filename(self, mod_config: "ModConfig") -> str:
|
||||
|
|
|
@ -7,7 +7,6 @@ class CustomTrack(AbstractTrack):
|
|||
"""
|
||||
Represent a custom track
|
||||
"""
|
||||
|
||||
def __repr__(self):
|
||||
return f"<{self.__class__.__name__} name={getattr(self, 'name', '/')} tags={getattr(self, 'tags', '/')}>"
|
||||
|
||||
|
@ -23,13 +22,17 @@ class CustomTrack(AbstractTrack):
|
|||
return TrackGroup.from_dict(track_dict)
|
||||
return cls(**track_dict)
|
||||
|
||||
def repr_format(self, mod_config: "ModConfig", template: str) -> str:
|
||||
return mod_config.multiple_safe_eval(
|
||||
template,
|
||||
env={
|
||||
"track": self,
|
||||
"get_tag_template": lambda *args, **kwargs: self.get_tag_template(mod_config, *args, **kwargs)
|
||||
}
|
||||
)
|
||||
|
||||
def get_filename(self, mod_config: "ModConfig") -> str:
|
||||
return self.repr_format(mod_config=mod_config, template=mod_config.track_file_template)
|
||||
|
||||
def is_new(self, mod_config: "ModConfig") -> bool:
|
||||
"""
|
||||
Return if the track should be considered as new for random selection
|
||||
:param mod_config: mod configuration
|
||||
:return: is the track new
|
||||
"""
|
||||
return mod_config.safe_eval(mod_config.global_settings["replace_random_new"].value, env={"track": self}) is True
|
||||
|
|
|
@ -2,8 +2,11 @@ from source.mkw.Track.AbstractTrack import AbstractTrack
|
|||
|
||||
|
||||
class DefaultTrack(AbstractTrack):
|
||||
def repr_format(self, mod_config: "ModConfig", template: str) -> str:
|
||||
return " " # the name is always a blank space. Using nothing result in the filename being used instead
|
||||
|
||||
def get_filename(self, mod_config: "ModConfig") -> str:
|
||||
return "beginner_course"
|
||||
return "beginner_course" # by default, use the T11 track, beginner_course
|
||||
|
||||
def is_new(self, mod_config: "ModConfig") -> bool:
|
||||
return False
|
||||
return False # default track are never selected for random cup
|
||||
|
|
|
@ -1 +1,3 @@
|
|||
from source.mkw.Track import CustomTrack, DefaultTrack, AbstractTrack
|
||||
from source.mkw.Track.CustomTrack import CustomTrack
|
||||
from source.mkw.Track.DefaultTrack import DefaultTrack
|
||||
from source.mkw.Track.AbstractTrack import AbstractTrack
|
||||
|
|
Loading…
Reference in a new issue