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
@@ -2,6 +2,7 @@
|
||||
|
||||
#include <cstddef>
|
||||
#include <memory>
|
||||
#include <string>
|
||||
#include <vector>
|
||||
|
||||
#include "game/entities/event_bus.hpp"
|
||||
@@ -47,11 +48,26 @@ class EntityManager {
|
||||
// Tick de totes les entitats.
|
||||
void update(float delta_time);
|
||||
|
||||
// Dibuix de totes les entitats. Sense ordenació per z: la crida dura
|
||||
// l'ordre d'inserció. El z-order fi (interleaving amb el Player per
|
||||
// feetY) queda per a una tasca posterior.
|
||||
void renderAll();
|
||||
|
||||
// Fan-out del hook de moviment de jugador: per a cada sarcòfag,
|
||||
// cridar notifyTileEntered. Les entitats no-sarcòfag ho ignoren per
|
||||
// defecte (veure Entity::notifyTileEntered).
|
||||
void notifyPlayerEnteredTile(int col, int row);
|
||||
|
||||
// Carrega els spawns d'un YAML de nivell i els afegeix al manager:
|
||||
// 1. Llegeix el bloc `entities:` via EntityLoader.
|
||||
// 2. Per cada spawn: crea via factory, carrega la seva surface al
|
||||
// Resource::Cache, calcula pixel_rect_ segons el tipus
|
||||
// (sarc: Map::getSarcRect; altres: col/row del tilemap) i l'afegeix.
|
||||
// 3. Loguea `Entities: N loaded` per facilitar el smoke d'arrencada.
|
||||
// Requereix que Map::loadFrom ja s'hagi cridat (necessita
|
||||
// `Map::tile_size`, `tilemap_origin_*` i `getSarcRect`).
|
||||
void loadFromLevel(const std::string& level_yaml_path);
|
||||
|
||||
[[nodiscard]] auto getBus() -> EventBus& { return bus_; }
|
||||
[[nodiscard]] auto entityCount() const -> std::size_t { return entities_.size(); }
|
||||
[[nodiscard]] auto sarcophagusCount() const -> std::size_t { return total_sarcs_; }
|
||||
@@ -64,4 +80,5 @@ class EntityManager {
|
||||
std::size_t total_sarcs_{0};
|
||||
std::size_t opened_sarcs_{0};
|
||||
EventBus::SubId sarc_sub_id_{0};
|
||||
EventBus::SubId tile_sub_id_{0};
|
||||
};
|
||||
Reference in new issue
Block a user