implemented track_new_if to select track that should be selected by "Random: New tracks"

This commit is contained in:
Faraphel 2022-07-27 20:32:25 +02:00
parent 677fb35427
commit ae5e9976e5
2 changed files with 16 additions and 12 deletions

View file

@ -28,20 +28,21 @@ class ModConfig:
__slots__ = ("name", "path", "nickname", "variant", "tags_prefix", "tags_suffix",
"default_track", "_tracks", "version", "original_track_prefix", "swap_original_order",
"keep_original_track", "enable_random_cup", "tags_cups", "track_file_template",
"multiplayer_disable_if", "macros", "messages")
"multiplayer_disable_if", "track_new_if", "macros", "messages", "settings")
def __init__(self, path: Path | str, name: str, nickname: str = None, version: str = None, variant: str = None,
tags_prefix: dict[Tag, str] = None, tags_suffix: dict[Tag, str] = None,
tags_cups: list[Tag] = None,
default_track: "Track | TrackGroup" = 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,
tags_cups: list[Tag] = None, default_track: "Track | TrackGroup" = 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,
messages: dict[str, dict[str, str]] = None):
track_new_if: str = None, messages: dict[str, dict[str, str]] = None,
settings: dict[str, dict[str, str]] = None):
self.path = Path(path)
self.macros: dict = macros if macros is not None else {}
self.messages: dict = messages if messages is not None else {}
self.settings: dict = settings if settings is not None else {}
self.name: str = name
self.nickname: str = nickname if nickname is not None else name
@ -57,6 +58,7 @@ class ModConfig:
self.track_file_template: str = track_file_template \
if track_file_template is not None else "{{ getattr(track, 'sha1', '_') }}"
self.multiplayer_disable_if: str = multiplayer_disable_if if multiplayer_disable_if is not None else "False"
self.track_new_if: str = track_new_if if track_new_if is not None else "True"
self.original_track_prefix: bool = original_track_prefix if original_track_prefix is not None else True
self.swap_original_order: bool = swap_original_order if swap_original_order is not None else True

View file

@ -92,11 +92,13 @@ class Track:
"""
return self.get_tag_template(mod_config, mod_config.tags_suffix, default)
def is_highlight(self, mod_config: "ModConfig", default: any = None) -> bool:
...
def is_new(self, mod_config: "ModConfig", default: any = None) -> bool:
...
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.track_new_if, multiple=False, env={"track": self}) == "True"
def get_ctfile(self, mod_config: "ModConfig", template: str, hidden: bool = False) -> str:
"""
@ -110,7 +112,7 @@ class Track:
return (
f'{"H" if hidden else "T"} {self.music}; ' # track type
f'{self.special}; {(0x04 if hidden else 0) | (0x01 if self.is_new(mod_config, False) else 0):#04x}; ' # lecode flags
f'{self.special}; {(0x04 if hidden else 0) | (0x01 if self.is_new(mod_config) else 0):#04x}; ' # lecode flags
f'{file_name}; ' # filename
f'{name}; ' # name of the track in the menu
f'{file_name}\n' # unique identifier for each track