player number enum

This commit is contained in:
Anthony Samms
2025-11-14 15:20:35 -05:00
parent d06e5276b6
commit aef634ef3d
24 changed files with 301 additions and 356 deletions

View File

@@ -1,6 +1,7 @@
import logging
import copy
from pathlib import Path
from libs.global_data import PlayerNum
from libs.tja import TJAParser
from libs.utils import get_current_ms
from libs.audio import audio
@@ -17,41 +18,41 @@ class TwoPlayerGameScreen(GameScreen):
scene_preset = self.tja.metadata.scene_preset
if self.background is not None:
self.background.unload()
self.background = Background(3, self.bpm, scene_preset=scene_preset)
self.result_transition = ResultTransition(3)
self.background = Background(PlayerNum.TWO_PLAYER, self.bpm, scene_preset=scene_preset)
self.result_transition = ResultTransition(PlayerNum.TWO_PLAYER)
def load_hitsounds(self):
"""Load the hit sounds"""
sounds_dir = Path("Sounds")
# Load hitsounds for 1P
if global_data.hit_sound[0] == -1:
if global_data.hit_sound[PlayerNum.P1] == -1:
audio.load_sound(Path('none.wav'), 'hitsound_don_1p')
audio.load_sound(Path('none.wav'), 'hitsound_kat_1p')
logger.info("Loaded default (none) hit sounds for 1P")
elif global_data.hit_sound[0] == 0:
audio.load_sound(sounds_dir / "hit_sounds" / str(global_data.hit_sound[0]) / "don.wav", 'hitsound_don_1p')
audio.load_sound(sounds_dir / "hit_sounds" / str(global_data.hit_sound[0]) / "ka.wav", 'hitsound_kat_1p')
elif global_data.hit_sound[PlayerNum.P1] == 0:
audio.load_sound(sounds_dir / "hit_sounds" / str(global_data.hit_sound[PlayerNum.P1]) / "don.wav", 'hitsound_don_1p')
audio.load_sound(sounds_dir / "hit_sounds" / str(global_data.hit_sound[PlayerNum.P1]) / "ka.wav", 'hitsound_kat_1p')
logger.info("Loaded wav hit sounds for 1P")
else:
audio.load_sound(sounds_dir / "hit_sounds" / str(global_data.hit_sound[0]) / "don.ogg", 'hitsound_don_1p')
audio.load_sound(sounds_dir / "hit_sounds" / str(global_data.hit_sound[0]) / "ka.ogg", 'hitsound_kat_1p')
audio.load_sound(sounds_dir / "hit_sounds" / str(global_data.hit_sound[PlayerNum.P1]) / "don.ogg", 'hitsound_don_1p')
audio.load_sound(sounds_dir / "hit_sounds" / str(global_data.hit_sound[PlayerNum.P1]) / "ka.ogg", 'hitsound_kat_1p')
logger.info("Loaded ogg hit sounds for 1P")
audio.set_sound_pan('hitsound_don_1p', 0.0)
audio.set_sound_pan('hitsound_kat_1p', 0.0)
# Load hitsounds for 2P
if global_data.hit_sound[1] == -1:
if global_data.hit_sound[PlayerNum.P2] == -1:
audio.load_sound(Path('none.wav'), 'hitsound_don_2p')
audio.load_sound(Path('none.wav'), 'hitsound_kat_2p')
logger.info("Loaded default (none) hit sounds for 2P")
elif global_data.hit_sound[1] == 0:
audio.load_sound(sounds_dir / "hit_sounds" / str(global_data.hit_sound[1]) / "don_2p.wav", 'hitsound_don_2p')
audio.load_sound(sounds_dir / "hit_sounds" / str(global_data.hit_sound[1]) / "ka_2p.wav", 'hitsound_kat_2p')
elif global_data.hit_sound[PlayerNum.P2] == 0:
audio.load_sound(sounds_dir / "hit_sounds" / str(global_data.hit_sound[PlayerNum.P2]) / "don_2p.wav", 'hitsound_don_2p')
audio.load_sound(sounds_dir / "hit_sounds" / str(global_data.hit_sound[PlayerNum.P2]) / "ka_2p.wav", 'hitsound_kat_2p')
logger.info("Loaded wav hit sounds for 2P")
else:
audio.load_sound(sounds_dir / "hit_sounds" / str(global_data.hit_sound[1]) / "don.ogg", 'hitsound_don_2p')
audio.load_sound(sounds_dir / "hit_sounds" / str(global_data.hit_sound[1]) / "ka.ogg", 'hitsound_kat_2p')
audio.load_sound(sounds_dir / "hit_sounds" / str(global_data.hit_sound[PlayerNum.P2]) / "don.ogg", 'hitsound_don_2p')
audio.load_sound(sounds_dir / "hit_sounds" / str(global_data.hit_sound[PlayerNum.P2]) / "ka.ogg", 'hitsound_kat_2p')
logger.info("Loaded ogg hit sounds for 2P")
audio.set_sound_pan('hitsound_don_2p', 1.0)
audio.set_sound_pan('hitsound_kat_2p', 1.0)
@@ -60,7 +61,7 @@ class TwoPlayerGameScreen(GameScreen):
if ray.is_key_pressed(ray.KeyboardKey.KEY_F1):
if self.song_music is not None:
audio.stop_music_stream(self.song_music)
self.init_tja(global_data.session_data[global_data.player_num-1].selected_song)
self.init_tja(global_data.session_data[global_data.player_num].selected_song)
audio.play_sound('restart', 'sound')
self.song_started = False
logger.info("F1 pressed: song restarted")
@@ -79,25 +80,25 @@ class TwoPlayerGameScreen(GameScreen):
self.movie.set_volume(0.0)
else:
self.movie = None
global_data.session_data[0].song_title = self.tja.metadata.title.get(global_data.config['general']['language'].lower(), self.tja.metadata.title['en'])
global_data.session_data[PlayerNum.P1].song_title = self.tja.metadata.title.get(global_data.config['general']['language'].lower(), self.tja.metadata.title['en'])
if self.tja.metadata.wave.exists() and self.tja.metadata.wave.is_file() and self.song_music is None:
self.song_music = audio.load_music_stream(self.tja.metadata.wave, 'song')
tja_copy = copy.deepcopy(self.tja)
self.player_1 = Player(self.tja, 1, global_data.session_data[0].selected_difficulty, False, global_data.modifiers[0])
self.player_2 = Player(tja_copy, 2, global_data.session_data[1].selected_difficulty, True, global_data.modifiers[1])
self.player_1 = Player(self.tja, PlayerNum.P1, global_data.session_data[PlayerNum.P1].selected_difficulty, False, global_data.modifiers[PlayerNum.P1])
self.player_2 = Player(tja_copy, PlayerNum.P2, global_data.session_data[PlayerNum.P2].selected_difficulty, True, global_data.modifiers[PlayerNum.P2])
self.start_ms = (get_current_ms() - self.tja.metadata.offset*1000)
logger.info(f"TJA initialized for two-player song: {song}")
def spawn_ending_anims(self):
if global_data.session_data[0].result_data.bad == 0:
if global_data.session_data[PlayerNum.P1].result_data.bad == 0:
self.player_1.ending_anim = FCAnimation(self.player_1.is_2p)
elif self.player_1.gauge.is_clear:
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)
if global_data.session_data[1].result_data.bad == 0:
if global_data.session_data[PlayerNum.P2].result_data.bad == 0:
self.player_2.ending_anim = FCAnimation(self.player_2.is_2p)
elif self.player_2.gauge.is_clear:
self.player_2.ending_anim = ClearAnimation(self.player_2.is_2p)
@@ -122,10 +123,10 @@ class TwoPlayerGameScreen(GameScreen):
if self.result_transition.is_finished and not audio.is_sound_playing('result_transition'):
return self.on_screen_end('RESULT_2P')
elif self.current_ms >= self.player_1.end_time:
session_data = global_data.session_data[0]
session_data = global_data.session_data[PlayerNum.P1]
session_data.result_data.score, session_data.result_data.good, session_data.result_data.ok, session_data.result_data.bad, session_data.result_data.max_combo, session_data.result_data.total_drumroll = self.player_1.get_result_score()
session_data.result_data.gauge_length = int(self.player_1.gauge.gauge_length)
session_data = global_data.session_data[1]
session_data = global_data.session_data[PlayerNum.P2]
session_data.result_data.score, session_data.result_data.good, session_data.result_data.ok, session_data.result_data.bad, session_data.result_data.max_combo, session_data.result_data.total_drumroll = self.player_2.get_result_score()
session_data.result_data.gauge_length = int(self.player_2.gauge.gauge_length)
if self.end_ms != 0:

