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
@@ -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
|
||||
|
||||
Reference in new issue
Block a user