say where the factory's data lives, now that it has moved

The FactoryState migration finished some time ago -- every system that touches
the factory takes the state as an argument and holds none of it, and the const
surface has become free functions over the struct -- but the comments still
described the state of affairs two refactors back.

FactoryState.h claimed BuildingSystem holds a reference and that passing the
state into the tick methods was the remaining step, gated on ~180 const call
sites that no longer exist. It now says what is true, and names what genuinely
has not moved: the id counter and the block stock, factory data still living on
Simulation behind callbacks.

architecture.md described neither FactoryState nor FactoryQueries at all, so the
Buildings section told a reader that buildings are a plain vector and nothing
about who owns it or how it is read. It gains that section, including why
ConstructionSystem completes a building itself.

BuildingSystem.h had collected ten comment blocks whose declarations had moved
out from under them -- the whole Queries section was four comments and no
functions, and the deconstruction-queue tick comment sat above tickBeltPull,
documenting the wrong function. Those are gone; tickBeltPull gets a comment
describing what it actually does, and the Queries banner now points at where the
queries went. No code changed.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Ne3mejABZoLWKLh8fgpM3x
This commit is contained in:
2026-08-19 16:47:54 +02:00
parent fbb1af85e3
commit 5f41bd6855
3 changed files with 59 additions and 57 deletions

View File

@@ -33,10 +33,15 @@ struct DeconstructionEntry
// arrives as a tick argument instead of being owned by the system.
//
// Owned by Simulation (and by ArenaSimulation in the balancing tool), not by the
// systems that operate on it. BuildingSystem holds a reference. The remaining step
// is to pass this into the tick methods instead, so the systems become stateless
// over it — that one is gated on the query surface, which today reaches the data
// through BuildingSystem's ~180 const call sites.
// systems that operate on it. Every system that touches the factory —
// BuildingSystem, ConstructionSystem, DeconstructionSystem — takes it as an argument
// and holds none of it, so each is stateless over the world it works on. Reading it
// needs no system at all: the queries are free functions over this struct
// (FactoryQueries.h, PlacementRules.h, ProductionRules.h).
//
// What is not here yet is the data those systems still reach back into Simulation
// for through callbacks: the building-id counter and the global building block stock,
// both of which are factory data living outside the factory's state.
struct FactoryState
{
std::vector<Building> buildings;