From e3d24f00f9dbeca22e95b8667f975c51478accdf Mon Sep 17 00:00:00 2001 From: Yonokid <37304577+Yonokid@users.noreply.github.com> Date: Sat, 16 Aug 2025 11:11:14 -0400 Subject: [PATCH] more minor bug fixes --- libs/song_hash.py | 3 ++- libs/tja.py | 8 ++++---- scenes/devtest.py | 32 ++++++------------------------- scenes/result.py | 44 ++++++++++++++++++++++++------------------- scenes/song_select.py | 15 ++++++++++++--- 5 files changed, 49 insertions(+), 53 deletions(-) diff --git a/libs/song_hash.py b/libs/song_hash.py index 5d14856..13cfb75 100644 --- a/libs/song_hash.py +++ b/libs/song_hash.py @@ -67,7 +67,7 @@ def build_song_hashes(output_dir=Path("cache")): current_hash = path_to_hash.get(tja_path_str) if current_hash is not None: global_data.song_paths[tja_path] = current_hash - continue + continue current_hash = path_to_hash.get(tja_path_str) if current_hash is None: files_to_process.append(tja_path) @@ -77,6 +77,7 @@ def build_song_hashes(output_dir=Path("cache")): del song_hashes[current_hash] del path_to_hash[tja_path_str] + # Prepare database connection for updates db_path = Path("scores.db") db_updates = [] # Store updates to batch process later diff --git a/libs/tja.py b/libs/tja.py index 6f4b149..55856cf 100644 --- a/libs/tja.py +++ b/libs/tja.py @@ -397,9 +397,9 @@ class TJAParser: notes_minus_2 = play_note_list[-2] consecutive_ones = ( - notes_minus_4.type == '1' and - notes_minus_3.type == '1' and - notes_minus_2.type == '1' + notes_minus_4.type == 1 and + notes_minus_3.type == 1 and + notes_minus_2.type == 1 ) if consecutive_ones: @@ -414,7 +414,7 @@ class TJAParser: spacing_after = play_note_list[-1].hit_ms - play_note_list[-2].hit_ms >= (ms_per_measure / 8) if spacing_before and spacing_after: - play_note_list[-3].moji = se_notes[play_note_list[-3].moji][2] + play_note_list[-3].moji = se_notes[1][2] else: play_note_list[-3].moji = se_notes[play_note_list[-3].moji][2] diff --git a/scenes/devtest.py b/scenes/devtest.py index 11fc567..a947e34 100644 --- a/scenes/devtest.py +++ b/scenes/devtest.py @@ -1,14 +1,6 @@ import pyray as ray -from libs.texture import tex -from libs.utils import ( - get_current_ms, - is_l_don_pressed, - is_l_kat_pressed, - is_r_don_pressed, - is_r_kat_pressed, -) -from scenes.game import KusudamaAnimation +from libs.utils import global_data, session_data class DevScreen: @@ -20,9 +12,10 @@ class DevScreen: def on_screen_start(self): if not self.screen_init: self.screen_init = True - tex.load_screen_textures('game') - self.kusudama = None - self.count = 0 + session_data.result_score = 961000 + session_data.result_good = 100 + session_data.result_max_combo = 20 + session_data.result_total_drumroll = 40 def on_screen_end(self, next_screen: str): self.screen_init = False @@ -30,25 +23,12 @@ class DevScreen: def update(self): self.on_screen_start() - if self.kusudama is not None: - self.kusudama.update(get_current_ms(), self.count == 100) - if self.kusudama.is_finished: - self.kusudama = None - if is_l_kat_pressed() or is_r_kat_pressed(): - self.kusudama = KusudamaAnimation(100) - self.count = 0 - - if is_l_don_pressed() or is_r_don_pressed(): - if self.kusudama is not None: - self.count += 1 - self.kusudama.update_count(self.count) if ray.is_key_pressed(ray.KeyboardKey.KEY_ENTER): return self.on_screen_end('RESULT') def draw(self): - if self.kusudama is not None: - self.kusudama.draw() + pass def draw_3d(self): pass diff --git a/scenes/result.py b/scenes/result.py index 2272d9b..9e122ef 100644 --- a/scenes/result.py +++ b/scenes/result.py @@ -55,18 +55,18 @@ class ResultScreen: self.state = None self.high_score_indicator = None self.score_animator = ScoreAnimator(session_data.result_score) - self.score = -1 - self.good = -1 - self.ok = -1 - self.bad = -1 - self.max_combo = -1 - self.total_drumroll = -1 + self.score = '' + self.good = '' + self.ok = '' + self.bad = '' + self.max_combo = '' + self.total_drumroll = '' self.update_list = [['score', session_data.result_score], ['good', session_data.result_good], ['ok', session_data.result_ok], ['bad', session_data.result_bad], - ['total_drumroll', session_data.result_total_drumroll], - ['max_combo', session_data.result_max_combo]] + ['max_combo', session_data.result_max_combo], + ['total_drumroll', session_data.result_total_drumroll]] self.update_index = 0 self.is_skipped = False self.start_ms = get_current_ms() @@ -163,27 +163,27 @@ class ResultScreen: self.crown.update(get_current_ms()) def draw_score_info(self): - if self.good > -1: + if self.good: for i in range(len(str(self.good))): tex.draw_texture('score', 'judge_num', frame=int(str(self.good)[::-1][i]), x=943-(i*24), y=186) - if self.ok > -1: + if self.ok: for i in range(len(str(self.ok))): tex.draw_texture('score', 'judge_num', frame=int(str(self.ok)[::-1][i]), x=943-(i*24), y=227) - if self.bad > -1: + if self.bad: for i in range(len(str(self.bad))): tex.draw_texture('score', 'judge_num', frame=int(str(self.bad)[::-1][i]), x=943-(i*24), y=267) - if self.max_combo > -1: + if self.max_combo: for i in range(len(str(self.max_combo))): - tex.draw_texture('score', 'judge_num', frame=int(str(self.max_combo)[::-1][i]), x=1217-(i*24), y=227) - if self.total_drumroll > -1: + tex.draw_texture('score', 'judge_num', frame=int(str(self.max_combo)[::-1][i]), x=1217-(i*24), y=186) + if self.total_drumroll: for i in range(len(str(self.total_drumroll))): - tex.draw_texture('score', 'judge_num', frame=int(str(self.total_drumroll)[::-1][i]), x=1217-(i*24), y=186) + tex.draw_texture('score', 'judge_num', frame=int(str(self.total_drumroll)[::-1][i]), x=1217-(i*24), y=227) def draw_total_score(self): if not self.fade_in.is_finished: return tex.draw_texture('score', 'score_shinuchi') - if self.score > -1: + if self.score: for i in range(len(str(self.score))): tex.draw_texture('score', 'score_num', x=-(i*21), frame=int(str(self.score)[::-1][i])) @@ -376,10 +376,10 @@ class ScoreAnimator: self.digit_index = len(self.target_score) - 1 self.is_finished = False - def next_score(self): + def next_score(self) -> str: if self.digit_index == -1: self.is_finished = True - return int(''.join([str(item[0]) for item in self.current_score_list])) + return str(int(''.join([str(item[0]) for item in self.current_score_list]))) curr_digit, counter = self.current_score_list[self.digit_index] if counter < 9: self.current_score_list[self.digit_index][1] += 1 @@ -387,7 +387,13 @@ class ScoreAnimator: else: self.current_score_list[self.digit_index][0] = int(self.target_score[self.digit_index]) self.digit_index -= 1 - return int(''.join([str(item[0]) for item in self.current_score_list])) + ret_val = ''.join([str(item[0]) for item in self.current_score_list]) + if int(ret_val) == 0: + if not (len(self.target_score) - self.digit_index) > (len(self.target_score)): + return '0' * (len(self.target_score) - self.digit_index) + else: + return '0' + return str(int(ret_val)) class HighScoreIndicator: def __init__(self, old_score: int, new_score: int): diff --git a/scenes/song_select.py b/scenes/song_select.py index 11690fe..0bd3271 100644 --- a/scenes/song_select.py +++ b/scenes/song_select.py @@ -149,6 +149,9 @@ class SongSelectScreen: self.state = State.SONG_SELECTED if 4 not in selected_song.tja.metadata.course_data: self.is_ura = False + elif (4 in selected_song.tja.metadata.course_data and + 3 not in selected_song.tja.metadata.course_data): + self.is_ura = True audio.play_sound(self.sound_don) self.move_away.start() self.diff_fade_out.start() @@ -259,7 +262,10 @@ class SongSelectScreen: if self.is_ura and self.selected_difficulty == 4: self.diff_selector_move_1.start() self.prev_diff = self.selected_difficulty - self.selected_difficulty = 2 + if len(diffs) == 1: + self.selected_difficulty = -1 + else: + self.selected_difficulty = diffs[-2] elif self.selected_difficulty == -1 or self.selected_difficulty == -2: self.diff_selector_move_2.start() self.prev_diff = self.selected_difficulty @@ -287,7 +293,7 @@ class SongSelectScreen: self.selected_difficulty = 4 self.diff_selector_move_1.start() - if (self.selected_difficulty in [3, 4] and 4 in diffs): + if (self.selected_difficulty in [3, 4] and 4 in diffs and 3 in diffs): self.ura_toggle = (self.ura_toggle + 1) % 10 if self.ura_toggle == 0: self._toggle_ura_mode() @@ -389,7 +395,7 @@ class SongSelectScreen: fade = 0.5 if self.neiro_selector is not None else 1.0 direction = 1 if self.diff_select_move_right else -1 if self.selected_difficulty <= -1 or self.prev_diff == -1: - if self.prev_diff == -1 and self.selected_difficulty == 0: + if self.prev_diff == -1 and self.selected_difficulty >= 0: if not self.diff_selector_move_2.is_finished: tex.draw_texture('diff_select', f'{str(global_data.player_num)}p_balloon', x=((self.prev_diff+3) * 70) - 220 + (self.diff_selector_move_2.attribute * direction), fade=fade) tex.draw_texture('diff_select', f'{str(global_data.player_num)}p_outline_back', x=((self.prev_diff+3) * 70) + (self.diff_selector_move_2.attribute * direction)) @@ -1512,6 +1518,9 @@ class FileNavigator: temp_items.append(item) content_items = random.sample(temp_items, 10) + if content_items == []: + self.go_back() + return i = 1 for item in content_items: if isinstance(item, SongFile):