using Unity.Entities; using Unity.NetCode; namespace ProjectM.Simulation { /// /// The player's expedition ready-check flag — a plain send-to-all [GhostField] byte on the player ghost so /// EVERY client can render the "N/M READY" staging panel (owner-only would hide teammates' readiness). Written /// server-only by ReadyToggleSystem from the RPC — honored during Staging /// AND the Launching countdown (an un-ready during the countdown is the launch-abort escape hatch); cleared for /// all players by RunDirectorSystem on the Returning edge. The N/M derivation counts live PlayerTag ghosts, /// which is valid ONLY because the party is co-located at base while Staging (the co-location invariant — N7); /// ready toggles are refused in every other lifecycle state. /// public struct PlayerReady : IComponentData { /// 1 = ready to launch; 0 = not ready. [GhostField] public byte Value; } }