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

+4 -4
View File
@@ -84,10 +84,10 @@ Els IDs es mantenen estables una vegada assignats. Cada entrada apunta al fitxer
| ID | Fitxer:línia | Troballa | Severitat | Estat | Notes |
|----|--------------|----------|-----------|-------|-------|
| DEAD-01 | `map.hpp:69,73,78` | `renderBackground`/`renderSarcsRow`/`getSarcRowBottomY` no tenen callers | Importante | PENDING | Esborrar o re-integrar amb sarcs-sprite |
| DEAD-02 | `map.hpp:59-62` | Índexs `HUD_BG/WALL/FLOOR/SARC` només usats pel codi mort | Importante | PENDING | Esborrar amb DEAD-01 |
| DEAD-03 | `map.cpp:3-5` | Includes `screen.hpp/resource_cache.hpp/defines.hpp` orfes si es neteja DEAD-01 | Menor | PENDING | Revisar després de DEAD-01 |
| DEAD-04 | `map.hpp:64` + `map.cpp:19` | Ctor de `Map` mai instanciat | Menor | PENDING | Veure PATCH-07 |
| DEAD-01 | `map.hpp:69,73,78` | `renderBackground`/`renderSarcsRow`/`getSarcRowBottomY` no tenen callers | Importante | DONE | Eliminats; el tilemap fa el render visual i els sarcs seran actors sprite. `getSarcRect` es queda (la usa `collides`) |
| DEAD-02 | `map.hpp:59-62` | Índexs `HUD_BG/WALL/FLOOR/SARC` només usats pel codi mort | Importante | DONE | Eliminats amb DEAD-01 |
| DEAD-03 | `map.cpp:3-5` | Includes `screen.hpp/resource_cache.hpp/defines.hpp` orfes si es neteja DEAD-01 | Menor | DONE | Eliminats amb DEAD-01 |
| DEAD-04 | `map.hpp:64` + `map.cpp:19` | Ctor de `Map` mai instanciat | Menor | DONE | Ja eliminat durant HC-03 |
| DEAD-05 | `game_scene.cpp:78-86` | Ordenació Z-order cerimonial (1 jugador, sense sarcs-sprite) | Menor | PENDING | Veure PATCH-06 |
## 7. Violacions de convencions
-42
View File
@@ -4,10 +4,7 @@
#include <iostream>
#include <stdexcept>
#include "core/rendering/screen.hpp"
#include "core/resources/resource_cache.hpp"
#include "external/fkyaml_node.hpp"
#include "utils/defines.hpp"
namespace {
@@ -65,10 +62,6 @@ void Map::loadFrom(const std::string& yaml_path) {
<< " des de " << yaml_path << '\n';
}
auto Map::getSarcRowBottomY(int row) -> int {
return origin_y + (row * pitch_y) + sarc_h;
}
auto Map::getSarcRect(int col, int row) -> SDL_FRect {
return {
.x = static_cast<float>(origin_x + (col * pitch_x)),
@@ -78,41 +71,6 @@ auto Map::getSarcRect(int col, int row) -> SDL_FRect {
};
}
void Map::renderBackground() {
auto& screen = Screen::get();
const auto& palette = Resource::Cache::get().getPalette("ui");
// Comencem pintant el sòl a tota la pantalla; després tapem marcador i
// murs. Els rectangles dels murs s'encavalquen a les cantonades: no
// importa perquè són del mateix color.
screen.fillRect(0, 0, GameCanvas::WIDTH, GameCanvas::HEIGHT, palette[FLOOR]);
// Marcador (dalt).
screen.fillRect(0, 0, GameCanvas::WIDTH, hud_h, palette[HUD_BG]);
// Mur posterior: banda horitzontal sota el marcador.
screen.fillRect(0, hud_h, GameCanvas::WIDTH, back_wall_h, palette[WALL]);
// Murs laterals (des del marcador fins al final).
screen.fillRect(0, hud_h, side_wall_w, GameCanvas::HEIGHT - hud_h, palette[WALL]);
screen.fillRect(GameCanvas::WIDTH - side_wall_w, hud_h, side_wall_w, GameCanvas::HEIGHT - hud_h, palette[WALL]);
// Mur frontal: de la vora inferior del passadís de baix fins al final del
// canvas. Assumeix els 40 px extra de 320×240 i fa de primer pla.
const int FRONT_WALL_Y = origin_y + board_h + outer_corridor;
screen.fillRect(0, FRONT_WALL_Y, GameCanvas::WIDTH, GameCanvas::HEIGHT - FRONT_WALL_Y, palette[WALL]);
}
void Map::renderSarcsRow(int row) {
auto& screen = Screen::get();
const auto& palette = Resource::Cache::get().getPalette("ui");
const int Y = origin_y + (row * pitch_y);
for (int col = 0; col < grid_cols; ++col) {
const int X = origin_x + (col * pitch_x);
screen.fillRect(X, Y, sarc_w, sarc_h, palette[SARC]);
}
}
auto Map::collides(const SDL_FRect& base_box) -> bool {
// Recorregut trivial dels sarcòfags. Amb una graella petita no val la
// pena indexar per col/row prèviament; si algun dia creix, es pot
+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;
};