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/entity_loader.hpp"
|
||||||
#include "game/entities/event_bus.hpp"
|
#include "game/entities/event_bus.hpp"
|
||||||
#include "game/entities/player.hpp"
|
#include "game/entities/player.hpp"
|
||||||
|
#include "game/levels/level_manager.hpp"
|
||||||
#include "game/map/map.hpp"
|
#include "game/map/map.hpp"
|
||||||
#include "game/options.hpp"
|
#include "game/options.hpp"
|
||||||
#include "game/ui/hud.hpp"
|
#include "game/ui/hud.hpp"
|
||||||
@@ -221,8 +222,11 @@ namespace {
|
|||||||
} // namespace
|
} // namespace
|
||||||
|
|
||||||
auto GameScene::defaultConfig() -> Config {
|
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 {
|
return {
|
||||||
.map_yaml = Defaults::Pyramid::MAP_YAML,
|
.map_yaml = Levels::LevelManager::get().currentPath(),
|
||||||
.player_sprite = Defaults::Pyramid::PLAYER_SPRITE,
|
.player_sprite = Defaults::Pyramid::PLAYER_SPRITE,
|
||||||
.player_yaml = Defaults::Pyramid::PLAYER_YAML,
|
.player_yaml = Defaults::Pyramid::PLAYER_YAML,
|
||||||
.player2_sprite = Defaults::Pyramid::PLAYER_SPRITE_P2,
|
.player2_sprite = Defaults::Pyramid::PLAYER_SPRITE_P2,
|
||||||
@@ -235,6 +239,13 @@ auto GameScene::defaultConfig() -> Config {
|
|||||||
GameScene::GameScene(Config config)
|
GameScene::GameScene(Config config)
|
||||||
: config_(std::move(config)),
|
: config_(std::move(config)),
|
||||||
tilemap_(makeTilemap(config_.map_yaml)) {
|
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è
|
// Convenció: el Resource::Cache indexa per basename del fitxer, perquè
|
||||||
// la mateixa clau l'usa el parseador d'animació (YAML > tileSetFile).
|
// la mateixa clau l'usa el parseador d'animació (YAML > tileSetFile).
|
||||||
// Lambda perquè tenim dos conjunts d'assets (sam/morcus) i l'alta al
|
// Lambda perquè tenim dos conjunts d'assets (sam/morcus) i l'alta al
|
||||||
|
|||||||
@@ -233,10 +233,10 @@ namespace Defaults {
|
|||||||
namespace Pyramid {
|
namespace Pyramid {
|
||||||
// Índex ordenat de les 30 sales (5 piràmides × 6 sales). El consumeix
|
// Índex ordenat de les 30 sales (5 piràmides × 6 sales). El consumeix
|
||||||
// `Levels::LevelManager` a la primera invocació; cada entrada apunta
|
// `Levels::LevelManager` a la primera invocació; cada entrada apunta
|
||||||
// a un `data/maps/p<N>/r<M>.yaml`. Substituirà `MAP_YAML` quan el
|
// a un `data/maps/p<N>/r<M>.yaml`. Cap altre punt del codi hauria de
|
||||||
// wiring del LevelManager estigui complet.
|
// 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* 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_SPRITE = "data/player/sam.gif";
|
||||||
constexpr const char* PLAYER_YAML = "data/player/sam.yaml";
|
constexpr const char* PLAYER_YAML = "data/player/sam.yaml";
|
||||||
// Personatge del segon jugador. Clonat de sam amb repaletat (roig→blau);
|
// Personatge del segon jugador. Clonat de sam amb repaletat (roig→blau);
|
||||||
|
|||||||
Reference in new issue
Block a user