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:
@@ -77,7 +77,7 @@ public:
|
||||
// Sets the current buildable asteroid width in tiles. Grows the left
|
||||
// placement bound as the player unlocks asteroid expansions (REQ-EXP-UNLOCK).
|
||||
// Defaults to world.regions.asteroid_width_tiles at construction.
|
||||
void setAsteroidWidth_tiles(int widthTiles) { m_asteroidWidth_tiles = widthTiles; }
|
||||
void setAsteroidWidth_tiles(int widthTiles) { m_state.asteroidWidth_tiles = widthTiles; }
|
||||
|
||||
// Mark a building or construction site for demolition (REQ-BLD-DECONSTRUCT).
|
||||
// A construction site is removed instantly and the full cost is returned.
|
||||
@@ -298,5 +298,4 @@ private:
|
||||
const std::optional<ShipLayoutConfig>&)> m_spawnShip;
|
||||
std::function<bool(const std::string&)> m_isItemUnlocked;
|
||||
std::mt19937& m_rng;
|
||||
int m_asteroidWidth_tiles;
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user