namespace ProjectM.Simulation
{
///
/// Shared tick helpers for the project-wide convention that a stored raw "next tick" value of 0 means
/// "ready / nothing pending". A computed absolute tick (ServerTick + delay) can legitimately equal 0 at
/// wraparound, which would be misread as "ready"; coerces it to 1 (a
/// 1-tick error only at the single wrap instant). Mirrors the guard already inlined in
/// , applied consistently at every cooldown/spawn "next tick" write
/// (AbilityCooldown.NextFireTick, EnemyAttackCooldown.NextAttackTick,
/// EnemySpawner.NextSpawnTick).
///
public static class TickUtil
{
/// Coerce a computed raw tick of 0 to 1 so it never collides with the "0 = ready" sentinel.
public static uint NonZero(uint tick) => tick == 0u ? 1u : tick;
}
}