From 53bf3a1ff2c5af7a76ef380f7a202046ed517a71 Mon Sep 17 00:00:00 2001 From: Sergio Valor Date: Mon, 20 Apr 2026 17:57:12 +0200 Subject: [PATCH] DEAD-01..04: retirat el render primitiu del Map MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit `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. --- docs/audit-game.md | 8 ++++---- source/game/map/map.cpp | 42 ----------------------------------------- source/game/map/map.hpp | 31 +++++------------------------- 3 files changed, 9 insertions(+), 72 deletions(-) diff --git a/docs/audit-game.md b/docs/audit-game.md index be76286..b93985b 100644 --- a/docs/audit-game.md +++ b/docs/audit-game.md @@ -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 diff --git a/source/game/map/map.cpp b/source/game/map/map.cpp index f4401c1..fa464ea 100644 --- a/source/game/map/map.cpp +++ b/source/game/map/map.cpp @@ -4,10 +4,7 @@ #include #include -#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(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 diff --git a/source/game/map/map.hpp b/source/game/map/map.hpp index 0c56e43..e38da68 100644 --- a/source/game/map/map.hpp +++ b/source/game/map/map.hpp @@ -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; };