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
@@ -253,6 +253,19 @@ class Entity {
|
||||
[[nodiscard]] auto getFlip() const -> SDL_FlipMode { return flip_; }
|
||||
void setFlip(SDL_FlipMode flip) { flip_ = flip; }
|
||||
|
||||
// Radi de la llum emesa per aquesta entitat (en píxels del canvas).
|
||||
// 0 = no emet (cas habitual). El bloc opcional `light: { radius: N }`
|
||||
// del YAML de la plantilla el pobla via `EntityManager::buildEntity`.
|
||||
[[nodiscard]] auto getLightRadius() const -> int { return light_radius_; }
|
||||
void setLightRadius(int r) { light_radius_ = r; }
|
||||
|
||||
// Centre de la llum en píxels del canvas. Per defecte és el centre del
|
||||
// `pixel_rect_` (que és la caixa de render: sprite top-left + mida).
|
||||
// Virtual perquè entitats amb desplaçament visual sobre la posició
|
||||
// lògica (p.ex. el Player en l'aire, que rebaixa visualment `pos_.y`
|
||||
// amb `jump_z_`) puguin retornar el centre que realment es veu.
|
||||
[[nodiscard]] virtual auto getLightCenter() const -> SDL_FPoint;
|
||||
|
||||
protected:
|
||||
std::string name_;
|
||||
TilePos tile_{};
|
||||
@@ -266,6 +279,7 @@ class Entity {
|
||||
bool is_floor_decal_{false};
|
||||
bool blocks_movement_{false};
|
||||
int height_{0};
|
||||
int light_radius_{0};
|
||||
bool dead_{false};
|
||||
SDL_FlipMode flip_{SDL_FLIP_NONE};
|
||||
EventBus* bus_{nullptr};
|
||||
|
||||
Reference in new issue
Block a user