コード例 #1
0
    //sets aiPlayer.activeSpecialAbility
    private void EvaluateSpecial()
    {
        bool specialAbilityReady = false;
        int  i;

        for (i = 0; i < aiPlayer.abilities.abilityArray.Length && !specialAbilityReady; i++)
        {
            ISpecial potentialAbility = aiPlayer.abilities.abilityArray[i];
            //maybe to "dumbify" ai make it some ratio of time since ready to full cooldown?
            //note: empty ability always returns false on isReady
            if (potentialAbility.isReady() && potentialAbility.energyRequired < aiPlayer.player.resources.currentEnergy && MatchesAbilityPref(potentialAbility))
            {
                //Decide whether to use ability or continue searching (sorry this got kinda complicated!), might want a separate method?

                if (potentialAbility.EvaluateCoopUse(aiPlayer.player, aiPlayer.targetedEnemy, aiPlayer.tm))
                {
                    aiPlayer.activeSpecialAbility = potentialAbility;
                }
                else
                {
                    aiPlayer.activeSpecialAbility = null;
                }

                if (aiPlayer.activeSpecialAbility != null)
                {
                    specialAbilityReady = true;
                }

                //Debug.Log("Evaluating ability " + i);
            }
        }
    }