Ejemplo n.º 1
0
        private void Update()
        {
            if (_colliders.Count > 0)
            {
                if (_applyingDamage)
                {
                    return;
                }

                if (_currentEnergy <= 0)
                {
                    _statusEffectId = statusEffect.AddStatusEffect(damageWhenNoEnergy);
                    _applyingDamage = true;
                }
                else
                {
                    _currentEnergy -= energyDecrease * Time.deltaTime;
                    OnEnergyUpdate?.Invoke(_currentEnergy);
                }

                return;
            }

            if (_currentEnergy >= maxEnergy)
            {
                return;
            }
            _currentEnergy += energyRegen * Time.deltaTime;
            _currentEnergy  = Math.Min(_currentEnergy, maxEnergy);
            OnEnergyUpdate?.Invoke(_currentEnergy);
        }
Ejemplo n.º 2
0
 private void EnergyTimer_OnTick(object sender, float e)
 {
     ActivityEnergy += RechargeRate;
     if (ActivityEnergy >= MaxActivityEnergy)
     {
         ActivityEnergy = MaxActivityEnergy;
     }
     OnEnergyUpdate?.Invoke(ActivityEnergy);
 }
Ejemplo n.º 3
0
 private void ConsumeEnergy(float value)
 {
     ActivityEnergy -= value;
     if (ActivityEnergy <= 0f)
     {
         ActivityEnergy = 0f;
     }
     OnEnergyUpdate?.Invoke(ActivityEnergy);
 }