refactor(game): COUP-02 inject MapInfo snapshot into Player
Afegit `Map::Info` (POD trivialment copiable) que empaqueta playfield, pitch, grid, tile_size, tilemap_origin + 2 punters a funció (collides, inside_playfield). `Map::makeInfo()` el construeix a partir dels globals del namespace. `Player` ara rep `const Map::Info&` al ctor i en guarda una còpia plana (`map_`), substituint totes les lectures de `Map::*` per `map_.*`. La inclusió `#include "game/map/map.hpp"` puja al header per la dependència de `Map::Info`; player.cpp deixa d'incloure'l (transitiu). Només el Player es desacobla — momies, roques i `loadFromLevel` continuen llegint `Map::*` directament, com diu la nota original del audit (mentre hi hagi un Map global actiu, l'acoblament és acceptable). Si quan s'acabi PATCH-01 algun consumidor extra chirría, COUP-02b en una rama nova. Smoke tests 13/13 OK; log Game start → Bye! sota xvfb-run idèntic al baseline. clang-tidy i cppcheck nets sobre els fitxers modificats. Refs: docs/audit-game.md (COUP-02). Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
1 parent
a3b03b87be
commit
64e0178ee9
5 files changed
+77
-21
No files matched your search
@@ -104,4 +104,22 @@ namespace Map {
|
||||
return box.x >= static_cast<float>(playfield_x) && box.y >= static_cast<float>(playfield_y) && box.x + box.w <= static_cast<float>(playfield_x + playfield_w) && box.y + box.h <= static_cast<float>(playfield_y + playfield_h);
|
||||
}
|
||||
|
||||
auto makeInfo() -> Info {
|
||||
return {
|
||||
.playfield_x = playfield_x,
|
||||
.playfield_y = playfield_y,
|
||||
.playfield_w = playfield_w,
|
||||
.playfield_h = playfield_h,
|
||||
.pitch_x = pitch_x,
|
||||
.pitch_y = pitch_y,
|
||||
.grid_cols = grid_cols,
|
||||
.grid_rows = grid_rows,
|
||||
.tile_size = tile_size,
|
||||
.tilemap_origin_x = tilemap_origin_x,
|
||||
.tilemap_origin_y = tilemap_origin_y,
|
||||
.collides = &collides,
|
||||
.inside_playfield = &insidePlayfield,
|
||||
};
|
||||
}
|
||||
|
||||
} // namespace Map
|
||||
Reference in new issue
Block a user