feat(entity-manager): comptador player_exited agrega a level_complete
This commit is contained in:
1 parent
5c5cd1d5da
commit
28e55a0615
3 files changed
+47
No files matched your search
@@ -90,10 +90,17 @@ class EntityManager {
|
||||
// `Map::tile_size`, `tilemap_origin_*` i `getSarcRect`).
|
||||
void loadFromLevel(const std::string& level_yaml_path);
|
||||
|
||||
// Fixa quants jugadors actius es consideren al recompte d'EXITED.
|
||||
// Cridat per GameScene un cop instanciats els jugadors. Si manca,
|
||||
// `expected_players_ = 0` i mai s'emet `level_complete` automàticament.
|
||||
// Cridar-lo de nou al respawn (futur reload) reseteja el comptador.
|
||||
void setExpectedPlayerCount(int n);
|
||||
|
||||
[[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_; }
|
||||
[[nodiscard]] auto openedSarcophagusCount() const -> std::size_t { return opened_sarcs_; }
|
||||
[[nodiscard]] auto exitedPlayerCount() const -> std::size_t { return exited_players_; }
|
||||
|
||||
private:
|
||||
EventBus bus_;
|
||||
@@ -101,6 +108,14 @@ class EntityManager {
|
||||
Door* door_{nullptr};
|
||||
std::size_t total_sarcs_{0};
|
||||
std::size_t opened_sarcs_{0};
|
||||
// Recompte d'`player_exited`: incrementat a la subscripció al bus,
|
||||
// resetejat per `setExpectedPlayerCount`. Quan `exited_players_` arriba
|
||||
// a `expected_players_` (i tots dos > 0), publica `level_complete`
|
||||
// amb `player_id = -1` (event d'agregat, no atribuible a un jugador).
|
||||
int expected_players_{0};
|
||||
int exited_players_{0};
|
||||
bool level_complete_emitted_{false};
|
||||
EventBus::SubId sarc_sub_id_{0};
|
||||
EventBus::SubId tile_sub_id_{0};
|
||||
EventBus::SubId exit_sub_id_{0};
|
||||
};
|
||||
Reference in new issue
Block a user