refactor: fase 4 — llista enllaçada de Momia a std::vector<unique_ptr>

Eliminada completament la recursivitat per next-pointer:
- Momia::next, clear(), insertar() desapareixen
- update()/draw() no recursen: operen només sobre la instància pròpia
- ModuleGame::momies: Momia* (head de llista) → std::vector<std::unique_ptr<Momia>>
  - Destructor simplificat (vector s'autodestrueix)
  - Draw: range-for sobre el vector
  - Update: std::erase_if + decrement sincronitzat de info::ctx.momies
  - Cheat "alone": momies.clear()
  - iniciarMomies i nova_momia: emplace_back(std::make_unique<Momia>(...))

Zero new/delete manuals al cicle de vida de les momies.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-04-18 13:56:05 +02:00
parent 2a8fbbb095
commit 5e57034a38
4 changed files with 92 additions and 137 deletions

View File

@@ -1,25 +1,22 @@
#pragma once
#include <memory>
#include "game/engendro.hpp"
#include "game/info.hpp"
#include "game/prota.hpp"
#include "game/sprite.hpp"
class Momia : public Sprite {
public:
explicit Momia(JD8_Surface gfx, bool dimoni, Uint16 x, Uint16 y, Prota* sam);
void clear();
void draw() override;
bool update();
void insertar(Momia* momia);
bool dimoni;
Momia* next;
protected:
Prota* sam;
std::unique_ptr<Engendro> engendro;
};
#pragma once
#include <memory>
#include "game/engendro.hpp"
#include "game/info.hpp"
#include "game/prota.hpp"
#include "game/sprite.hpp"
class Momia : public Sprite {
public:
explicit Momia(JD8_Surface gfx, bool dimoni, Uint16 x, Uint16 y, Prota* sam);
void draw() override;
bool update();
bool dimoni;
protected:
Prota* sam;
std::unique_ptr<Engendro> engendro;
};