feat(gamepad): detecció i notificacions hot-plug amb GamepadManager

This commit is contained in:
JailDesigner committed 2026-04-22 19:39:16 +02:00
1 parent be9309d342
commit 7c35ffaa74
9 files changed
+305 -15

No files matched your search

+11 -11
View File
@@ -14,17 +14,9 @@
// que l'escena els vegi, així que la seva navegació segueix funcionant per
// molt que el flag estigui posat.
//
// --- Nota per a l'extensió a gamepad (pròxima iteració) ---
// Quan s'afegeixi suport de comandament, el jugador haurà de llegir eixos
// i botons via polling (p.ex. `SDL_GetGamepadAxis`/`SDL_GetGamepadButton`).
// Aquest mòdul s'ha d'ampliar amb:
// [[nodiscard]] auto getGamepadAxis(SDL_Gamepad* gp, SDL_GamepadAxis ax)
// -> Sint16; // 0 si bloquejat
// [[nodiscard]] auto getGamepadButton(SDL_Gamepad* gp, SDL_GamepadButton b)
// -> bool; // false si bloquejat
// Mateix patró: zero/false quan `blocked_`, pass-through altrament. Així
// Player (i el que sigui) només ha de canviar el nom de la crida; el menú
// no ha de saber res del gamepad més enllà de processar els seus events.
// El mateix patró aplica al gamepad: `getGamepadButton`/`getGamepadAxis`
// retornen zero/false quan el bloqueig és actiu. Els mandos concrets els
// obtén el caller via `GamepadManager::get().getPrimary()` o similars.
#include <SDL3/SDL.h>
@@ -43,4 +35,12 @@ namespace InputState {
// guardar-lo frame a frame.
[[nodiscard]] auto getKeyboardState() -> const bool*;
// Versió filtrada de `SDL_GetGamepadButton`. Retorna false si el bloqueig
// és actiu o si `gp` és nullptr (cas habitual: no hi ha cap mand).
[[nodiscard]] auto getGamepadButton(SDL_Gamepad* gp, SDL_GamepadButton b) -> bool;
// Versió filtrada de `SDL_GetGamepadAxis`. Retorna 0 si el bloqueig
// és actiu o si `gp` és nullptr.
[[nodiscard]] auto getGamepadAxis(SDL_Gamepad* gp, SDL_GamepadAxis ax) -> Sint16;
} // namespace InputState