DUP-05: clampToPlayfield() extret de Player::update

Els 4 `const auto` MIN_/MAX_ i els dos `std::clamp` es mouen a un mètode
privat `clampToPlayfield`. Separa la responsabilitat de mantenir la
caixa dins del playfield de la integració de moviment.
This commit is contained in:
JailDesigner committed 2026-04-20 18:05:08 +02:00
1 parent cb2364490f
commit df059a6fcb
3 files changed
+9 -1

No files matched your search

+1 -1
View File
@@ -34,7 +34,7 @@ Els IDs es mantenen estables una vegada assignats. Cada entrada apunta al fitxer
| DUP-02 | `player.cpp:100-140` | `snapToHorizontalLane` i `snapToVerticalLane` són el mateix algorisme amb eixos permutats | Importante | DONE | `snapToLane(dt, base, pitch, max_idx, get_pos, set_pos)` pren member-fn pointers; els dos wrappers deleguen només amb `Map::pitch_*`/`grid_*` distints | | DUP-02 | `player.cpp:100-140` | `snapToHorizontalLane` i `snapToVerticalLane` són el mateix algorisme amb eixos permutats | Importante | DONE | `snapToLane(dt, base, pitch, max_idx, get_pos, set_pos)` pren member-fn pointers; els dos wrappers deleguen només amb `Map::pitch_*`/`grid_*` distints |
| DUP-03 | `options.cpp:14-62` | Tres parelles `enumToString`/`enumFromString` amb la mateixa forma | Menor | DONE | Tres `constexpr std::array<std::pair<Enum, string_view>, N>` + helpers `enumToString`/`enumFromString` plantilla. La primera entrada és el fallback (documentat). També elimina HC-07 | | DUP-03 | `options.cpp:14-62` | Tres parelles `enumToString`/`enumFromString` amb la mateixa forma | Menor | DONE | Tres `constexpr std::array<std::pair<Enum, string_view>, N>` + helpers `enumToString`/`enumFromString` plantilla. La primera entrada és el fallback (documentat). També elimina HC-07 |
| DUP-04 | `options.cpp:79-149` | Cada `parse*` repeteix `if (node.contains) { ... get_value<T> }` | Menor | DONE | Afegit `readField<T>(node, key, dst)` plantilla a l'anonymous namespace. Aplicat a les 7 funcions `parse*` + `parsePostFXPreset`/`parseCrtPiPreset` | | DUP-04 | `options.cpp:79-149` | Cada `parse*` repeteix `if (node.contains) { ... get_value<T> }` | Menor | DONE | Afegit `readField<T>(node, key, dst)` plantilla a l'anonymous namespace. Aplicat a les 7 funcions `parse*` + `parsePostFXPreset`/`parseCrtPiPreset` |
| DUP-05 | `player.cpp:81-88` | Càlcul `MIN_/MAX_` + `clamp` per eix és la mateixa fórmula que el snap | Menor | PENDING | Fold en helper | | DUP-05 | `player.cpp:81-88` | Càlcul `MIN_/MAX_` + `clamp` per eix és la mateixa fórmula que el snap | Menor | DONE | Extret `Player::clampToPlayfield()`; `update()` el crida després de la col·lisió per eix |
## 2. Hardcoding ## 2. Hardcoding
+4
View File
@@ -105,6 +105,10 @@ void Player::update(float delta_time) {
setPosY(NEW_Y); setPosY(NEW_Y);
if (Map::collides(baseBox())) { setPosY(OLD_Y); } if (Map::collides(baseBox())) { setPosY(OLD_Y); }
clampToPlayfield();
}
void Player::clampToPlayfield() {
// Límits de la zona jugable: la caixa de col·lisió no pot eixir del // Límits de la zona jugable: la caixa de col·lisió no pot eixir del
// playfield (muros). El cap del sprite sí pot sobresortir per damunt. // playfield (muros). El cap del sprite sí pot sobresortir per damunt.
const auto MIN_X = static_cast<float>(Map::playfield_x - collision_x_offset); const auto MIN_X = static_cast<float>(Map::playfield_x - collision_x_offset);
+4
View File
@@ -52,6 +52,10 @@ class Player : public AnimatedSprite {
// a referència per al Z-order. // a referència per al Z-order.
[[nodiscard]] auto baseBox() const -> SDL_FRect; [[nodiscard]] auto baseBox() const -> SDL_FRect;
// Clamp de la caixa de col·lisió al playfield (no al sprite sencer:
// el cap pot sobresortir pel mur superior sense afectar el joc).
void clampToPlayfield();
// Snap cap al passadís perpendicular a la direcció premuda. Si la caixa // Snap cap al passadís perpendicular a la direcció premuda. Si la caixa
// de col·lisió està a ≤ collision_size/2 d'una lane, s'hi aproxima // de col·lisió està a ≤ collision_size/2 d'una lane, s'hi aproxima
// gradualment (a velocitat de moviment). Permet canviar de direcció // gradualment (a velocitat de moviment). Permet canviar de direcció