feat(level-manager): GameScene pren el mapa del LevelManager

defaultConfig() llig el path del nivell actual amb
Levels::LevelManager::get().currentPath() en lloc de la constant
Pyramid::MAP_YAML (que desapareix). El ctor sincronitza room_index_
amb LevelManager::currentRoom() per al text d'intro de sala. Encara
no hi ha progressió: cada arrencada continua a la primera sala del
levels.yaml; el comportament visible és idèntic, però la responsabilitat
de 'quin fitxer carreguem' ha passat al LevelManager.
This commit is contained in:
JailDesigner committed 2026-04-26 14:50:51 +02:00
1 parent fe17c35c67
commit f51fe3d820
2 files changed
+15 -4

No files matched your search

+12 -1
View File
@@ -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