more minor bug fixes

This commit is contained in:
Yonokid
2025-08-16 11:11:14 -04:00
parent 1d235e1571
commit e3d24f00f9
5 changed files with 49 additions and 53 deletions

View File

@@ -67,7 +67,7 @@ def build_song_hashes(output_dir=Path("cache")):
current_hash = path_to_hash.get(tja_path_str) current_hash = path_to_hash.get(tja_path_str)
if current_hash is not None: if current_hash is not None:
global_data.song_paths[tja_path] = current_hash global_data.song_paths[tja_path] = current_hash
continue continue
current_hash = path_to_hash.get(tja_path_str) current_hash = path_to_hash.get(tja_path_str)
if current_hash is None: if current_hash is None:
files_to_process.append(tja_path) files_to_process.append(tja_path)
@@ -77,6 +77,7 @@ def build_song_hashes(output_dir=Path("cache")):
del song_hashes[current_hash] del song_hashes[current_hash]
del path_to_hash[tja_path_str] del path_to_hash[tja_path_str]
# Prepare database connection for updates # Prepare database connection for updates
db_path = Path("scores.db") db_path = Path("scores.db")
db_updates = [] # Store updates to batch process later db_updates = [] # Store updates to batch process later

View File

@@ -397,9 +397,9 @@ class TJAParser:
notes_minus_2 = play_note_list[-2] notes_minus_2 = play_note_list[-2]
consecutive_ones = ( consecutive_ones = (
notes_minus_4.type == '1' and notes_minus_4.type == 1 and
notes_minus_3.type == '1' and notes_minus_3.type == 1 and
notes_minus_2.type == '1' notes_minus_2.type == 1
) )
if consecutive_ones: 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) spacing_after = play_note_list[-1].hit_ms - play_note_list[-2].hit_ms >= (ms_per_measure / 8)
if spacing_before and spacing_after: 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: else:
play_note_list[-3].moji = se_notes[play_note_list[-3].moji][2] play_note_list[-3].moji = se_notes[play_note_list[-3].moji][2]

View File

@@ -1,14 +1,6 @@
import pyray as ray import pyray as ray
from libs.texture import tex from libs.utils import global_data, session_data
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
class DevScreen: class DevScreen:
@@ -20,9 +12,10 @@ class DevScreen:
def on_screen_start(self): def on_screen_start(self):
if not self.screen_init: if not self.screen_init:
self.screen_init = True self.screen_init = True
tex.load_screen_textures('game') session_data.result_score = 961000
self.kusudama = None session_data.result_good = 100
self.count = 0 session_data.result_max_combo = 20
session_data.result_total_drumroll = 40
def on_screen_end(self, next_screen: str): def on_screen_end(self, next_screen: str):
self.screen_init = False self.screen_init = False
@@ -30,25 +23,12 @@ class DevScreen:
def update(self): def update(self):
self.on_screen_start() 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): if ray.is_key_pressed(ray.KeyboardKey.KEY_ENTER):
return self.on_screen_end('RESULT') return self.on_screen_end('RESULT')
def draw(self): def draw(self):
if self.kusudama is not None: pass
self.kusudama.draw()
def draw_3d(self): def draw_3d(self):
pass pass

View File

