예제 #1
0
        public static bool EvaluateCondition(Actor actor, StatCondition condition)
        {
            bool output       = false;
            int  compareValue = GetComparisonValue(actor, condition);

            //Taking the final comparison value and performing a check based on the evaluator for the condition
            switch (condition.Evaluator)
            {
            case Evaluation.Less:
                output = actor.GetStatValue(condition.Stat) < compareValue;
                break;

            case Evaluation.Greater:
                output = actor.GetStatValue(condition.Stat) > compareValue;
                break;

            case Evaluation.LessEqual:
                output = actor.GetStatValue(condition.Stat) <= compareValue;
                break;

            case Evaluation.GreaterEqual:
                output = actor.GetStatValue(condition.Stat) >= compareValue;
                break;

            case Evaluation.Equal:
                output = actor.GetStatValue(condition.Stat) == compareValue;
                break;

            default:
                break;
            }
            return(output);
        }//EvalCondition
예제 #2
0
        }//EvalCondition

        private static int GetComparisonValue(Actor actor, StatCondition condition)
        {
            int compareValue;

            //Checking for percent value
            if (condition.Percetage)
            {
                //A switch statement is needed in order to properly compare MaxHp to HP or MaxMana to Mana
                switch (condition.Stat)
                {
                case ActorStats.MaxHealthPoints:
                    //TODO if any abilitites decrease MaxHP value then this formula might not work anymore
                    compareValue = LogicHelpers.CalculatePercentage(actor.MaxManaPoints, condition.ComparisonValue);
                    break;

                case ActorStats.HealthPoints:
                    compareValue = LogicHelpers.CalculatePercentage(actor.MaxHealthPoints, condition.ComparisonValue);
                    break;

                case ActorStats.MaxManaPoints:
                    compareValue = LogicHelpers.CalculatePercentage(actor.MaxManaPoints, condition.ComparisonValue);
                    break;

                case ActorStats.ManaPoints:
                    compareValue = LogicHelpers.CalculatePercentage(actor.MaxManaPoints, condition.ComparisonValue);
                    break;

                default:
                    compareValue = LogicHelpers.CalculatePercentage(actor.GetStatValue(condition.Stat), condition.ComparisonValue);
                    break;
                } //end switch
            }     //if
            else
            {
                compareValue = condition.ComparisonValue;
            } //else
            return(compareValue);
        }     //GetCompareValue
예제 #3
0
        }//end Caster Check

        private static bool CheckTargetConditions(Ability ability, Actor target)
        {
            bool allConditionsPassed = false;
            int  conditionsCount     = ability.CasterConditions.Count;
            int  conditionsPassed    = 0;

            #region Stat Condtions
            foreach (StatCondition condition in ability.TargetConditions)
            {
                bool conditionPassed = StatCondition.EvaluateCondition(target, condition);
                if (conditionPassed == true)
                {
                    conditionsPassed += 1;
                }
            }

            if (conditionsPassed == conditionsCount)
            {
                allConditionsPassed = true;
            }
            return(allConditionsPassed);

            #endregion
        }//end Target Check