- Mapa té un JD8_Surface fondo propi que s'allibera al destructor: una còpia accidental provocaria double-free. Ara els 4 copy/move ops estan = delete. - ModuleGame ja era no-copiable implícitament per tindre unique_ptr members, però els = delete expliciten la intenció i protegeixen davant refactors futurs que afegeixquen tipus copiables. Fi de la modernització RAII per fases (1–6). Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
65 lines
1.2 KiB
C++
65 lines
1.2 KiB
C++
#pragma once
|
|
|
|
#include "core/jail/jdraw8.hpp"
|
|
#include "game/info.hpp"
|
|
#include "game/prota.hpp"
|
|
|
|
#define CONTE_RES 0
|
|
#define CONTE_TRESOR 1
|
|
#define CONTE_FARAO 2
|
|
#define CONTE_CLAU 3
|
|
#define CONTE_MOMIA 4
|
|
#define CONTE_PERGAMI 5
|
|
#define CONTE_DIAMANT 6
|
|
#define VALOR_DIAMANT 5
|
|
|
|
struct Tomba {
|
|
bool costat[4];
|
|
Uint8 contingut;
|
|
bool oberta;
|
|
Uint16 x, y;
|
|
};
|
|
|
|
struct Vertex {
|
|
Uint8 columna;
|
|
Uint8 fila;
|
|
};
|
|
|
|
class Mapa {
|
|
public:
|
|
explicit Mapa(JD8_Surface gfx, Prota* sam);
|
|
~Mapa(void);
|
|
|
|
Mapa(const Mapa&) = delete;
|
|
Mapa& operator=(const Mapa&) = delete;
|
|
Mapa(Mapa&&) = delete;
|
|
Mapa& operator=(Mapa&&) = delete;
|
|
|
|
void draw();
|
|
void update();
|
|
bool novaMomia();
|
|
void comprovaCaixa(Uint8 num);
|
|
|
|
Tomba tombes[16];
|
|
|
|
protected:
|
|
void preparaFondoEstatic();
|
|
void preparaTombes();
|
|
|
|
void comprovaUltimCami();
|
|
void comprovaPorta();
|
|
|
|
JD8_Surface gfx;
|
|
JD8_Surface fondo;
|
|
Vertex vertex;
|
|
Vertex ultim_vertex;
|
|
Uint8 frame_torxes;
|
|
|
|
Prota* sam;
|
|
|
|
bool farao;
|
|
bool clau;
|
|
bool porta_oberta;
|
|
bool nova_momia;
|
|
};
|