feat(menu): ESC tanca el joc també amb el menú obert
This commit is contained in:
1 parent
b6403e8de5
commit
4daeb0e15c
2 files changed
+13
-10
No files matched your search
@@ -448,9 +448,10 @@ void Director::processGamepadEvents() {
|
||||
void Director::processMenuInput() {
|
||||
// Intercepta input abans que l'escena vegi els events. Amb el menú
|
||||
// obert, `handleEvent` consumeix tot KEY_DOWN excepte les F-keys
|
||||
// (F1–F12), que són hotkeys d'UI omnipresents i passen avall a
|
||||
// GlobalInputs. Quan el menú està tancat, la branca de baix detecta
|
||||
// `menu_toggle` (F12 per defecte) i obre el menú.
|
||||
// (F1–F12) i ESC, que són hotkeys d'UI omnipresents i passen avall
|
||||
// a GlobalInputs (ESC manté la doble pulsació per a confirmar l'exit
|
||||
// independentment del context). Quan el menú està tancat, la branca
|
||||
// de baix detecta `menu_toggle` (F12 per defecte) i obre el menú.
|
||||
// Erase invalida iteradors, per això actualitzem `it` a cada branca.
|
||||
for (auto it = EventBuffer::events.begin(); it != EventBuffer::events.end();) {
|
||||
if (ServiceMenu::get().isOpen() && ServiceMenu::get().handleEvent(*it)) {
|
||||
|
||||
@@ -661,7 +661,6 @@ auto ServiceMenu::handleEvent(const SDL_Event& ev) -> bool {
|
||||
playAcceptSound();
|
||||
break;
|
||||
case SDL_SCANCODE_BACKSPACE:
|
||||
case SDL_SCANCODE_ESCAPE:
|
||||
popPage();
|
||||
playSelectSound();
|
||||
break;
|
||||
@@ -669,13 +668,16 @@ auto ServiceMenu::handleEvent(const SDL_Event& ev) -> bool {
|
||||
break;
|
||||
}
|
||||
// Context d'entrada exclusiu: amb el menú obert, el teclat va al menú
|
||||
// i les escenes no veuen res. Les F-keys (F1–F12) són hotkeys d'UI
|
||||
// omnipresents (zoom, shader, screenshot, render info, menu_toggle…)
|
||||
// i passen avall a GlobalInputs. Tota la resta queda absorbida —
|
||||
// inclús tecles que el menú no fa servir — perquè una J en LogoScene
|
||||
// no salti la secció mentre l'usuari està al menú.
|
||||
// i les escenes no veuen res. Les F-keys (F1–F12) i ESC són hotkeys
|
||||
// d'UI omnipresents (zoom, shader, screenshot, render info,
|
||||
// menu_toggle, exit) i passen avall a GlobalInputs perquè es
|
||||
// comporten igual amb el menú obert o tancat. La navegació enrere
|
||||
// dins del menú queda exclusivament a BACKSPACE. Tota la resta queda
|
||||
// absorbida — inclús tecles que el menú no fa servir — perquè una J
|
||||
// en LogoScene no salti la secció mentre l'usuari està al menú.
|
||||
const bool IS_FUNCTION_KEY = SC >= SDL_SCANCODE_F1 && SC <= SDL_SCANCODE_F12;
|
||||
return !IS_FUNCTION_KEY;
|
||||
const bool IS_PASSTHROUGH = IS_FUNCTION_KEY || SC == SDL_SCANCODE_ESCAPE;
|
||||
return !IS_PASSTHROUGH;
|
||||
}
|
||||
|
||||
// --- Builders de pàgines ---
|
||||
|
||||
Reference in new issue
Block a user