mystery feature #50

This commit is contained in:
Anthony Samms
2025-11-10 11:31:37 -05:00
parent 244b66c0f3
commit 66b88ba480
7 changed files with 62 additions and 2 deletions

View File

@@ -24,6 +24,8 @@ from scenes.devtest import DevScreen
from scenes.entry import EntryScreen
from scenes.game import GameScreen
from scenes.dan.game_dan import DanGameScreen
from scenes.practice.game import PracticeGameScreen
from scenes.practice.song_select import PracticeSongSelectScreen
from scenes.two_player.game import TwoPlayerGameScreen
from scenes.two_player.result import TwoPlayerResultScreen
from scenes.loading import LoadScreen
@@ -50,6 +52,8 @@ class Screens:
DAN_SELECT = "DAN_SELECT"
GAME_DAN = "GAME_DAN"
DAN_RESULT = "DAN_RESULT"
PRACTICE_SELECT = "PRACTICE_SELECT"
GAME_PRACTICE = "GAME_PRACTICE"
SETTINGS = "SETTINGS"
DEV_MENU = "DEV_MENU"
LOADING = "LOADING"
@@ -160,6 +164,8 @@ def main():
load_screen = LoadScreen('loading')
game_screen = GameScreen('game')
game_screen_2p = TwoPlayerGameScreen('game')
game_screen_practice = PracticeGameScreen('game')
practice_select_screen = PracticeSongSelectScreen('song_select')
result_screen = ResultScreen('result')
result_screen_2p = TwoPlayerResultScreen('result')
settings_screen = SettingsScreen('settings')
@@ -173,8 +179,10 @@ def main():
Screens.TITLE: title_screen,
Screens.SONG_SELECT: song_select_screen,
Screens.SONG_SELECT_2P: song_select_screen_2p,
Screens.PRACTICE_SELECT: practice_select_screen,
Screens.GAME: game_screen,
Screens.GAME_2P: game_screen_2p,
Screens.GAME_PRACTICE: game_screen_practice,
Screens.RESULT: result_screen,
Screens.RESULT_2P: result_screen_2p,
Screens.SETTINGS: settings_screen,

View File

@@ -25,7 +25,8 @@ class Background:
"IMAS_CG": (libs.bg_collabs.imas.Background, 'background/collab/imas_cg', 3),
"IMAS_ML": (libs.bg_collabs.imas.Background, 'background/collab/imas_ml', 3),
"IMAS_SIDEM": (libs.bg_collabs.imas_sidem.Background, 'background/collab/imas_sidem', 3),
"DAN": (libs.bg_collabs.dan.Background, 'background/collab/dan', 1)
"DAN": (libs.bg_collabs.dan.Background, 'background/collab/dan', 1),
"PRACTICE": (libs.bg_collabs.practice.Background, 'background/collab/practice', 1)
}
def __init__(self, player_num: int, bpm: float, scene_preset: str = ''):

View File

@@ -5,3 +5,4 @@ from . import oshiri
from . import imas
from . import dan
from . import imas_sidem
from . import practice

View File

@@ -0,0 +1,17 @@
from libs.bg_objects.bg_normal import BGNormalBase
from libs.texture import TextureWrapper
from libs.bg_objects.don_bg import DonBG1
class Background:
def __init__(self, tex: TextureWrapper, player_num: int, bpm: float, path: str, max_dancers: int):
self.tex_wrapper = tex
self.max_dancers = max_dancers
self.don_bg = DonBG1(self.tex_wrapper, 0, 1, path)
self.bg_normal = BGNormalBase(self.tex_wrapper, 0, path)
self.bg_fever = None
self.footer = None
self.fever = None
self.dancer = None
self.renda = None
self.chibi = None

View File

@@ -438,8 +438,9 @@ class BoxManager:
def __init__(self):
self.box_titles: list[OutlinedText] = [
OutlinedText('演奏ゲーム', 50, ray.WHITE, outline_thickness=5, vertical=True),
OutlinedText('特訓モード', 50, ray.WHITE, outline_thickness=5, vertical=True),
OutlinedText('ゲーム設定', 50, ray.WHITE, outline_thickness=5, vertical=True)]
self.box_locations = ["SONG_SELECT", "SETTINGS"]
self.box_locations = ["SONG_SELECT", "PRACTICE_SELECT", "SETTINGS"]
self.num_boxes = len(self.box_titles)
self.boxes = [Box(self.box_titles[i], self.box_locations[i]) for i in range(len(self.box_titles))]
self.selected_box_index = 0

16
scenes/practice/game.py Normal file
View File

@@ -0,0 +1,16 @@
import logging
from pathlib import Path
from libs.background import Background
from scenes.game import GameScreen, JudgeCounter
logger = logging.getLogger(__name__)
class PracticeGameScreen(GameScreen):
def on_screen_start(self):
super().on_screen_start()
self.background = Background(1, self.bpm, scene_preset='PRACTICE')
def init_tja(self, song: Path):
super().init_tja(song)
self.player_1.judge_counter = JudgeCounter()

View File

@@ -0,0 +1,16 @@
import logging
from scenes.song_select import SongSelectScreen
logger = logging.getLogger(__name__)
class PracticeSongSelectScreen(SongSelectScreen):
def on_screen_start(self):
super().on_screen_start()
def update_players(self, current_time) -> str:
self.player_1.update(current_time)
if self.text_fade_out.is_finished:
self.player_1.selected_song = True
next_screen = "GAME_PRACTICE"
return next_screen