# HG changeset patch # User IBBoard # Date 1304277383 0 # Node ID 506af4cbe3f52518da6c96f1609a92908b5bf9b3 # Parent c19e61262400aaba9dc9b51477f1caab5ba18537 Fixes #33: Add centralised requirement checker * Implement validation with messages for adding (Other features added under #27 and not separately marked) diff -r c19e61262400 -r 506af4cbe3f5 API/Objects/Requirement/RequirementHandler.cs --- a/API/Objects/Requirement/RequirementHandler.cs Sun May 01 15:39:05 2011 +0000 +++ b/API/Objects/Requirement/RequirementHandler.cs Sun May 01 19:16:23 2011 +0000 @@ -14,40 +14,48 @@ private RequirementHandler() { } - - public static Validation ValidateArmy (Army army) + + + public static Validation ValidateArmy(Army army) { ICollection ignored; return ValidateArmy(army, out ignored); } - public static Validation ValidateArmy (Army army, out ICollection failureMessages) - { + public static Validation ValidateArmy(Army army, out ICollection failureMessages) + { Validation result = Validation.Passed; - failureMessages = new List(); - - foreach (IRequirement requirement in army.GetRequirements()) - { - if (!Validates.AsOkay(requirement.ValidatesArmy(army))) - { + failureMessages = new List(); + + foreach (IRequirement requirement in army.GetRequirements()) + { + if (!Validates.AsOkay(requirement.ValidatesArmy(army))) + { result = Validation.Failed; - failureMessages.Add(requirement.GetValidationMessage(army)); - } - } - - return result; - } + failureMessages.Add(requirement.GetValidationMessage(army)); + } + } + + return result; + } public static Validation AllowsAdding(UnitType unitType, Army army) { + ICollection ignored; + return AllowsAdding(unitType, army, out ignored); + } + + public static Validation AllowsAdding(UnitType unitType, Army army, out ICollection failureMessages) + { Validation result = Validation.Passed; - + failureMessages = new List(); + foreach (IRequirement requirement in army.GetRequirements()) { if (!Validates.AsOkay(requirement.AllowsAdding(unitType, army))) { result = Validation.Failed; - break; + failureMessages.Add(requirement.GetAllowsAddingMessage(unitType, army)); } }