HC-03: geometria del mapa traslladada de map.hpp al YAML de la piràmide
El bloc `geometry:` de pyramid.yaml porta les 9 constants base (grid, sarc, pitch, HUD, murs); els derivats (corridor, board, origin, playfield) es recalculen al `Map::loadFrom()`. `constexpr` passa a `const` on calia i els membres estàtics adopten snake_case. Desbloqueja la iteració "pirámide a pirámide" sense recompilar.
This commit is contained in:
1 parent
b895475716
commit
e6c7f0dcfb
6 files changed
+153
-83
No files matched your search
@@ -20,8 +20,21 @@
|
||||
#include "utils/defaults.hpp"
|
||||
#include "utils/defines.hpp"
|
||||
|
||||
namespace {
|
||||
|
||||
// La geometria ha de quedar inicialitzada abans que Tilemap parsejar el
|
||||
// mateix YAML i abans que el ctor de Player consulte Map::PLAYFIELD_*.
|
||||
// Cridar-la des d'una expressió que retorne la ruta permet encadenar-ho
|
||||
// a l'init list sense fer Tilemap default-constructible.
|
||||
auto loadMapGeometry(const char* yaml_path) -> const char* {
|
||||
Map::loadFrom(yaml_path);
|
||||
return yaml_path;
|
||||
}
|
||||
|
||||
} // namespace
|
||||
|
||||
GameScene::GameScene()
|
||||
: tilemap_("data/maps/pyramid.yaml") {
|
||||
: tilemap_(loadMapGeometry("data/maps/pyramid.yaml")) {
|
||||
Resource::Cache::get().loadSurface("player.gif", "data/player/player.gif");
|
||||
Resource::Cache::get().loadAnimation("player.yaml", "data/player/player.yaml");
|
||||
|
||||
@@ -39,10 +52,10 @@ GameScene::GameScene()
|
||||
// centrada en Y al passadís exterior superior. Així no naix dins de
|
||||
// cap sarcòfag.
|
||||
constexpr auto CORRIDOR_CENTER_X = static_cast<float>(GameCanvas::CENTER_X);
|
||||
constexpr auto CORRIDOR_CENTER_Y =
|
||||
static_cast<float>(Map::PLAYFIELD_Y) + (static_cast<float>(Map::OUTER_CORRIDOR) / 2.0F);
|
||||
const auto CORRIDOR_CENTER_Y =
|
||||
static_cast<float>(Map::playfield_y) + (static_cast<float>(Map::outer_corridor) / 2.0F);
|
||||
constexpr auto SPAWN_X = CORRIDOR_CENTER_X - (static_cast<float>(Player::SPRITE_WIDTH) / 2.0F);
|
||||
constexpr auto SPAWN_Y = CORRIDOR_CENTER_Y - static_cast<float>(Player::COLLISION_Y_OFFSET) - (static_cast<float>(Player::COLLISION_SIZE) / 2.0F);
|
||||
const auto SPAWN_Y = CORRIDOR_CENTER_Y - static_cast<float>(Player::COLLISION_Y_OFFSET) - (static_cast<float>(Player::COLLISION_SIZE) / 2.0F);
|
||||
players_.emplace_back(std::make_unique<Player>(SPAWN_X, SPAWN_Y, CONTROLS_P1));
|
||||
|
||||
// Música de fons de la piràmide 1 en bucle infinit. El track ja està al
|
||||
|
||||
Reference in new issue
Block a user