add dan transition noies and fix json loading

This commit is contained in:
Anthony Samms
2025-11-01 13:09:20 -04:00
parent 157b79440f
commit 4656845551
2 changed files with 12 additions and 4 deletions

View File

@@ -888,7 +888,7 @@ class DanCourse(FileSystemItem):
super().__init__(path, name) super().__init__(path, name)
if name != "dan.json": if name != "dan.json":
self.logging.error(f"Invalid dan course file: {path}") self.logging.error(f"Invalid dan course file: {path}")
with open(path, 'r') as f: with open(path, 'r', encoding='utf-8') as f:
data = json.load(f) data = json.load(f)
self.title = data["title"] self.title = data["title"]
self.color = data["color"] self.color = data["color"]

View File

@@ -12,7 +12,7 @@ from libs.tja import TJAParser
from libs.transition import Transition from libs.transition import Transition
from libs.utils import OutlinedText, get_current_ms from libs.utils import OutlinedText, get_current_ms
from libs.texture import tex from libs.texture import tex
from scenes.game import GameScreen, ResultTransition, SongInfo from scenes.game import ClearAnimation, FCAnimation, FailAnimation, GameScreen, ResultTransition, SongInfo
logger = logging.getLogger(__name__) logger = logging.getLogger(__name__)
@@ -100,6 +100,7 @@ class DanGameScreen(GameScreen):
self.player_1.tja = self.tja self.player_1.tja = self.tja
self.player_1.reset_chart() self.player_1.reset_chart()
self.dan_transition.start() self.dan_transition.start()
self.song_info = SongInfo(self.tja.metadata.title.get(global_data.config["general"]["language"], "en"), genre_index)
self.start_ms = (get_current_ms() - self.tja.metadata.offset*1000) self.start_ms = (get_current_ms() - self.tja.metadata.offset*1000)
def _calculate_dan_info(self): def _calculate_dan_info(self):
@@ -170,6 +171,13 @@ class DanGameScreen(GameScreen):
audio.stop_music_stream(self.song_music) audio.stop_music_stream(self.song_music)
return self.on_screen_end('DAN_SELECT') return self.on_screen_end('DAN_SELECT')
@override
def spawn_ending_anims(self):
if self.player_1.gauge.is_clear and not any(self.exam_failed):
self.player_1.ending_anim = ClearAnimation(self.player_1.is_2p)
elif not self.player_1.gauge.is_clear:
self.player_1.ending_anim = FailAnimation(self.player_1.is_2p)
@override @override
def update(self): def update(self):
super(GameScreen, self).update() super(GameScreen, self).update()
@@ -190,7 +198,7 @@ class DanGameScreen(GameScreen):
self.dan_info_cache = self._calculate_dan_info() self.dan_info_cache = self._calculate_dan_info()
self._check_exam_failures() self._check_exam_failures()
if self.result_transition.is_finished and not audio.is_sound_playing('result_transition'): if self.result_transition.is_finished and not audio.is_sound_playing('dan_transition'):
logger.info("Result transition finished, moving to RESULT screen") logger.info("Result transition finished, moving to RESULT screen")
return self.on_screen_end('RESULT') return self.on_screen_end('RESULT')
elif self.current_ms >= self.player_1.end_time + 1000: elif self.current_ms >= self.player_1.end_time + 1000:
@@ -203,7 +211,7 @@ class DanGameScreen(GameScreen):
if current_time >= self.end_ms + 8533.34: if current_time >= self.end_ms + 8533.34:
if not self.result_transition.is_started: if not self.result_transition.is_started:
self.result_transition.start() self.result_transition.start()
audio.play_sound('result_transition', 'voice') audio.play_sound('dan_transition', 'voice')
logger.info("Result transition started and voice played") logger.info("Result transition started and voice played")
else: else:
self.end_ms = current_time self.end_ms = current_time