Exemple #1
0
        public void FinishCooldown()
        {
            if (Cooldown == 0)
            {
                return;
            }

            CooldownRemaining = 0;
            CooldownFinished?.Invoke(this);
        }
Exemple #2
0
        public void TickCooldown()
        {
            if (!IsOnCooldown)
            {
                return;
            }

            CooldownRemaining--;

            CooldownUpdated?.Invoke(this);

            if (CooldownRemaining > 0)
            {
                return;
            }

            CooldownRemaining = 0;
            CooldownFinished?.Invoke(this);
        }
Exemple #3
0
        //NOTE: корутина вместо асинка чтобы ждать время игры, а не реалтайм
        private IEnumerator WaitCooldown()
        {
            CooldownStarted?.Invoke();

            tracker.Dispose();
            float currentTime = 0f;

            while (currentTime <= CoolDownTime)
            {
                CooldownUpdated?.Invoke(currentTime);

                currentTime += Time.deltaTime;
                yield return(null);
            }

            tracker.Init();

            CooldownFinished?.Invoke();
        }