feat(menu): F-keys passen a GlobalInputs amb menú obert
This commit is contained in:
1 parent
885af944c5
commit
fd3da8cb99
2 files changed
+13
-6
No files matched your search
@@ -446,9 +446,11 @@ void Director::processGamepadEvents() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
void Director::processMenuInput() {
|
void Director::processMenuInput() {
|
||||||
// Intercepta input abans que l'escena vegi els events. Si el menú està
|
// Intercepta input abans que l'escena vegi els events. Amb el menú
|
||||||
// obert, consumeix TOTS els KEY_DOWN perquè ni GlobalInputs (F1–F8,
|
// obert, `handleEvent` consumeix tot KEY_DOWN excepte les F-keys
|
||||||
// F11, F12) ni el jugador els veuen. F9 obre el menú quan està tancat.
|
// (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ú.
|
||||||
// Erase invalida iteradors, per això actualitzem `it` a cada branca.
|
// Erase invalida iteradors, per això actualitzem `it` a cada branca.
|
||||||
for (auto it = EventBuffer::events.begin(); it != EventBuffer::events.end();) {
|
for (auto it = EventBuffer::events.begin(); it != EventBuffer::events.end();) {
|
||||||
if (ServiceMenu::get().isOpen() && ServiceMenu::get().handleEvent(*it)) {
|
if (ServiceMenu::get().isOpen() && ServiceMenu::get().handleEvent(*it)) {
|
||||||
|
|||||||
@@ -677,9 +677,14 @@ auto ServiceMenu::handleEvent(const SDL_Event& ev) -> bool {
|
|||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
// Mentre el menú està obert consumim TOTS els KEY_DOWN perquè les
|
// Context d'entrada exclusiu: amb el menú obert, el teclat va al menú
|
||||||
// hotkeys globals (F1–F8, F11, F12) no s'activen per sota.
|
// i les escenes no veuen res. Les F-keys (F1–F12) són hotkeys d'UI
|
||||||
return true;
|
// 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ú.
|
||||||
|
const bool IS_FUNCTION_KEY = SC >= SDL_SCANCODE_F1 && SC <= SDL_SCANCODE_F12;
|
||||||
|
return !IS_FUNCTION_KEY;
|
||||||
}
|
}
|
||||||
|
|
||||||
// --- Builders de pàgines ---
|
// --- Builders de pàgines ---
|
||||||
|
|||||||
Reference in new issue
Block a user