using Unity.Entities; using Unity.NetCode; namespace ProjectM.Simulation { /// /// Replicated Husk attack-telegraph signal. While is non-zero the Husk is /// "winding up" to strike; EnemyAISystem sets it ~ before the strike /// lands, and the strike fires when the tick elapses. This is a [GhostField] (the only replicated Husk field /// beyond the stock LocalTransform) so the CLIENT can play a ~0.3s pre-strike cue — the client has none of the /// server-only timing inputs (EnemyStats / EnemyAttackCooldown), so the wind-up MUST be replicated. A uint tick /// (not a [GhostEnabledBit]) so the cue can ramp/countdown and survive a missed snapshot (absolute, not an edge). /// public struct AttackWindup : IComponentData { /// Server tick the wind-up completes + the strike lands (0 = not winding up; scheduled via TickUtil.NonZero). [GhostField] public uint WindUpUntilTick; } }