feat(entities): integració del sistema d'entitats al GameScene

This commit is contained in:
JailDesigner committed 2026-04-21 13:55:21 +02:00
1 parent 96b71b0f65
commit 7191a08618
16 files changed
+683 -15

No files matched your search

+17
View File
@@ -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};
};