HC-04+HC-05: índexs de paleta UI centralitzats a Defaults::UI
Afegit `Defaults::UI::` amb els 5 índexs (RENDER_INFO_TEXT/SHADOW, CANVAS_BG, NOTIFICATION_TEXT/BG, EXIT_TEXT/BG) i 2 durades (NOTIFICATION_TIME_MS, EXIT_TIME_MS). `ui_palette.hpp` i `notification_presets.hpp` queden com a alias: canviar el tema global és tocar un sol bloc. Equivalent a tenir un "tema" (vindria d'un YAML el dia que calga).
This commit is contained in:
1 parent
df059a6fcb
commit
beb6a4aad1
4 files changed
+44
-27
No files matched your search
+2
-2
@@ -43,8 +43,8 @@ Els IDs es mantenen estables una vegada assignats. Cada entrada apunta al fitxer
|
|||||||
| HC-01 | `player.cpp:15` | `SPEED_PX_PER_S = 60.0F` cablejat | Importante | DONE | Afegit `Defaults::Player::SPEED_PX_PER_S` a `utils/defaults.hpp` (patró usat a l'audit d'àudio); `player.cpp` fa alias local per reduir soroll. TODO-comment ("si més endavant volem sprint...") eliminat (PATCH-02) |
|
| HC-01 | `player.cpp:15` | `SPEED_PX_PER_S = 60.0F` cablejat | Importante | DONE | Afegit `Defaults::Player::SPEED_PX_PER_S` a `utils/defaults.hpp` (patró usat a l'audit d'àudio); `player.cpp` fa alias local per reduir soroll. TODO-comment ("si més endavant volem sprint...") eliminat (PATCH-02) |
|
||||||
| HC-02 | `player.hpp:21-35` | `SPRITE_WIDTH/HEIGHT`, `LEGACY_BASE_SIZE`, `COLLISION_SIZE` cablejats | Importante | DONE | Bloc `collision:` afegit a `player.yaml` (size, base_size); `Player` exposa `inline static int sprite_*`/`base_size`/`collision_*` recalculats al `loadFrom()`. GameScene crida el load abans del spawn (mateix patró que Map) |
|
| HC-02 | `player.hpp:21-35` | `SPRITE_WIDTH/HEIGHT`, `LEGACY_BASE_SIZE`, `COLLISION_SIZE` cablejats | Importante | DONE | Bloc `collision:` afegit a `player.yaml` (size, base_size); `Player` exposa `inline static int sprite_*`/`base_size`/`collision_*` recalculats al `loadFrom()`. GameScene crida el load abans del spawn (mateix patró que Map) |
|
||||||
| HC-03 | `map.hpp:18-62` | Tota la geometria del mapa + 4 índexs de paleta en `.hpp` | Crítico | DONE | Bloc `geometry:` afegit a `pyramid.yaml`; `Map` exposa `inline static int` + `loadFrom(yaml)`; derivats (CORRIDOR/BOARD/ORIGIN/PLAYFIELD) recalculats al load. `constexpr` → `const` en els locals dependents a `player.cpp` i `game_scene.cpp`. Índexs de paleta queden per DEAD-02 |
|
| HC-03 | `map.hpp:18-62` | Tota la geometria del mapa + 4 índexs de paleta en `.hpp` | Crítico | DONE | Bloc `geometry:` afegit a `pyramid.yaml`; `Map` exposa `inline static int` + `loadFrom(yaml)`; derivats (CORRIDOR/BOARD/ORIGIN/PLAYFIELD) recalculats al load. `constexpr` → `const` en els locals dependents a `player.cpp` i `game_scene.cpp`. Índexs de paleta queden per DEAD-02 |
|
||||||
| HC-04 | `notification_presets.hpp:24-38` | `text_color`, `bg_color`, `time_ms` en `constexpr` | Menor | PENDING | Bloc `notifications:` a `config.yaml` o tema extern |
|
| HC-04 | `notification_presets.hpp:24-38` | `text_color`, `bg_color`, `time_ms` en `constexpr` | Menor | DONE | Valors moguts a `Defaults::UI::{NOTIFICATION_*, EXIT_*}`; els `Preset` son alias. Tocar "tema" global es fa a un sol lloc |
|
||||||
| HC-05 | `ui_palette.hpp:12-21` | Índexs de paleta (`RENDER_INFO_TEXT=47`, `SHADOW=34`, `CANVAS_BG=65`) en `constexpr` | Menor | PENDING | Bloc `ui:` a `config.yaml` |
|
| 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-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-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 | PENDING | Constant amb nom a `defines.hpp` |
|
||||||
|
|||||||
@@ -5,6 +5,7 @@
|
|||||||
#include <string>
|
#include <string>
|
||||||
|
|
||||||
#include "core/rendering/notifier.hpp"
|
#include "core/rendering/notifier.hpp"
|
||||||
|
#include "utils/defaults.hpp"
|
||||||
|
|
||||||
// Temes per a les notificacions de pantalla. Un "preset" captura els dos
|
// Temes per a les notificacions de pantalla. Un "preset" captura els dos
|
||||||
// colors (text i fons, índexs sobre la paleta "ui") i el temps de visibilitat
|
// colors (text i fons, índexs sobre la paleta "ui") i el temps de visibilitat
|
||||||
@@ -18,13 +19,12 @@ namespace Notification {
|
|||||||
int time_ms;
|
int time_ms;
|
||||||
};
|
};
|
||||||
|
|
||||||
// Tema per defecte: text clar sobre fons fosc, 2 segons de visibilitat.
|
// Tema per defecte: text clar sobre fons fosc. Els valors concrets
|
||||||
// Per a ajustar l'aparença global de totes les notificacions sense
|
// viuen a `Defaults::UI` — tocar l'aparença global es fa allà.
|
||||||
// presetejar-les manualment, toca només aquest bloc.
|
|
||||||
constexpr Preset DEFAULT{
|
constexpr Preset DEFAULT{
|
||||||
.text_color = 197,
|
.text_color = Defaults::UI::NOTIFICATION_TEXT,
|
||||||
.bg_color = 96,
|
.bg_color = Defaults::UI::NOTIFICATION_BG,
|
||||||
.time_ms = 4000,
|
.time_ms = Defaults::UI::NOTIFICATION_TIME_MS,
|
||||||
};
|
};
|
||||||
|
|
||||||
// Preset per al missatge de confirmació d'eixida (ESC doble). Color
|
// Preset per al missatge de confirmació d'eixida (ESC doble). Color
|
||||||
@@ -32,9 +32,9 @@ namespace Notification {
|
|||||||
// coincideix amb la finestra durant la qual la segona pulsació d'ESC
|
// coincideix amb la finestra durant la qual la segona pulsació d'ESC
|
||||||
// confirma el tancament — veure GlobalInputs::onExit.
|
// confirma el tancament — veure GlobalInputs::onExit.
|
||||||
constexpr Preset EXIT{
|
constexpr Preset EXIT{
|
||||||
.text_color = 88,
|
.text_color = Defaults::UI::EXIT_TEXT,
|
||||||
.bg_color = 40,
|
.bg_color = Defaults::UI::EXIT_BG,
|
||||||
.time_ms = 4000,
|
.time_ms = Defaults::UI::EXIT_TIME_MS,
|
||||||
};
|
};
|
||||||
|
|
||||||
// Helper de conveniència: aplica un preset (per defecte DEFAULT) cridant
|
// Helper de conveniència: aplica un preset (per defecte DEFAULT) cridant
|
||||||
|
|||||||
@@ -1,23 +1,14 @@
|
|||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#include <SDL3/SDL.h>
|
#include "utils/defaults.hpp"
|
||||||
|
|
||||||
// Constants semàntiques que mapegen cada element de la UI al seu color dins
|
// Alias semàntics als índexs de paleta UI (viuen a `Defaults::UI`). Canviar
|
||||||
// de la paleta compartida (registre "ui" a Resource::Cache, carregada des de
|
// l'aparença d'un component només requereix tocar-los allà; ací només
|
||||||
// data/palettes/sega-cube.pal). Canviar l'aparença d'un component només
|
// reexportem amb els noms que consumeix el codi del joc.
|
||||||
// requereix canviar la seua constant ací — no cal buscar l'índex pel codi.
|
|
||||||
namespace UiColor {
|
namespace UiColor {
|
||||||
|
|
||||||
// Color per al text de l'overlay de debug RenderInfo (F12).
|
constexpr auto RENDER_INFO_TEXT = Defaults::UI::RENDER_INFO_TEXT;
|
||||||
constexpr Uint8 RENDER_INFO_TEXT = 47;
|
constexpr auto RENDER_INFO_SHADOW = Defaults::UI::RENDER_INFO_SHADOW;
|
||||||
|
constexpr auto CANVAS_BG = Defaults::UI::CANVAS_BG;
|
||||||
// Ombra desplaçada (+1, +1) per al mateix overlay. Fosca per a donar
|
|
||||||
// contrast amb qualsevol fons sense haver de pintar una caixa.
|
|
||||||
constexpr Uint8 RENDER_INFO_SHADOW = 34;
|
|
||||||
|
|
||||||
// Color de fons del canvas del joc quan no hi ha escena pintada a tota
|
|
||||||
// la superfície. Útil per a distingir la zona interior del joc en
|
|
||||||
// escalats que deixen banda negra (letterbox, integer, ...).
|
|
||||||
constexpr Uint8 CANVAS_BG = 65;
|
|
||||||
|
|
||||||
} // namespace UiColor
|
} // namespace UiColor
|
||||||
@@ -84,6 +84,32 @@ namespace Defaults {
|
|||||||
constexpr float SPEED_PX_PER_S = 60.0F; // Velocitat base del jugador (sense sprint / slow-zones).
|
constexpr float SPEED_PX_PER_S = 60.0F; // Velocitat base del jugador (sense sprint / slow-zones).
|
||||||
} // namespace Player
|
} // namespace Player
|
||||||
|
|
||||||
|
// Índexs de paleta (sega-cube.pal) i temps en ms per als components
|
||||||
|
// de UI. Centralitzats ací perquè un "tema" viu en un únic lloc: tocar
|
||||||
|
// els colors o durades de l'overlay/notificador no requereix buscar
|
||||||
|
// pel codi. Si algun dia es volen temes múltiples, es pot moure a YAML
|
||||||
|
// sense més impacte que dos accessors extra.
|
||||||
|
namespace UI {
|
||||||
|
// Overlay de RenderInfo (F12).
|
||||||
|
constexpr Uint8 RENDER_INFO_TEXT = 47;
|
||||||
|
constexpr Uint8 RENDER_INFO_SHADOW = 34;
|
||||||
|
|
||||||
|
// Fons del canvas (zona fora del tilemap en letterbox/integer).
|
||||||
|
constexpr Uint8 CANVAS_BG = 65;
|
||||||
|
|
||||||
|
// Preset per defecte del Notifier.
|
||||||
|
constexpr Uint8 NOTIFICATION_TEXT = 197;
|
||||||
|
constexpr Uint8 NOTIFICATION_BG = 96;
|
||||||
|
constexpr int NOTIFICATION_TIME_MS = 4000;
|
||||||
|
|
||||||
|
// Preset per a la confirmació d'eixida (ESC doble). La durada ha
|
||||||
|
// de coincidir amb la del Notifier perquè el missatge i la finestra
|
||||||
|
// de confirmació expiren alhora (veure GlobalInputs::onExit).
|
||||||
|
constexpr Uint8 EXIT_TEXT = 88;
|
||||||
|
constexpr Uint8 EXIT_BG = 40;
|
||||||
|
constexpr int EXIT_TIME_MS = 4000;
|
||||||
|
} // namespace UI
|
||||||
|
|
||||||
// Rutes d'assets per piràmide. Centralitzats ací perquè `GameScene` no
|
// Rutes d'assets per piràmide. Centralitzats ací perquè `GameScene` no
|
||||||
// en contingui cap literal; afegir una piràmide nova serà un altre
|
// en contingui cap literal; afegir una piràmide nova serà un altre
|
||||||
// conjunt de constants + un Config distint passat al ctor.
|
// conjunt de constants + un Config distint passat al ctor.
|
||||||
|
|||||||
Reference in new issue
Block a user