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:
1 parent
ea725c2177
commit
53bf3a1ff2
3 files changed
+9
-72
No files matched your search
+4
-4
@@ -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
|
||||
|
||||
@@ -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
@@ -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;
|
||||
};
|
||||
Reference in new issue
Block a user