#pragma once #include "Event.h" #include "Tick.h" #include "entt/entity/entity.hpp" // The kind of tool that produced a beam. Used by the renderer to choose the // beam color (REQ-SHP-FIRING-BEAM). enum class BeamKind { Weapon, Repair, Salvage, }; // Transient record emitted whenever a weapon fires, a repair tool starts a heal // cycle, or a salvage module starts a collection cycle (REQ-SHP-FIRING, // REQ-SHP-FIRING-BEAM). Buffered in a sim-owned vector during the tick, then // drained and re-emitted via EventManager by the UI frame handler. struct BeamFiredEvent : public Event { BeamFiredEvent() = default; BeamFiredEvent(BeamKind kind, entt::entity shooter, entt::entity target, Tick emittedAt) : kind(kind), shooter(shooter), target(target), emittedAt(emittedAt) {} BeamKind kind = BeamKind::Weapon; entt::entity shooter = entt::null; entt::entity target = entt::null; Tick emittedAt = 0; };