feat(entities): light_radius + getLightCenter a Entity i Player
This commit is contained in:
1 parent
68be8e55ec
commit
ebb161f1f5
5 files changed
+67
No files matched your search
@@ -124,6 +124,12 @@ class Player : public AnimatedSprite {
|
||||
// creua mentre `jump_z_` és superior a aquest valor, no col·lisionem.
|
||||
inline static int body_height = 0;
|
||||
|
||||
// Radi de la llum emesa pel jugador (en píxels del canvas), llegit
|
||||
// del bloc opcional `light: { radius: N }` del YAML. 0 = no emet.
|
||||
// Es declara estàtic com la resta de configs del jugador (immunity,
|
||||
// jump, ...): tots els jugadors del mateix YAML comparteixen el valor.
|
||||
inline static int light_radius = 0;
|
||||
|
||||
// Ha de cridar-se abans d'instanciar Player; GameScene ho fa al ctor.
|
||||
static void loadFrom(const std::string& yaml_path);
|
||||
|
||||
@@ -132,6 +138,13 @@ class Player : public AnimatedSprite {
|
||||
// marcador i `Player::resetForJoin` per a re-entrades mid-partida.
|
||||
[[nodiscard]] static auto getInitialLives() -> int { return death_config.initial_lives; }
|
||||
|
||||
// Emissió de llum (mateix paper que `Entity::getLightRadius` per a
|
||||
// les entitats). El centre puja amb el salt: durant `jump_z_>0` el
|
||||
// sprite es dibuixa amb `pos_.y - jump_z_`, i la llum ha de seguir-lo
|
||||
// per a que el cercle "salti" amb el jugador, no es quedi al sòl.
|
||||
[[nodiscard]] static auto getLightRadius() -> int { return light_radius; }
|
||||
[[nodiscard]] auto getLightCenter() const -> SDL_FPoint;
|
||||
|
||||
Player(const std::string& anim_key, int id, float x, float y, const Controls& controls, const Map::Info& map_info, int paint_tile_index = -1);
|
||||
|
||||
// Update en una sola crida: manté l'API anterior per als tests i
|
||||
|
||||
Reference in new issue
Block a user