Beispiel #1
0
    internal virtual void Update()
    {
        switch (type)
        {
        case SkillType.Active:
            if (!isInCoolDown)
            {
                if (isToggled)
                {
                    if (!prevIsToggled)
                    {
                        if (characterAmmo.CheckAmmo(ammoCost))
                        {
                            prevIsToggled = true;
                        }
                        else
                        {
                            isToggled = false;
                        }
                    }
                    else
                    {
                        if (characterAmmo.UseAmmo(toggleAmmoCostPerSecond * Time.deltaTime))
                        {
                            ActiveEffect();
                        }
                        else
                        {
                            isToggled = false;
                            SetCoolDown();
                        }
                    }

                    prevIsToggled = true;
                }
                else
                {
                    if (prevIsToggled)
                    {
                        SetCoolDown();
                    }
                    prevIsToggled = false;
                }

                if (isAiming)
                {
                    if (!prevIsAiming)
                    {
                        if (characterAmmo.CheckAmmo(ammoCost))
                        {
                            prevIsAiming = true;
                        }
                        else
                        {
                            isAiming = false;
                        }
                    }
                }
                else
                {
                    prevIsAiming = false;
                }

                if (castConfirmed)
                {
                    if (isChanneling)
                    {
                        if (currentChannelTime <= 0)
                        {
                            characterAmmo.UseAmmo(ammoCost);
                        }
                        ActiveEffect();
                        isAiming            = false;
                        prevIsAiming        = false;
                        currentChannelTime += Time.deltaTime;
                        if (currentChannelTime >= channelTime)
                        {
                            SetCoolDown();
                        }
                    }
                    else
                    {
                        characterAmmo.UseAmmo(ammoCost);
                        ActiveEffect();
                        isAiming     = false;
                        prevIsAiming = false;
                        SetCoolDown();
                    }
                }
            }
            else
            {
                isAiming      = false;
                prevIsAiming  = false;
                isToggled     = false;
                prevIsToggled = false;

                CoolDown();
            }
            break;

        case SkillType.Passive:
            PassiveEffect();
            break;
        }
    }