Files
aee-arcade/source/game/scenes/start_input.hpp
T
JailDesignerandClaude Opus 4.7 c13b11c501 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>
2026-05-08 20:04:33 +02:00

20 lines
979 B
C++

#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