29 lines
1.5 KiB
C++
29 lines
1.5 KiB
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;
|
|
|
|
// Cert si dins dels events SDL d'aquest frame el jugador
|
|
// `player_id` (0 = P1, 1 = P2) ha pulsat el botó de salt o el
|
|
// d'atac (qualsevol dels dos). Usat per la GameScene per acceptar
|
|
// qualsevol "botó d'acció" com a senyal de skip del countdown de
|
|
// CONTINUE? un cop el número visible cau a un llindar configurable.
|
|
// Mateix patró que `pressedStart`: combina teclat (Defaults::Keys)
|
|
// i gamepad (GamepadBindings).
|
|
[[nodiscard]] auto pressedActionButton(int player_id) -> bool;
|
|
|
|
} // namespace Input::Detect
|