feat(menu): sons de navegació i acceptació al menú de servei

This commit is contained in:
JailDesigner committed 2026-04-29 20:27:01 +02:00
1 parent 0847e9c544
commit 45514ae2f4
9 files changed
+62

No files matched your search

+19
View File
@@ -459,6 +459,14 @@ namespace {
} // namespace
void ServiceMenu::playSelectSound() {
Audio::get()->playSound(UiConfig::get().menuSelectSound(), Audio::Group::INTERFACE);
}
void ServiceMenu::playAcceptSound() {
Audio::get()->playSound(UiConfig::get().menuAcceptSound(), Audio::Group::INTERFACE);
}
void ServiceMenu::handleGamepadButtonDown(const SDL_GamepadButtonEvent& ev) {
// El botó SERVICE (per defecte BACK; remapejable per dispositiu via
// `GamepadBindings`) tanca el menú sencer. Cada mando pot tenir el
@@ -466,26 +474,32 @@ void ServiceMenu::handleGamepadButtonDown(const SDL_GamepadButtonEvent& ev) {
const int SERVICE_BTN = serviceButtonForEvent(ev.which);
if (SERVICE_BTN >= 0 && static_cast<int>(ev.button) == SERVICE_BTN) {
close();
playSelectSound();
return;
}
switch (ev.button) {
case SDL_GAMEPAD_BUTTON_DPAD_UP:
moveCursor(-1);
playSelectSound();
break;
case SDL_GAMEPAD_BUTTON_DPAD_DOWN:
moveCursor(+1);
playSelectSound();
break;
case SDL_GAMEPAD_BUTTON_DPAD_LEFT:
activateCurrent(-1);
playAcceptSound();
break;
case SDL_GAMEPAD_BUTTON_DPAD_RIGHT:
case SDL_GAMEPAD_BUTTON_EAST:
case SDL_GAMEPAD_BUTTON_NORTH:
activateCurrent(+1);
playAcceptSound();
break;
case SDL_GAMEPAD_BUTTON_WEST:
case SDL_GAMEPAD_BUTTON_SOUTH:
popPage();
playSelectSound();
break;
default:
break;
@@ -567,21 +581,26 @@ auto ServiceMenu::handleEvent(const SDL_Event& ev) -> bool {
switch (SC) {
case SDL_SCANCODE_UP:
moveCursor(-1);
playSelectSound();
break;
case SDL_SCANCODE_DOWN:
moveCursor(+1);
playSelectSound();
break;
case SDL_SCANCODE_LEFT:
activateCurrent(-1);
playAcceptSound();
break;
case SDL_SCANCODE_RIGHT:
case SDL_SCANCODE_RETURN:
case SDL_SCANCODE_KP_ENTER:
activateCurrent(+1);
playAcceptSound();
break;
case SDL_SCANCODE_BACKSPACE:
case SDL_SCANCODE_ESCAPE:
popPage();
playSelectSound();
break;
default:
break;