fix(whip_attack): treure entity_manager_ duplicat (ja viu a Entity)
This commit is contained in:
1 parent
2ef5968e0d
commit
f591aa82fd
2 files changed
+25
-9
No files matched your search
@@ -152,7 +152,7 @@ class WhipAttack : public Attack {
|
||||
// del nostre `getFeetY()` per delegar el bucket d'y-sort al jugador.
|
||||
float owner_feet_y_{0.0F};
|
||||
|
||||
EntityManager* entity_manager_{nullptr};
|
||||
// `entity_manager_` viu a Entity (protected): l'utilitzem d'allà.
|
||||
const std::vector<Player*>* players_{nullptr};
|
||||
|
||||
DirSprite sprite_north_;
|
||||
|
||||
@@ -1141,9 +1141,18 @@ void GameScene::update(int delta_ms) {
|
||||
#ifdef _DEBUG
|
||||
// Toggle de l'editor: només si no hi ha cap transició de pausa ni
|
||||
// pausa consolidada. L'editor mateix no consumeix la tecla — la
|
||||
// llegim ací per decidir la coexistència.
|
||||
// llegim ací per decidir la coexistència. Quan se surt del editor,
|
||||
// recarreguem les entitats des del YAML perquè el manager torne a
|
||||
// estar sincronitzat amb el que el writer acaba de desar (cada
|
||||
// sessió d'edició parteix del fitxer, no de l'estat runtime previ).
|
||||
if (pause_.state == PauseState::IDLE && detectEditorToggle()) {
|
||||
const bool WAS_ACTIVE = editor_.active();
|
||||
editor_.toggle(tilemap_);
|
||||
if (WAS_ACTIVE) {
|
||||
entity_manager_.reload(Levels::LevelManager::get().currentPath());
|
||||
const int ACTIVE_COUNT = std::ranges::count(players_starts_active_, true);
|
||||
entity_manager_.setExpectedPlayerCount(ACTIVE_COUNT);
|
||||
}
|
||||
}
|
||||
|
||||
// Salts debug entre sales (`[` / `]`). Mútuament excloents amb la
|
||||
@@ -1242,18 +1251,25 @@ void GameScene::render() {
|
||||
tilemap_.render();
|
||||
|
||||
#ifdef _DEBUG
|
||||
// En mode editor amaguem entitats i jugador: el tilemap queda net
|
||||
// per a poder clicar cel·la per cel·la sense interferència visual.
|
||||
// El HUD futur (quan s'afegeixi) també farà cas d'aquest flag.
|
||||
const bool SKIP_ACTORS = editor_.active();
|
||||
// En mode editor amaguem jugadors, sombres, paint layer, fades, HUD
|
||||
// i textos de transició: el tilemap queda net per editar i només es
|
||||
// pinten les entitats (congelades, sense tick) per que el dissenyador
|
||||
// veja on estan.
|
||||
const bool EDITOR_ACTIVE = editor_.active();
|
||||
#else
|
||||
constexpr bool SKIP_ACTORS = false;
|
||||
constexpr bool EDITOR_ACTIVE = false;
|
||||
#endif
|
||||
if (EDITOR_ACTIVE) {
|
||||
// Render barat de les entitats sense z-sort entre elles ni amb
|
||||
// jugadors: ja no hi ha actors mòbils. L'ordre és el d'inserció
|
||||
// del manager — suficient per editar.
|
||||
entity_manager_.renderAll();
|
||||
}
|
||||
// Capa de pintat: va entre el tilemap base i els actors, perquè els
|
||||
// sarcòfags i el jugador la tapen. S'amaga al mode editor (decisió
|
||||
// explícita: l'editor edita el tilemap, no la capa de pintat).
|
||||
if (!SKIP_ACTORS && paint_layer_) { paint_layer_->render(); }
|
||||
if (!SKIP_ACTORS) {
|
||||
if (!EDITOR_ACTIVE && paint_layer_) { paint_layer_->render(); }
|
||||
if (!EDITOR_ACTIVE) {
|
||||
// Passada de sombres dels jugadors saltant. Va per davant del
|
||||
// pintat (al damunt) però per darrere de TOTS els actors —
|
||||
// entitats i jugadors, inclòs el saltador mateix— així la sombra
|
||||
|
||||
Reference in new issue
Block a user