feat(mummy): evita tiles amb decal trigger (Hole) en decidir direcció

This commit is contained in:
JailDesigner committed 2026-04-30 16:50:26 +02:00
1 parent 3e5217066f
commit 3bfca35f3a
5 files changed
+111 -27

No files matched your search

+13
View File
@@ -12,9 +12,13 @@
// `source/game/entities/player.hpp` i només es referencia per referència
// dins `onPlayerContact`; `EventBus` és opcional a cada entitat i viu al
// seu header propi. `Surface` és el backend de render paletitzat del motor.
// `EntityManager` només es referencia per punter (injectat opcionalment
// per a entitats que necessiten consultar el món d'entitats — p.ex. la
// mòmia per saber si el pròxim tile té un decal trigger tipus Hole).
class Player;
class EventBus;
class Surface;
class EntityManager;
// Entitat genèrica del món. Actua com a dada en comú per a tots els actors
// del joc (decoratius, interactables, perills mòbils i estàtics): manté
@@ -122,6 +126,14 @@ class Entity {
// estàtiques de moment) el poden ignorar.
void setEventBus(EventBus* bus) { bus_ = bus; }
// Injecció opcional del manager d'entitats (mateix patró que
// `setEventBus`: el manager s'auto-injecta a `add`/`setDoor`/
// `addSarcophagus`). El consumeixen entitats que volen consultar el
// món d'entitats — avui la mòmia, per saber si el tile següent
// conté un decal trigger (Hole) i evitar caure-hi. Entitats que no
// l'usen el poden ignorar.
void setEntityManager(EntityManager* manager) { entity_manager_ = manager; }
// Assigna la caixa de render en píxels. La invoca `EntityManager` durant
// `loadFromLevel` un cop sap la posició definitiva de l'entitat al mapa.
void setPixelRect(SDL_FRect rect) { pixel_rect_ = rect; }
@@ -199,4 +211,5 @@ class Entity {
bool dead_{false};
SDL_FlipMode flip_{SDL_FLIP_NONE};
EventBus* bus_{nullptr};
EntityManager* entity_manager_{nullptr};
};