feat(pyramid): usa variants 16×32 sam (jugador) i momia
This commit is contained in:
1 parent
936adf1405
commit
67ecb704d2
8 files changed
+97
-19
No files matched your search
@@ -299,3 +299,4 @@ void Mummy::onPlayerContact(Player* /*player*/) {
|
||||
}
|
||||
|
||||
REGISTER_ENTITY("mummy", Mummy)
|
||||
REGISTER_ENTITY_AS("momia", Mummy, Momia)
|
||||
@@ -43,23 +43,28 @@ class EntityFactory {
|
||||
};
|
||||
|
||||
// La macro genera un objecte anònim dins un namespace anònim: el seu
|
||||
// constructor s'executa abans de `main` i registra la factory. El nom del
|
||||
// símbol és únic per `CLASS` perquè el preprocessor el concatena; així
|
||||
// dues entitats diferents no xoquen.
|
||||
// constructor s'executa abans de `main` i registra la factory. El nom
|
||||
// del símbol es compon amb `TAG`, perquè així es poden registrar àlies
|
||||
// per una mateixa classe (p.ex. "mummy" i "momia" → Mummy) sense que
|
||||
// els símbols xoquen. La forma curta `REGISTER_ENTITY(NAME, CLASS)`
|
||||
// reusa `CLASS` com a tag; per àlies cal usar `REGISTER_ENTITY_AS` i
|
||||
// passar un identificador únic.
|
||||
//
|
||||
// IMPORTANT: perquè el registrador es cridi, el `.cpp` que el conté ha
|
||||
// d'estar enllaçat directament a l'executable (no dins una STATIC lib
|
||||
// sense `--whole-archive`). Tots els `concrete/*.cpp` entren a APP_SOURCES.
|
||||
#define REGISTER_ENTITY(NAME, CLASS) \
|
||||
namespace { \
|
||||
struct CLASS##_Registrar { \
|
||||
CLASS##_Registrar() { \
|
||||
EntityFactory::instance().registerCreator( \
|
||||
NAME, \
|
||||
[](const fkyaml::node& yaml) -> std::unique_ptr<Entity> { \
|
||||
return std::make_unique<CLASS>(yaml); \
|
||||
}); \
|
||||
} \
|
||||
}; \
|
||||
const CLASS##_Registrar g_##CLASS##_registrar; /* NOLINT(cert-err58-cpp) */ \
|
||||
#define REGISTER_ENTITY_AS(NAME, CLASS, TAG) \
|
||||
namespace { \
|
||||
struct TAG##_Registrar { \
|
||||
TAG##_Registrar() { \
|
||||
EntityFactory::instance().registerCreator( \
|
||||
NAME, \
|
||||
[](const fkyaml::node& yaml) -> std::unique_ptr<Entity> { \
|
||||
return std::make_unique<CLASS>(yaml); \
|
||||
}); \
|
||||
} \
|
||||
}; \
|
||||
const TAG##_Registrar g_##TAG##_registrar; /* NOLINT(cert-err58-cpp) */ \
|
||||
}
|
||||
|
||||
#define REGISTER_ENTITY(NAME, CLASS) REGISTER_ENTITY_AS(NAME, CLASS, CLASS)
|
||||
@@ -181,8 +181,8 @@ namespace Defaults {
|
||||
// conjunt de constants + un Config distint passat al ctor.
|
||||
namespace Pyramid {
|
||||
constexpr const char* MAP_YAML = "data/maps/pyramid.yaml";
|
||||
constexpr const char* PLAYER_SPRITE = "data/player/player.gif";
|
||||
constexpr const char* PLAYER_YAML = "data/player/player.yaml";
|
||||
constexpr const char* PLAYER_SPRITE = "data/player/sam.gif";
|
||||
constexpr const char* PLAYER_YAML = "data/player/sam.yaml";
|
||||
constexpr const char* MUSIC_TRACK = "pyramid_1.ogg";
|
||||
} // namespace Pyramid
|
||||
|
||||
|
||||
Reference in new issue
Block a user