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:
1 parent
f51fe3d820
commit
9d4f92c98b
3 files changed
+43
-19
No files matched your search
@@ -99,10 +99,10 @@ namespace RoomFsm {
|
||||
t.elapsed_ms -= DURS[t.phase];
|
||||
++t.phase;
|
||||
}
|
||||
// Placeholder fins a l'itinerari de sales: l'OUTRO recau a INTRO.
|
||||
// TODO(itinerari): aquest mateix retorn sortirà cap a una nova
|
||||
// sala (incrementant `room_index_` i recreant tilemap/entitats al
|
||||
// GameScene) abans de tornar a ROOM_INTRO.
|
||||
// Final de l'OUTRO → ROOM_INTRO de la sala SEGÜENT. La FSM no
|
||||
// sap quina és — només avisa del canvi d'estat. La GameScene,
|
||||
// dins `setState(ROOM_INTRO)` amb PREV=OUTRO, demana al
|
||||
// LevelManager el següent nivell i recarrega tilemap/entitats.
|
||||
if (t.phase >= static_cast<int>(DURS.size())) { return State::ROOM_INTRO; }
|
||||
return current;
|
||||
}
|
||||
|
||||
Reference in new issue
Block a user