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
+3 -3
View File
@@ -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<N>/r<M>.yaml`. Substituirà `MAP_YAML` quan el
// wiring del LevelManager estigui complet.
// a un `data/maps/p<N>/r<M>.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);