feat(entities): integració del sistema d'entitats al GameScene
This commit is contained in:
1 parent
96b71b0f65
commit
7191a08618
16 files changed
+683
-15
No files matched your search
@@ -3,9 +3,12 @@
|
||||
#include <SDL3/SDL.h>
|
||||
|
||||
#include <string>
|
||||
#include <utility>
|
||||
|
||||
#include "core/rendering/sprite/animated_sprite.hpp"
|
||||
|
||||
class EventBus;
|
||||
|
||||
class Player : public AnimatedSprite {
|
||||
public:
|
||||
// Mapeig de tecles per al moviment del jugador. Cada jugador local en pot
|
||||
@@ -47,6 +50,16 @@ class Player : public AnimatedSprite {
|
||||
return getPosY() + static_cast<float>(collision_y_offset + collision_size);
|
||||
}
|
||||
|
||||
// Injecta el bus del nivell. El Player publica `on_tile_entered` cada
|
||||
// vegada que el centre de la seua caixa de col·lisió entra en una
|
||||
// cel·la nova del tilemap. Si el bus no s'injecta, no emet res.
|
||||
void setEventBus(EventBus* bus) { bus_ = bus; }
|
||||
|
||||
// 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).
|
||||
[[nodiscard]] auto getCurrentTile() const -> std::pair<int, int>;
|
||||
|
||||
private:
|
||||
// Rectangle de col·lisió del jugador, usat pel mapa de colisions i com
|
||||
// a referència per al Z-order.
|
||||
@@ -72,4 +85,13 @@ class Player : public AnimatedSprite {
|
||||
void (Player::*set_pos)(float));
|
||||
|
||||
Controls controls_;
|
||||
|
||||
// Bus del nivell (opcional). Propietat externa (EntityManager); el
|
||||
// Player només en guarda un punter per publicar events.
|
||||
EventBus* bus_{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};
|
||||
int last_tile_row_{-9999};
|
||||
};
|
||||
Reference in new issue
Block a user