added ctfile creation for CT_Config, Cup, Track

This commit is contained in:
raphael60650 2021-07-16 11:29:44 +02:00
parent af67bffafe
commit 42a96db471
3 changed files with 67 additions and 18 deletions

View file

@ -37,7 +37,7 @@ class CT_Config:
def add_ordered_cup(self, cup: Cup): def add_ordered_cup(self, cup: Cup):
self.ordered_cups.append(cup) self.ordered_cups.append(cup)
for track in cup.get_tracks(): for track in cup.tracks:
self.all_version.add(track.since_version) self.all_version.add(track.since_version)
def add_unordered_track(self, track: Track): def add_unordered_track(self, track: Track):
@ -63,8 +63,29 @@ class CT_Config:
def get_total_tracks_count(self): def get_total_tracks_count(self):
return (len(self.ordered_cups) * 4) + len(self.unordered_tracks) return (len(self.ordered_cups) * 4) + len(self.unordered_tracks)
def create_ctfile(self): def create_ctfile(self, directory="./file/"):
pass with open(directory+"CTFILE.txt", "w", encoding="utf-8") as ctfile, \
open(directory+"RCTFILE.txt", "w", encoding="utf-8") as rctfile:
header = (
"#CT-CODE\n"
"[RACING-TRACK-LIST]\n"
"%LE-FLAGS=1\n"
"%WIIMM-CUP=1\n"
"N N$SWAP | N$F_WII\n\n")
ctfile.write(header); rctfile.write(header)
# generate cup for undefined track
unordered_cups = []
for i, track in enumerate(self.unordered_tracks):
if i % 4 == 0:
_actual_cup = Cup(name=f"TL{i // 4}")
unordered_cups.append(_actual_cup)
_actual_cup.tracks[i % 4] = track
# all cups
for cup in self.ordered_cups + unordered_cups:
ctfile.write(cup.get_ctfile_cup(race=False))
rctfile.write(cup.get_ctfile_cup(race=True))
def get_cticon(self): def get_cticon(self):
""" """
@ -84,4 +105,4 @@ class CT_Config:
cup_icon = get_cup_icon(i) cup_icon = get_cup_icon(i)
ct_icon.paste(cup_icon, (0, i * CT_ICON_WIDTH)) ct_icon.paste(cup_icon, (0, i * CT_ICON_WIDTH))
return ct_icon #ct_icon.save("./file/ct_icons.tpl.png") return ct_icon # ct_icon.save("./file/ct_icons.tpl.png")

View file

@ -4,7 +4,7 @@ from .patch_ct_icon import get_cup_icon
class Cup: class Cup:
def __init__(self, name: str, id: int, def __init__(self, name: str,
track1: Track = EMPTY_TRACK, track1: Track = EMPTY_TRACK,
track2: Track = EMPTY_TRACK, track2: Track = EMPTY_TRACK,
track3: Track = EMPTY_TRACK, track3: Track = EMPTY_TRACK,
@ -12,15 +12,22 @@ class Cup:
icon: Image = None): icon: Image = None):
self.name = name self.name = name
self.track1 = track1 self.tracks = [track1, track2, track3, track4]
self.track2 = track2 self.icon = icon
self.track3 = track3
self.track4 = track4
self.icon = icon if icon else create_cup_icon(id)
self.id = id # cup number
def get_ctfile_cup(self): def get_ctfile_cup(self, race=False):
pass """
:param race: is it a text used for Race_*.szs ?
:return: ctfile definition for the cup
"""
ctfile_cup = f'\nC "{self.name}"\n'
for track in self.tracks:
ctfile_cup += track.get_ctfile_track(race)
return ctfile_cup
def get_tracks(self): def get_icon(self, id: int):
return self.track1, self.track2, self.track3, self.track4 """
:param id: cup number
:return: icon of the cup
"""
return self.icon if self.icon else get_cup_icon(id)

View file

@ -1,5 +1,4 @@
from .definition import * from .definition import *
import subprocess
import source.wszst import source.wszst
@ -43,7 +42,7 @@ class Track:
if self.score: if self.score:
if 0 < self.score <= 3: if 0 < self.score <= 3:
star_text = "" * track["score"] + "" * (3 - track["score"]) star_text = "" * self.score + "" * (3 - self.score)
star_text = trackname_color[star_text] + " " star_text = trackname_color[star_text] + " "
if self.since_version == highlight_track_from_version: if self.since_version == highlight_track_from_version:
@ -67,7 +66,29 @@ class Track:
if source.wszst.sha1(self.file_wu8) == self.sha1: return 0 if source.wszst.sha1(self.file_wu8) == self.sha1: return 0
else: return -1 else: return -1
def get_ct_file_track(self): pass def get_ctfile_track(self, race=False):
"""
:param race: is it a text used for Race_*.szs ?
:return: ctfile definition for the track
"""
ctfile_text = (
f' T {self.music}; '
f'{self.special}; '
f'{"0x01" if self.new else "0x00"}; '
)
if not race:
ctfile_text += (
f'"{self.get_track_name()}"; ' # track path
f'"{self.get_track_formatted_name()}"; ' # track text shown ig
f'"-"\n') # sha1, useless for now.
else:
ctfile_text += (
f'"-"; ' # track path, not used in Race_*.szs, save a bit of space
f'"{self.get_track_formatted_name()}\\n{self.author}"; ' # only in race show author's name
f'"-"\n' # sha1, useless for now.
)
return ctfile_text
EMPTY_TRACK = Track("_") EMPTY_TRACK = Track("_")