From da4f78fd0c28fa143b66c1c82e0545488e77af23 Mon Sep 17 00:00:00 2001 From: Sergio Valor Date: Mon, 20 Apr 2026 17:43:32 +0200 Subject: [PATCH] HC-01+PATCH-02: SPEED_PX_PER_S a Defaults::Player MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit La velocitat base del jugador (60 px/s) passa de `constexpr` local a `player.cpp` a `Defaults::Player::SPEED_PX_PER_S`, seguint el patró usat a l'audit d'àudio. `player.cpp` manté un alias local per llegibilitat. Elimina el comentari TODO sobre sprint/slow-zones que PATCH-02 volia fora. --- docs/audit-game.md | 6 +++--- source/game/entities/player.cpp | 6 +++--- source/utils/defaults.hpp | 4 ++++ 3 files changed, 10 insertions(+), 6 deletions(-) diff --git a/docs/audit-game.md b/docs/audit-game.md index b1fe2e0..7216d47 100644 --- a/docs/audit-game.md +++ b/docs/audit-game.md @@ -22,7 +22,7 @@ Els IDs es mantenen estables una vegada assignats. Cada entrada apunta al fitxer | COUP-01 | `core/` inclou `game/ui/notification_presets.hpp` (dependència invertida) | DONE | | DUP-01 | PostFX i CrtPi són dos pipelines duplicats a `options.cpp` | DONE | | PATCH-04 | Reescriure silenciosament `config.yaml` al fallar parseig o versió | DONE | -| HC-01 | `SPEED_PX_PER_S`, caixa de col·lisió i rutes d'assets cablejades | PENDING | +| HC-01 | `SPEED_PX_PER_S`, caixa de col·lisió i rutes d'assets cablejades | DONE (HC-01); PENDING (HC-02, HC-06) | --- @@ -40,7 +40,7 @@ Els IDs es mantenen estables una vegada assignats. Cada entrada apunta al fitxer | ID | Fitxer:línia | Troballa | Severitat | Estat | Notes | |----|--------------|----------|-----------|-------|-------| -| HC-01 | `player.cpp:15` | `SPEED_PX_PER_S = 60.0F` cablejat | Importante | PENDING | Mourea `Defaults::Player` o `player.yaml` | +| 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 | PENDING | Derivar del YAML del player | | 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 | @@ -54,7 +54,7 @@ Els IDs es mantenen estables una vegada assignats. Cada entrada apunta al fitxer | ID | Fitxer:línia | Troballa | Severitat | Estat | Notes | |----|--------------|----------|-----------|-------|-------| | PATCH-01 | `player.cpp:66-77` | Col·lisió per eix fent `AnimatedSprite::update` + revertir + reaplicar | Importante | PENDING | `tryMove(dx, dy, collisionFn)` a la classe base | -| PATCH-02 | `player.cpp:13-15` | Comentari tipus TODO ("si més endavant volem sprint...") | Menor | PENDING | Treure o convertir en feature amb issue | +| PATCH-02 | `player.cpp:13-15` | Comentari tipus TODO ("si més endavant volem sprint...") | Menor | DONE | Eliminat en HC-01 (la constant ja no viu al `.cpp`, sinó a `Defaults::Player`) | | PATCH-03 | `map.cpp:13-15` | `overlapStrict` custom perquè SDL3 considera el toc com intersecció | Menor | PENDING | Si s'usa més, mourea `utils/` | | PATCH-04 | `options.cpp:361-363,371-375,475-480,528-533` | Reescriure silenciosament `config.yaml` al fallar parseig o canviar versió | Crítico | DONE | Helper `backupFile()` que copia a `.bak` si existeix. Cridat abans de cada reescriptura forçada (versió mismatch + catch a `loadFromFile`, `presets:` absent/invàlid/buit + catch a `loadPresetsFromFile`). Primera execució no genera `.bak`. Missatge explícit per motiu de reescriptura | | PATCH-05 | `game_scene.cpp:51` | `if (Audio::get() != nullptr)` com a defensa sobre un singleton Meyers | Menor | PENDING | Assumir invariant, treure | diff --git a/source/game/entities/player.cpp b/source/game/entities/player.cpp index 2855ef1..3235626 100644 --- a/source/game/entities/player.cpp +++ b/source/game/entities/player.cpp @@ -7,12 +7,12 @@ #include "core/resources/resource_cache.hpp" #include "game/map/map.hpp" +#include "utils/defaults.hpp" namespace { - // Velocitat constant. Si més endavant volem sprint, slow zones, etc., - // es pot convertir en un membre modificable. - constexpr float SPEED_PX_PER_S = 60.0F; + // Alias local per reduir soroll; la constant viu a Defaults::Player. + constexpr float SPEED_PX_PER_S = Defaults::Player::SPEED_PX_PER_S; } // namespace diff --git a/source/utils/defaults.hpp b/source/utils/defaults.hpp index 8d5b68e..03b1188 100644 --- a/source/utils/defaults.hpp +++ b/source/utils/defaults.hpp @@ -80,4 +80,8 @@ namespace Defaults { constexpr SDL_Scancode EXIT = SDL_SCANCODE_ESCAPE; } // namespace KeysGame + namespace Player { + constexpr float SPEED_PX_PER_S = 60.0F; // Velocitat base del jugador (sense sprint / slow-zones). + } // namespace Player + } // namespace Defaults