From 6673168ea0a588609ffff83be24f55889ea3dbe9 Mon Sep 17 00:00:00 2001 From: Sergio Valor Date: Mon, 20 Apr 2026 18:08:22 +0200 Subject: [PATCH] HC-08: alpha-mask amb nom a Tilemap::render MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit `0xFF000000U` passa a `constexpr std::uint32_t ALPHA_MASK` local amb comentari. No s'ha mogut a defines.hpp perquè només s'usa dins de Tilemap::render; si apareix a altres llocs es podrà centralitzar. --- docs/audit-game.md | 2 +- source/game/map/tilemap.cpp | 5 ++++- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/docs/audit-game.md b/docs/audit-game.md index 94e80c2..61161fd 100644 --- a/docs/audit-game.md +++ b/docs/audit-game.md @@ -47,7 +47,7 @@ Els IDs es mantenen estables una vegada assignats. Cada entrada apunta al fitxer | HC-05 | `ui_palette.hpp:12-21` | Índexs de paleta (`RENDER_INFO_TEXT=47`, `SHADOW=34`, `CANVAS_BG=65`) en `constexpr` | Menor | DONE | Valors moguts a `Defaults::UI`; `UiColor::*` queda com a alias exportat al joc | | HC-06 | `game_scene.cpp:24-26,52` | Rutes `data/maps/pyramid.yaml`, `data/player/player.*`, `pyramid_1.ogg` cablejades | Importante | DONE | Afegit `Defaults::Pyramid::{MAP_YAML,PLAYER_SPRITE,PLAYER_YAML,MUSIC_TRACK}`; `GameScene::Config` struct + `defaultConfig()` passa les rutes al ctor (default ve de Defaults). `Player` ctor accepta `anim_key` en lloc de cablejar `"player.yaml"`. Cache key = basename (mateix conveni que abans) | | HC-07 | `options.cpp:27,55` | Fallbacks `"letterbox"`/`"off"` com a strings màgics que dupliquen els enums | Menor | DONE | Resolt amb DUP-03: la primera entrada de cada taula és el fallback i només apareix una vegada | -| HC-08 | `tilemap.cpp:135` | `0xFF000000U` com a màscara alfa | Menor | PENDING | Constant amb nom a `defines.hpp` | +| HC-08 | `tilemap.cpp:135` | `0xFF000000U` com a màscara alfa | Menor | DONE | `constexpr std::uint32_t ALPHA_MASK = 0xFF000000U` local amb comentari. No s'ha mogut a defines.hpp perquè només s'usa dins de `Tilemap::render` | ## 3. Parxes i improvisacions diff --git a/source/game/map/tilemap.cpp b/source/game/map/tilemap.cpp index f6bf7b7..4df152f 100644 --- a/source/game/map/tilemap.cpp +++ b/source/game/map/tilemap.cpp @@ -126,13 +126,16 @@ void Tilemap::render() const { const int X_START = std::max(0, -origin_x_); const int X_END = std::min(width_px_, CANVAS_W - origin_x_); + // Màscara del canal alfa (els píxels transparents del tilemap queden + // amb alpha=0 i cal mantenir el canvas sota visible). + constexpr std::uint32_t ALPHA_MASK = 0xFF000000U; for (int y = Y_START; y < Y_END; ++y) { const auto* src_row = &pixels_[static_cast(y) * static_cast(width_px_)]; auto* dst_row = &canvas[(static_cast(origin_y_ + y) * static_cast(CANVAS_W)) + static_cast(origin_x_)]; for (int x = X_START; x < X_END; ++x) { const auto PIXEL = src_row[x]; - if ((PIXEL & 0xFF000000U) != 0U) { dst_row[x] = PIXEL; } + if ((PIXEL & ALPHA_MASK) != 0U) { dst_row[x] = PIXEL; } } } }