feat(player): join in progress + DISABLED en agotar vidas (Fase 1)
Habilita la regla 1 de la nova FSM de joc: durant PLAYING, qualsevol
slot DISABLED pot pulsar START per entrar a partida amb spawn aeri al
seu costat de la porta i vides reseteades. Quan un jugador esgota les
vides, `respawnFromDying` el deixa a DISABLED i publica `player_disabled`
al bus; GameScene i HUD reaccionen, deixant el slot disponible per a un
nou join. Afegeix prompts al HUD ("PULSA START / PER JUGAR" o
"ESPERA / PER JUGAR") segons l'estat de la RoomFsm.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
1 parent
8921b9fd0c
commit
c13b11c501
12 files changed
+325
-56
No files matched your search
@@ -0,0 +1,19 @@
|
||||
#pragma once
|
||||
|
||||
// Helper compartit per detectar pulsacions del botó START dins del frame
|
||||
// actual per a un jugador concret. Originalment vivia al namespace anònim
|
||||
// de `title_scene.cpp` perquè era l'únic consumidor; ara la GameScene
|
||||
// també l'usa per al "join in progress" mid-partida (regla 1 de la FSM
|
||||
// del jugador), així que extraiem la funció a un namespace propi per
|
||||
// evitar duplicar la pila d'input (Defaults::Keys + GamepadManager +
|
||||
// Options + GamepadBindings + EventBuffer) en dos llocs.
|
||||
namespace Input::Detect {
|
||||
|
||||
// Cert si dins dels events SDL d'aquest frame hi ha una pulsació de
|
||||
// START per al jugador `player_id` (0 = P1, 1 = P2). Combina events
|
||||
// de teclat (scancode hardcoded a `Defaults::KeysGame[P2]::START`) i
|
||||
// de gamepad (botó remapejable via `GamepadBindings`, lligat al pad
|
||||
// assignat al jugador via `Options::controls()`).
|
||||
[[nodiscard]] auto pressedStart(int player_id) -> bool;
|
||||
|
||||
} // namespace Input::Detect
|
||||
Reference in new issue
Block a user