e39b81eb22fea372dcfe88b4593cc04edf9050a2
BuildingSystem is the one system in the codebase that owns the world data it operates on. The ecs/system/ classes already do the opposite — AiSystem and SalvagerSystem hold config and their own scratch, and take EntityAdmin and the other systems as tick arguments — so this is bringing the outlier in line, not inventing a pattern. Phase 1 of that: the buildings vector, both work queues and the tile grid move into a FactoryState struct, still owned by BuildingSystem. Every method reaches through m_state. The public API is untouched, so none of the 33 files that reference BuildingSystem needed a change. DeconstructionEntry moves out of BuildingSystem's private section into FactoryState.h, since the queue that holds it lives there now. m_asteroidWidth_tiles stays on the system: it is not checksummed and is a cached placement bound derived from config and the expansion count, not factory data. The intent is for Simulation to own FactoryState and pass it into the tick methods, leaving the systems stateless over it. FactoryState.h notes explicitly that this is a data/behaviour split and not a step toward putting buildings in the entity model, which architecture.md rules out. 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
Description
No description provided
Languages
C++
96%
CMake
2.2%
Python
1.2%
C
0.6%