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:
1 parent
fe17c35c67
commit
f51fe3d820
2 files changed
+15
-4
No files matched your search
@@ -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
|
||||
|
||||
@@ -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);
|
||||
|
||||
Reference in new issue
Block a user