fix(hazard): aterrar damunt d'un Hole salta el LANDING_STUN

This commit is contained in:
JailDesigner committed 2026-04-30 13:53:26 +02:00
1 parent 4da50571eb
commit 3e5217066f
5 files changed
+80 -5

No files matched your search

+15
View File
@@ -12,6 +12,7 @@
#include "game/map/map.hpp"
class EventBus;
class EntityManager;
class Player : public AnimatedSprite {
public:
@@ -345,6 +346,14 @@ class Player : public AnimatedSprite {
// correspongui (sarcòfags). Si el bus no s'injecta, no emet res.
void setEventBus(EventBus* bus) { bus_ = bus; }
// Injecta el manager d'entitats del nivell. L'usa `integrateJump` per
// detectar aterratges sobre decals-trigger (forats, plaques de
// pressió...) i disparar la transició corresponent en lloc del
// LANDING_STUN normal. Propietat externa (mateixa convenció que
// `setEventBus`); si no s'injecta, l'aterratge segueix el camí
// normal (els tests stand-alone del Player no necessiten injectar-lo).
void setEntityManager(EntityManager* manager) { entity_manager_ = manager; }
// Tile actual del jugador (centre de `baseBox()` convertit a
// coordenades de tile del tilemap, usant Map::tile_size i
// Map::tilemap_origin_*). Retorna (col, row).
@@ -815,6 +824,12 @@ class Player : public AnimatedSprite {
// Player només en guarda un punter per publicar events.
EventBus* bus_{nullptr};
// Manager d'entitats del nivell (opcional). Propietat externa
// (GameScene); l'usa `integrateJump` per consultar
// `findFloorTriggerAt` a l'aterratge i decidir si el frame del LAND
// ha de disparar `enterHoleFall` en lloc d'un LANDING_STUN normal.
EntityManager* entity_manager_{nullptr};
// Últim tile publicat. Inicialitzats a un sentinel fora de rang perquè
// el primer frame en què el bus estigui connectat ja emeti un event.
int last_tile_col_{-9999};