#pragma once #include "BeltSystem.h" #include "FactoryState.h" #include "GameConfig.h" #include "Tick.h" // Advances the construction queue and turns a finished site into an operational // building (REQ-BLD-CONSTRUCTION). One site is built at a time, in queue order: // the front site's timer runs, and when it elapses the site becomes a Building — // its ports and buffers are derived from its definition, its belt tile is handed // back to BeltSystem, and the next queued site starts. // // It completes the building itself rather than handing the finished site back to // BuildingSystem: everything materialisation needs is either in FactoryState, the // config, or a free function (see BuildingBuffers.h, PortGeometry.h), so there is // no intermediate value to pass and no ordering rule between two calls. // // Holds only the config; the world it works on arrives per tick, like the other // systems in lib/ecs/system. class ConstructionSystem { public: explicit ConstructionSystem(const GameConfig& config) : m_config(config) {} void tick(FactoryState& state, BeltSystem& belts, Tick currentTick); private: const GameConfig& m_config; };