#pragma once #include #include "BeamFiredEvent.h" #include "Tick.h" #include "entt/entity/entity.hpp" class EntityAdmin; // World-mutation system for repair modules: each tool runs a cycle on its own // cooldown. When a cycle starts it picks a target (the RepairExecutor-set target, // else the nearest damaged friendly in range), emits a repair beam, and schedules // the heal for mid-beam (kBeamImpactDelayTicks later) — mirroring weapon firing. // Runs every tick, independent of behavior selection. class RepairSystem { public: explicit RepairSystem(EntityAdmin& admin); void tick(Tick currentTick, std::vector& outBeamFiredEvents); private: struct PendingHeal { entt::entity target; float amountHp; Tick appliesAt; }; void applyPendingHeals(Tick currentTick); EntityAdmin& m_admin; std::vector m_pendingHeals; };