public void Lose(int _amount, ISource _source) { int prev = current; current -= _amount; current = Mathf.Clamp(current, min, max); if (current != prev) { OnResourceLost?.Invoke(prev - current, _source); OnChanged?.Invoke(prev, current); OnFillValueChanged?.Invoke(); } if (current == min) { OnEmpty?.Invoke(); } }
protected virtual void TriggerOnResourceLost(int _amount, ISource _source) => OnResourceLost?.Invoke(_amount, _source);