move the asteroid width bound into FactoryState
It was the last piece of mutable world data BuildingSystem still owned, and the placement queries need it: isPlacementValid reaches it through bodyCellsWithinWorldBounds, so those queries cannot become free functions over FactoryState while the bound lives on the system. Left out of the checksum deliberately. It is derived from config and Simulation's expansion count, which is folded already, so adding it would change every checksum without adding information. Still seeded from config by BuildingSystem's constructor, which keeps the initialization at exactly the point it happened before; reset() clears the state before initializeSubsystems() rebuilds the system, so the ordering holds. Verified with a golden-checksum capture before and after — all four sample ticks identical. Co-Authored-By: Claude <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01YHcUerKAZKWNvSKJxYKbnG
This commit is contained in:
@@ -40,8 +40,8 @@ BuildingSystem::BuildingSystem(const GameConfig& config,
|
||||
, m_spawnShip(std::move(spawnShip))
|
||||
, m_isItemUnlocked(std::move(isItemUnlocked))
|
||||
, m_rng(rng)
|
||||
, m_asteroidWidth_tiles(config.world.regions.asteroidWidth_tiles)
|
||||
{
|
||||
m_state.asteroidWidth_tiles = config.world.regions.asteroidWidth_tiles;
|
||||
}
|
||||
|
||||
// ---------------------------------------------------------------------------
|
||||
@@ -340,7 +340,7 @@ bool BuildingSystem::bodyCellsWithinWorldBounds(const std::vector<QPoint>& bodyC
|
||||
QPoint anchor) const
|
||||
{
|
||||
const int heightTiles = m_config.world.heightTiles;
|
||||
const int leftEdgeX = -m_asteroidWidth_tiles;
|
||||
const int leftEdgeX = -m_state.asteroidWidth_tiles;
|
||||
for (const QPoint& cell : bodyCells)
|
||||
{
|
||||
const QPoint worldCell = anchor + cell;
|
||||
|
||||
Reference in New Issue
Block a user