feat(debug): tecla Keypad 1 per forçar l'obertura de la porta

Hook només Debug que crida EntityManager::forceOpenDoor (nou helper
públic que delega a Door::open). El flux posterior — creuar la porta,
player_exited, level_complete, transició a OUTRO — funciona idèntic
al del joc real, perquè depèn de la Door, no del comptador de
sarcòfags. Útil per saltar la mecànica de pintat/sarcs durant proves
de progressió de sales.

Tecla configurable a data/input/keys.yaml > id: open_door
(per defecte Keypad 1). Mateixos gates que els salts [/]: ignora la
pulsació si la pausa està activa o l'editor obert. En Release la
ENTRADA del YAML segueix carregant-se però no té consumidor.
This commit is contained in:
JailDesigner committed 2026-04-26 17:20:12 +02:00
1 parent 3b05704e97
commit 8da18a6a86
4 files changed
+31

No files matched your search

+17
View File
@@ -853,6 +853,14 @@ namespace {
}
return 0;
}
auto detectOpenDoor() -> bool {
const SDL_Scancode SC = KeyConfig::get().scancode("open_door");
if (SC == SDL_SCANCODE_UNKNOWN) { return false; }
return std::ranges::any_of(EventBuffer::events, [SC](const SDL_Event& ev) {
return ev.type == SDL_EVENT_KEY_DOWN && ev.key.scancode == SC;
});
}
} // namespace
#endif
@@ -885,6 +893,15 @@ void GameScene::update(int delta_ms) {
enterRoomIntro();
}
}
// Força l'obertura de la porta (Keypad 1). Útil per saltar el
// pintat/sarcs durant proves de progressió. La resta del flux
// (creuar → player_exited → level_complete → OUTRO) es manté.
// Mateixos gates que el salt entre sales.
if (pause_.state == PauseState::IDLE && !editor_.active() && detectOpenDoor()) {
std::cout << "[DEBUG] força obertura de la porta\n";
entity_manager_.forceOpenDoor();
}
#endif
GlobalInputs::update(delta_ms);