feat(gamepad): detecció i notificacions hot-plug amb GamepadManager
This commit is contained in:
1 parent
be9309d342
commit
7c35ffaa74
9 files changed
+305
-15
No files matched your search
@@ -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
|
||||
Reference in new issue
Block a user