예제 #1
0
        /// <summary>
        /// Использовать способность
        /// </summary>
        /// <param name="type">Тип способности</param>
        /// <param name="dir">Направление способности</param>
        /// <returns>true если способность была применена</returns>
        public void TryUseAbility(AbilityTypes type, Vector2 dir, int senderTeamID)
        {
            //Если у персонажа есть способность
            if (m_Abilities.ContainsKey(type))
            {
                CreatureAbility ability = m_Abilities[type];

                int abilityCode = CanUseABility(ability);
                if (abilityCode == ABILITY_CAN_USE)
                {
                    ability.Use();

                    LaunchProjectile(type, dir, senderTeamID);

                    if (OnAbilityUse != null)
                    {
                        OnAbilityUse(type);
                    }
                }
                else
                {
                    Debug.Log("CANT USE ABILITY. REASON " + abilityCode);
                }
            }
        }
예제 #2
0
        public void Init()
        {
            SelectedAbilityEffect.gameObject.SetActive(false);

            m_Abilities = new Dictionary <AbilityTypes, CreatureAbility>();
            for (int i = 0; i < Abilities.Length; i++)
            {
                if (!m_Abilities.ContainsKey(Abilities[i]))
                {
                    CreatureAbility ability = new CreatureAbility(Abilities[i]);
                    m_Abilities.Add(Abilities[i], ability);
                }
            }
        }
예제 #3
0
        /// <summary>
        /// Внутреняя функция проверки возможности использовать способность с получением типов причин отказа
        /// </summary>
        int CanUseABility(CreatureAbility ability)
        {
            //Если у способности нет зарядов и она не в откате
            if (!ability.HasAmmo)
            {
                Debug.LogWarning("No ammo");
                return(ABILITY_CODE_NO_AMMO);
            }
            else if (ability.IsCooldown)             //Если способность в откате
            {
                Debug.LogWarning("Is in cooldown");
                return(ABILITY_CODE_COOLDOWN);
            }

            return(ABILITY_CAN_USE);;
        }