mirror of
https://github.com/Yonokid/PyTaiko.git
synced 2026-02-04 11:40:13 +01:00
more minor bug fixes
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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]
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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):
|
||||
|
||||
@@ -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):
|
||||
|
||||
Reference in New Issue
Block a user