feat(level-manager): avança a la sala següent al creuar la porta

Reemplaça resetRoom() per loadRoom(yaml_path) — la mateixa mecànica de
recàrrega però parametritzada amb el path de la nova sala. setState
de OUTRO → INTRO ara crida advanceToNextRoom(): demana al LevelManager
el següent nivell, sincronitza room_index_ amb el currentRoom() i
carrega via loadRoom. Si l'OUTRO arriba a l'última sala del levels.yaml,
fa loop a la primera (política temporal mentre no hi haja pantalla de
fi de joc). El comentari TODO de room_fsm.cpp queda actualitzat: la
FSM continua sent agnostica a quina sala ve, només marca el canvi
d'estat — l'itinerari el resol GameScene amb el LevelManager.
This commit is contained in:
JailDesigner committed 2026-04-26 14:53:07 +02:00
1 parent f51fe3d820
commit 9d4f92c98b
3 files changed
+43 -19

No files matched your search

+14 -5
View File
@@ -208,11 +208,20 @@ class GameScene : public Scene {
};
[[nodiscard]] static auto computeSpawn() -> PlayerSpawn;
// Reset complet de la sala: reload de l'EntityManager (sarcs/porta/
// momies des de zero), neteja del PaintLayer i respawn dels jugadors
// a la posició calculada per `computeSpawn`. Cridat des de
// `setState(ROOM_INTRO)` quan la transició anterior era OUTRO.
void resetRoom();
// Recarrega la sala apuntada per `yaml_path`: refresca Map (geometria,
// porta tancada), entitats (sarcs/porta/momies des de zero), neteja
// el PaintLayer i deixa els jugadors a DISABLED esperant la cinemàtica
// d'spawn aeri del nou cicle d'INTRO. També actualitza
// `config_.map_yaml` perquè futurs consumidors (l'Editor en guardar,
// logs, etc.) sàpiguen quina sala està viva.
void loadRoom(const std::string& yaml_path);
// Demana al LevelManager el següent nivell i el carrega via
// `loadRoom`. Si ja era a l'última entrada, fa loop a la primera
// (política temporal mentre no hi haja pantalla de fi de joc).
// Cridat des de `setState(ROOM_INTRO)` quan la transició anterior
// era OUTRO — és la conseqüència de creuar la porta.
void advanceToNextRoom();
#ifdef _DEBUG
// Editor modal del tilemap. Mútuament excloent amb la pausa: si la