private void Consume()
    {
        _currentAmount -= _consumingTimeStep * Time.deltaTime;

        if (_currentAmount <= 0)
        {
            _currentAmount = 0;

            // Deactivates automatically until full reloading
            _isActive = false;

            // Starts full reloading
            _fullReloading = true;

            // Informs that boost speed was deactivated
            if (GameEventsManager.OnBoostActivated != null)
            {
                GameEventsManager.OnBoostActivated(false);
            }
        }

        if (GameEventsManager.OnBoostAmountChanged != null)
        {
            GameEventsManager.OnBoostAmountChanged(_currentAmount / _maxAmount);
        }
    }
    private void Reload()
    {
        if (_currentAmount >= _maxAmount)
        {
            return;
        }

        _currentAmount += _consumingTimeStep * Time.deltaTime;

        if (_currentAmount >= _maxAmount)
        {
            _currentAmount = _maxAmount;
            _fullReloading = false;
        }

        if (GameEventsManager.OnBoostAmountChanged != null)
        {
            GameEventsManager.OnBoostAmountChanged(_currentAmount / _maxAmount);
        }
    }
    private void Setup(float reloadingStep, float consumingStep, float maxAmount)
    {
        _fullReloading = true;

        _reloadingTimeStep = reloadingStep;
        _consumingTimeStep = consumingStep;
        _maxAmount         = maxAmount;

        _currentAmount = 0;

        _isActive = false;

        if (GameEventsManager.OnBoostAmountChanged != null)
        {
            GameEventsManager.OnBoostAmountChanged(_currentAmount / _maxAmount);
        }

        if (GameEventsManager.OnBoostActivated != null)
        {
            GameEventsManager.OnBoostActivated(false);
        }

        _enabled = true;
    }