public bool CheckCustomCombatMethod(CacheUnit unit) { foreach (Func <CacheUnit, bool> item in FcriteriaCombat.GetInvocationList()) { if (!item(unit)) { return(false); } } return(true); }
///<summary> ///Check Combat ///</summary> public bool CheckCombatConditionMethod(ConditionCriteraTypes conditions = ConditionCriteraTypes.All, CacheUnit unit = null) { //Order in which tests are conducted.. //Units in Range (Not Cluster) //Clusters //Single Target //If all are null or any of them are successful, then we test Custom Conditions //Custom Condition //Reset Last Condition LastConditionPassed = ConditionCriteraTypes.None; bool TestCustomConditions = false; bool FailedCondition = false; if (conditions.HasFlag(ConditionCriteraTypes.Cluster) && ClusterConditions.Count > 0) { foreach (var condition in ClusterConditions) { FailedCondition = false; foreach (Func <bool> item in condition.Criteria.GetInvocationList()) { if (!item()) { FailedCondition = true; break; } } //Last Condition did not fail.. (Success!) if (!FailedCondition) { LastConditionPassed = ConditionCriteraTypes.Cluster; LastClusterConditionSuccessful = condition; TestCustomConditions = true; break; } } } if ((!TestCustomConditions || FailedCondition) && conditions.HasFlag(ConditionCriteraTypes.SingleTarget) && SingleUnitCondition.Count > 0) { //We iterate each condition in the list and test the criteria. foreach (var condition in SingleUnitCondition) { FailedCondition = false; foreach (Func <CacheUnit, bool> item in condition.Criteria.GetInvocationList()) { if (!item(unit)) { FailedCondition = true; break; } } //Last Condition did not fail.. (Success!) if (!FailedCondition) { LastConditionPassed = ConditionCriteraTypes.SingleTarget; TestCustomConditions = true; break; } } } //If TestCustomCondtion failed, and FailedCondition is true.. then we tested a combat condition. //If FailedCondition is false, then we never tested a condition. if (!TestCustomConditions && !TestCustomCombatConditions) { return(false); //&&FailedCondition } foreach (Func <CacheUnit, bool> item in FcriteriaCombat.GetInvocationList()) { if (!item(unit)) { return(false); } } return(true); }
///<summary> ///Check Combat ///</summary> public bool CheckCombatConditionMethod(ConditionCriteraTypes conditions = ConditionCriteraTypes.All) { //Order in which tests are conducted.. //Units in Range (Not Cluster) //Clusters //Single Target //If all are null or any of them are successful, then we test Custom Conditions //Custom Condition //Reset Last Condition LastConditionPassed = ConditionCriteraTypes.None; bool TestCustomConditions = false; bool FailedCondition = false; if (conditions.HasFlag(ConditionCriteraTypes.ElitesInRange) && FElitesInRangeConditions != null) { foreach (Func <bool> item in FElitesInRangeConditions.GetInvocationList()) { if (!item()) { FailedCondition = true; break; } } if (!FailedCondition) { TestCustomConditions = true; LastConditionPassed = ConditionCriteraTypes.ElitesInRange; } } if ((!TestCustomConditions || FailedCondition) && conditions.HasFlag(ConditionCriteraTypes.UnitsInRange) && FUnitsInRangeConditions != null) { FailedCondition = false; foreach (Func <bool> item in FUnitsInRangeConditions.GetInvocationList()) { if (!item()) { FailedCondition = true; break; } } if (!FailedCondition) { LastConditionPassed = ConditionCriteraTypes.UnitsInRange; TestCustomConditions = true; } } if ((!TestCustomConditions || FailedCondition) && conditions.HasFlag(ConditionCriteraTypes.Cluster) && FClusterConditions != null) { FailedCondition = false; if (!FClusterConditions.Invoke()) { FailedCondition = true; } if (!FailedCondition) { LastConditionPassed = ConditionCriteraTypes.Cluster; TestCustomConditions = true; } } if ((!TestCustomConditions || FailedCondition) && conditions.HasFlag(ConditionCriteraTypes.SingleTarget) && FSingleTargetUnitCriteria != null) { FailedCondition = false; foreach (Func <bool> item in FSingleTargetUnitCriteria.GetInvocationList()) { if (!item()) { FailedCondition = true; break; } } if (!FailedCondition) { LastConditionPassed = ConditionCriteraTypes.SingleTarget; TestCustomConditions = true; } } //If TestCustomCondtion failed, and FailedCondition is true.. then we tested a combat condition. //If FailedCondition is false, then we never tested a condition. if (!TestCustomConditions && !TestCustomCombatConditions) { return(false); //&&FailedCondition } foreach (Func <bool> item in FcriteriaCombat.GetInvocationList()) { if (!item()) { return(false); } } return(true); }