Пример #1
0
    void HandleSpells()
    {
        if (currentSpell.IsLooping())
        {
            if (playerInput.GetButtonInput(PlayerInput.CAST_BUTTON) && !playerInput.GetButtonInput(PlayerInput.SPRINT_BUTTON) && !isVenting)
            {
                if (!isCasting)
                {
                    currentSpell.Cast(this);
                    fpsController.enableRunning = false;
                    isCasting = true;
                }
            }
            else
            {
                currentSpell.Stop(this);
                fpsController.enableRunning = true;
                isCasting = false;
            }

            if (isCasting)
            {
                AddHeat(currentSpell.GetHeat() * Time.deltaTime);
            }
        }
        else
        {
            // reset isCasting on next frame so the animator can catch it in the last frame
            isCasting = false;
            if (playerInput.GetButtonInput(PlayerInput.CAST_BUTTON_DOWN) && !playerInput.GetButtonInput(PlayerInput.SPRINT_BUTTON) && castTimerElapsed && !isVenting)
            {
                castTimerElapsed = false;
                currentSpell.Cast(this);
                AddHeat(currentSpell.GetHeat());
                isCasting = true;
            }
        }


        if (!currentSpell.IsLooping() && !castTimerElapsed)
        {
            recoveryTimer += Time.deltaTime;
            if (recoveryTimer >= recoveryTime)
            {
                castTimerElapsed = true;
                recoveryTimer    = 0;
            }
        }
    }