View File

@@ -1,4 +1,5 @@
import logging
from libs.global_data import PlayerNum
from libs.utils import get_current_ms
from scenes.result import Background, FadeIn, ResultPlayer, ResultScreen
@@ -7,10 +8,10 @@ logger = logging.getLogger(__name__)
class TwoPlayerResultScreen(ResultScreen):
def on_screen_start(self):
super().on_screen_start()
self.background = Background('3', 1280)
self.fade_in = FadeIn('3')
self.player_1 = ResultPlayer('1', True, False)
self.player_2 = ResultPlayer('2', True, True)
self.background = Background(PlayerNum.TWO_PLAYER, 1280)
self.fade_in = FadeIn(PlayerNum.TWO_PLAYER)
self.player_1 = ResultPlayer(PlayerNum.P1, True, False)
self.player_2 = ResultPlayer(PlayerNum.P2, True, True)
def update(self):
super(ResultScreen, self).update()

View File

@@ -1,5 +1,6 @@
import logging
from libs.file_navigator import SongFile
from libs.global_data import PlayerNum
from libs.transition import Transition
from scenes.song_select import DiffSortSelect, SongSelectPlayer, SongSelectScreen, State
from libs.utils import get_current_ms, global_data
@@ -10,13 +11,13 @@ logger = logging.getLogger(__name__)
class TwoPlayerSongSelectScreen(SongSelectScreen):
def on_screen_start(self):
super().on_screen_start()
self.player_1 = SongSelectPlayer('1', self.text_fade_in)
self.player_2 = SongSelectPlayer('2', self.text_fade_in)
self.player_1 = SongSelectPlayer(PlayerNum.P1, self.text_fade_in)
self.player_2 = SongSelectPlayer(PlayerNum.P2, self.text_fade_in)
def finalize_song(self):
global_data.session_data[0].selected_song = self.navigator.get_current_item().path
global_data.session_data[0].genre_index = self.navigator.get_current_item().box.name_texture_index
logger.info(f"Finalized song selection: {global_data.session_data[0].selected_song}")
global_data.session_data[PlayerNum.P1].selected_song = self.navigator.get_current_item().path
global_data.session_data[PlayerNum.P1].genre_index = self.navigator.get_current_item().box.name_texture_index
logger.info(f"Finalized song selection: {global_data.session_data[PlayerNum.P1].selected_song}")
def handle_input(self):
if self.player_1.is_ready:
@@ -139,12 +140,12 @@ class TwoPlayerSongSelectScreen(SongSelectScreen):
audio.play_sound('don', 'sound')
audio.play_sound(f'voice_start_song_{global_data.player_num}p', 'voice')
if player_selected == 1:
global_data.session_data[0].selected_difficulty = self.player_1.selected_difficulty
global_data.session_data[PlayerNum.P1].selected_difficulty = self.player_1.selected_difficulty
self.player_1.selected_diff_highlight_fade.start()
self.player_1.selected_diff_text_resize.start()
self.player_1.selected_diff_text_fadein.start()
elif player_selected == 2:
global_data.session_data[1].selected_difficulty = self.player_2.selected_difficulty
global_data.session_data[PlayerNum.P2].selected_difficulty = self.player_2.selected_difficulty
self.player_2.selected_diff_highlight_fade.start()
self.player_2.selected_diff_text_resize.start()
self.player_2.selected_diff_text_fadein.start()