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); }
private void EnergyTimer_OnTick(object sender, float e) { ActivityEnergy += RechargeRate; if (ActivityEnergy >= MaxActivityEnergy) { ActivityEnergy = MaxActivityEnergy; } OnEnergyUpdate?.Invoke(ActivityEnergy); }
private void ConsumeEnergy(float value) { ActivityEnergy -= value; if (ActivityEnergy <= 0f) { ActivityEnergy = 0f; } OnEnergyUpdate?.Invoke(ActivityEnergy); }