fix(whip_attack): treure entity_manager_ duplicat (ja viu a Entity)

This commit is contained in:
JailDesigner committed 2026-05-02 11:01:53 +02:00
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_;
+24 -8
View File
@@ -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