@@ -55,18 +55,18 @@ class ResultScreen:
self.state = None self.state = None
self.high_score_indicator = None self.high_score_indicator = None
self.score_animator = ScoreAnimator(session_data.result_score) self.score_animator = ScoreAnimator(session_data.result_score)
self.score = -1 self.score = ''
self.good = -1 self.good = ''
self.ok = -1 self.ok = ''
self.bad = -1 self.bad = ''
self.max_combo = -1 self.max_combo = ''
self.total_drumroll = -1 self.total_drumroll = ''
self.update_list = [['score', session_data.result_score], self.update_list = [['score', session_data.result_score],
['good', session_data.result_good], ['good', session_data.result_good],
['ok', session_data.result_ok], ['ok', session_data.result_ok],
['bad', session_data.result_bad], ['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.update_index = 0
self.is_skipped = False self.is_skipped = False
self.start_ms = get_current_ms() self.start_ms = get_current_ms()
@@ -163,27 +163,27 @@ class ResultScreen:
self.crown.update(get_current_ms()) self.crown.update(get_current_ms())
def draw_score_info(self): def draw_score_info(self):
if self.good > -1: if self.good:
for i in range(len(str(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) 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))): 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) 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))): 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) 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))): 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) tex.draw_texture('score', 'judge_num', frame=int(str(self.max_combo)[::-1][i]), x=1217-(i*24), y=186)
if self.total_drumroll > -1: if self.total_drumroll:
for i in range(len(str(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): def draw_total_score(self):
if not self.fade_in.is_finished: if not self.fade_in.is_finished:
return return
tex.draw_texture('score', 'score_shinuchi') tex.draw_texture('score', 'score_shinuchi')
if self.score > -1: if self.score:
for i in range(len(str(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])) 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.digit_index = len(self.target_score) - 1
self.is_finished = False self.is_finished = False
def next_score(self): def next_score(self) -> str:
if self.digit_index == -1: if self.digit_index == -1:
self.is_finished = True 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] curr_digit, counter = self.current_score_list[self.digit_index]
if counter < 9: if counter < 9:
self.current_score_list[self.digit_index][1] += 1 self.current_score_list[self.digit_index][1] += 1
@@ -387,7 +387,13 @@ class ScoreAnimator:
else: else:
self.current_score_list[self.digit_index][0] = int(self.target_score[self.digit_index]) self.current_score_list[self.digit_index][0] = int(self.target_score[self.digit_index])
self.digit_index -= 1 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: class HighScoreIndicator:
def __init__(self, old_score: int, new_score: int): def __init__(self, old_score: int, new_score: int):

View File

@@ -149,6 +149,9 @@ class SongSelectScreen:
self.state = State.SONG_SELECTED self.state = State.SONG_SELECTED
if 4 not in selected_song.tja.metadata.course_data: if 4 not in selected_song.tja.metadata.course_data:
self.is_ura = False 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) audio.play_sound(self.sound_don)
self.move_away.start() self.move_away.start()
self.diff_fade_out.start() self.diff_fade_out.start()
@@ -259,7 +262,10 @@ class SongSelectScreen:
if self.is_ura and self.selected_difficulty == 4: if self.is_ura and self.selected_difficulty == 4:
self.diff_selector_move_1.start() self.diff_selector_move_1.start()
self.prev_diff = self.selected_difficulty 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: elif self.selected_difficulty == -1 or self.selected_difficulty == -2:
self.diff_selector_move_2.start() self.diff_selector_move_2.start()
self.prev_diff = self.selected_difficulty self.prev_diff = self.selected_difficulty
@@ -287,7 +293,7 @@ class SongSelectScreen:
self.selected_difficulty = 4 self.selected_difficulty = 4
self.diff_selector_move_1.start() 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 self.ura_toggle = (self.ura_toggle + 1) % 10
if self.ura_toggle == 0: if self.ura_toggle == 0:
self._toggle_ura_mode() self._toggle_ura_mode()
@@ -389,7 +395,7 @@ class SongSelectScreen:
fade = 0.5 if self.neiro_selector is not None else 1.0 fade = 0.5 if self.neiro_selector is not None else 1.0
direction = 1 if self.diff_select_move_right else -1 direction = 1 if self.diff_select_move_right else -1
if self.selected_difficulty <= -1 or self.prev_diff == -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: 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_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)) 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) temp_items.append(item)
content_items = random.sample(temp_items, 10) content_items = random.sample(temp_items, 10)
if content_items == []:
self.go_back()
return
i = 1 i = 1
for item in content_items: for item in content_items:
if isinstance(item, SongFile): if isinstance(item, SongFile):