namespace AlienAttack.MonoGame.Audio; public sealed class RateLimiter(float cooldownSeconds) { private readonly float _cooldownSeconds = cooldownSeconds <= 0 ? 0.0001f : cooldownSeconds; private float _timer = 0f; public void Update(float deltaTime) { _timer -= deltaTime; if (_timer < 0f) _timer = 0f; } public bool TryConsume() { if (_timer > 0f) return false; _timer = _cooldownSeconds; return true; } }