feat(entities): fase 4 - moviment de la momia amb col·lisió, z-order per peus i contacte amb el jugador
This commit is contained in:
1 parent
e6b612d164
commit
ee8dc25181
17 files changed
+378
-66
No files matched your search
@@ -10,6 +10,7 @@
|
||||
class Entity;
|
||||
class Sarcophagus;
|
||||
class Door;
|
||||
class Player;
|
||||
|
||||
// Contenidor i coordinador d'entitats d'un nivell. Responsabilitats:
|
||||
// 1. `add` registra una entitat, la connecta al bus i manté propietat.
|
||||
@@ -49,10 +50,30 @@ class EntityManager {
|
||||
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.
|
||||
// l'ordre d'inserció. GameScene fa el z-order interleaving amb els
|
||||
// players directament via `renderEntity`; `renderAll` queda com a
|
||||
// dreçera quan no hi ha players al render (editor, tests).
|
||||
void renderAll();
|
||||
|
||||
// Render d'una única entitat (mateixa lògica de clipping per frame
|
||||
// que renderAll). Exposat perquè GameScene pugui interleavar entitats
|
||||
// i players per `getFeetY()` (REND-01). Estàtic perquè la lògica de
|
||||
// render no depèn de cap estat del manager — ara com ara, l'entitat
|
||||
// porta la seua surface, animació i pixel_rect.
|
||||
static void renderEntity(const Entity& entity);
|
||||
|
||||
// Accés als punters observacionals a les entitats per a consumidors
|
||||
// externs que necessiten construir una llista ordenada (z-order).
|
||||
[[nodiscard]] auto getEntities() const -> std::vector<Entity*>;
|
||||
|
||||
// Comprova contacte del(s) jugador(s) amb entitats `collides()=true`.
|
||||
// Si la caixa base del jugador solapa amb la caixa de col·lisió de
|
||||
// l'entitat, crida `entity->onPlayerContact(player)`. No fa res si
|
||||
// la llista està buida. Es crida des de GameScene cada frame, després
|
||||
// de `update`, perquè la resposta (p.ex. `player_hit`, `level_complete`)
|
||||
// reflecteixi l'estat del frame actual.
|
||||
void checkPlayerCollisions(const std::vector<Player*>& players);
|
||||
|
||||
// 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).
|
||||
|
||||
Reference in new issue
Block a user