feat(menu): navegació del menú de servei amb sticks

This commit is contained in:
JailDesigner committed 2026-05-01 09:03:20 +02:00
1 parent 2c1c1a442b
commit fddea0c449
2 files changed
+76

No files matched your search

+14
View File
@@ -208,6 +208,12 @@ class ServiceMenu {
// sota el llindar de clang-tidy.
void handleGamepadButtonDown(const SDL_GamepadButtonEvent& ev);
// Navegació via sticks analògics. Treballa per edge-detection: cada
// eix recorda en quina "zona" està (negativa / neutra / positiva) i
// sols dispara una acció quan creua de neutra a un extrem, igual que
// un botó del DPAD. Aplicada tant al stick esquerre com al dret.
void handleGamepadAxisMotion(const SDL_GamepadAxisEvent& ev);
// Sons d'UI: SELECT acompanya navegació (amunt/avall) i back; ACCEPT
// acompanya modificació d'opció (esquerra/dreta/retorn). Els noms de
// recurs venen d'`UiConfig` i el preload el fa el Director.
@@ -270,6 +276,14 @@ class ServiceMenu {
float transition_progress_{0.0F}; // 0 → 1 durant la transició de pàgina.
bool capturing_{false}; // True mentre esperem una tecla per a un KEY_BIND.
// Estat per eix del stick per a edge-detection: -1, 0, +1 segons la
// zona on viu el valor actual. Un canvi de zona dispara una acció
// (només quan entra a un extrem); reset a 0 quan torna al centre.
std::int8_t lx_zone_{0};
std::int8_t ly_zone_{0};
std::int8_t rx_zone_{0};
std::int8_t ry_zone_{0};
// Sub-mòdul de captura de botons del mando. Quan està actiu absorbeix
// tots els events de mando (BUTTON_DOWN/UP, AXIS_MOTION) i, en acabar,
// persisteix la nova configuració via `GamepadBindings`. Replica el