DEAD-01..04: retirat el render primitiu del Map

`renderBackground`, `renderSarcsRow`, `getSarcRowBottomY` i els índexs de
paleta `HUD_BG/WALL/FLOOR/SARC` no tenien callers: el Tilemap s'encarrega
del render visual i els sarcs passaran a ser actors sprite. `getSarcRect`
es queda (la usa `collides`). Includes orfes de `screen.hpp`,
`resource_cache.hpp` i `defines.hpp` eliminats. DEAD-04 (ctor Map)
ja es va resoldre durant HC-03.
This commit is contained in:
JailDesigner committed 2026-04-20 17:57:12 +02:00
1 parent ea725c2177
commit 53bf3a1ff2
3 files changed
+9 -72

No files matched your search

+5 -26
View File
@@ -10,9 +10,10 @@
// bloc `geometry:` del YAML de la piràmide — així cada sala pot tenir la
// seua forma sense recompilar.
//
// Z-order: el render es divideix en fons (marcador + muros + sòl) i files
// de sarcòfags. El caller (GameScene) alternarà jugadors ordenats per la Y
// dels peus amb cada fila per a aconseguir la perspectiva falsa.
// Abans d'aquesta versió `Map` també pintava el fons i els sarcs amb
// primitives; ara el Tilemap s'encarrega del render visual i `Map` només
// aporta la geometria lògica i les col·lisions. Quan els sarcòfags passin
// a ser actors independents es reintroduirà l'ordenació Z via `getFeetY`.
class Map {
public:
// Geometria de la graella (carregada de pyramid.yaml > geometry).
@@ -45,38 +46,16 @@ class Map {
inline static int playfield_w = 0;
inline static int playfield_h = 0;
// Índexs a la paleta UI (data/palettes/sega-cube.pal). Centralitzats ací
// per a poder ajustar l'estètica sense buscar magic numbers pel codi.
static constexpr Uint8 HUD_BG = 0;
static constexpr Uint8 WALL = 80;
static constexpr Uint8 FLOOR = 40;
static constexpr Uint8 SARC = 160;
// Carrega el bloc `geometry:` del YAML i recalcula tots els derivats.
// Ha de cridar-se abans d'instanciar `Player` o consultar `collides()`:
// GameScene ho fa al ctor.
static void loadFrom(const std::string& yaml_path);
// Fons estàtic: marcador, muros (back/side/front) i sòl interior. No
// pinta cap sarcòfag; això queda per a renderSarcsRow() perquè el caller
// puga interleaveing amb els jugadors.
static void renderBackground();
// Pinta la fila `row` de sarcòfags. El caller decideix quan cridar-la
// respecte als jugadors segons la seua Y.
static void renderSarcsRow(int row);
// Y de la cara inferior dels sarcòfags de la fila `row` (la "baseline"
// per a ordenar en Z): un jugador amb els peus per sobre d'aquest valor
// queda darrere; per sota, queda davant.
[[nodiscard]] static auto getSarcRowBottomY(int row) -> int;
// Rectangle ocupat pel sarcòfag a la posició (col, row) de la graella.
[[nodiscard]] static auto getSarcRect(int col, int row) -> SDL_FRect;
// Mapa de colisions (separat del mapa de dibuix): retorna true si el
// rectangle `base_box` (la base del jugador, per exemple) s'encavalca
// amb cap sarcòfag. Així Player mai camine sobre un sarcòfag,
// independentment de com els pinte renderSarcsRow.
// amb cap sarcòfag.
[[nodiscard]] static auto collides(const SDL_FRect& base_box) -> bool;
};