diff --git a/source/game/scenes/game_scene.cpp b/source/game/scenes/game_scene.cpp index 425dda2..838c7cc 100644 --- a/source/game/scenes/game_scene.cpp +++ b/source/game/scenes/game_scene.cpp @@ -32,6 +32,7 @@ #include "game/entities/entity_loader.hpp" #include "game/entities/event_bus.hpp" #include "game/entities/player.hpp" +#include "game/levels/level_manager.hpp" #include "game/map/map.hpp" #include "game/options.hpp" #include "game/ui/hud.hpp" @@ -221,8 +222,11 @@ namespace { } // namespace auto GameScene::defaultConfig() -> Config { + // El path del mapa el dicta el LevelManager (que ja ha llegit `levels.yaml` + // a la primera invocació). Així `defaultConfig()` no coneix cap fitxer + // concret de sala — només cap a on apunta la progressió ara mateix. return { - .map_yaml = Defaults::Pyramid::MAP_YAML, + .map_yaml = Levels::LevelManager::get().currentPath(), .player_sprite = Defaults::Pyramid::PLAYER_SPRITE, .player_yaml = Defaults::Pyramid::PLAYER_YAML, .player2_sprite = Defaults::Pyramid::PLAYER_SPRITE_P2, @@ -235,6 +239,13 @@ auto GameScene::defaultConfig() -> Config { GameScene::GameScene(Config config) : config_(std::move(config)), tilemap_(makeTilemap(config_.map_yaml)) { + // Sincronitzem l'identificador de la sala amb el LevelManager (la + // mateixa font que ha donat el `map_yaml`). El text d'intro encara + // consumeix només `{n}` = número de sala dins de la piràmide; quan + // afegim el placeholder de piràmide al locale, ací també caldrà + // passar-li `currentPyramid()`. + room_index_ = Levels::LevelManager::get().currentRoom(); + // Convenció: el Resource::Cache indexa per basename del fitxer, perquè // la mateixa clau l'usa el parseador d'animació (YAML > tileSetFile). // Lambda perquè tenim dos conjunts d'assets (sam/morcus) i l'alta al diff --git a/source/utils/defaults.hpp b/source/utils/defaults.hpp index 0d26232..379ce05 100644 --- a/source/utils/defaults.hpp +++ b/source/utils/defaults.hpp @@ -233,10 +233,10 @@ namespace Defaults { namespace Pyramid { // Índex ordenat de les 30 sales (5 piràmides × 6 sales). El consumeix // `Levels::LevelManager` a la primera invocació; cada entrada apunta - // a un `data/maps/p/r.yaml`. Substituirà `MAP_YAML` quan el - // wiring del LevelManager estigui complet. + // a un `data/maps/p/r.yaml`. Cap altre punt del codi hauria de + // hardcodejar el path d'una sala concreta — pregunteu-li al + // `LevelManager` (`currentPath()`) i deixeu que ell decidisca. constexpr const char* LEVELS_YAML = "data/maps/levels.yaml"; - constexpr const char* MAP_YAML = "data/maps/pyramid.yaml"; constexpr const char* PLAYER_SPRITE = "data/player/sam.gif"; constexpr const char* PLAYER_YAML = "data/player/sam.yaml"; // Personatge del segon jugador. Clonat de sam amb repaletat (roig→blau);