# HG changeset patch # User IBBoard # Date 1327769879 0 # Node ID 676f5ce041768b3fbef71ed3f9cced098269fd07 # Parent 8811737baebf64d127149950e52d1db531b34a1d Re #379: Fix validation of requirements to check for unit * Add method to Army to differentiate "all requirements" from "requirements relevant to adding a unit" diff -r 8811737baebf -r 676f5ce04176 API/Objects/Army.cs --- a/API/Objects/Army.cs Sun Jan 22 19:17:06 2012 +0000 +++ b/API/Objects/Army.cs Sat Jan 28 16:57:59 2012 +0000 @@ -12,6 +12,7 @@ using ICSharpCode.SharpZipLib.Zip; using IBBoard.WarFoundry.API.Objects.Requirement; using IBBoard.Lang; +using IBBoard.Collections; namespace IBBoard.WarFoundry.API.Objects { @@ -272,6 +273,27 @@ return Race.GetRequirements(); } + public ICollection GetAddingUnitRequirements(UnitType addingType) + { + Unit[] units = GetUnits(); + SimpleSet unitTypes = new SimpleSet(); + unitTypes.Add(addingType); + + foreach (Unit unit in units) + { + unitTypes.Add(unit.UnitType); + } + + SimpleSet requirements = new SimpleSet(); + + foreach (UnitType unitType in unitTypes) + { + requirements.AddRange(unitType.GetRequirements()); + } + + return requirements; + } + internal void OnArmyCompositionChanged() { if (ArmyCompositionChanged != null) diff -r 8811737baebf -r 676f5ce04176 API/Objects/Requirement/RequirementHandler.cs --- a/API/Objects/Requirement/RequirementHandler.cs Sun Jan 22 19:17:06 2012 +0000 +++ b/API/Objects/Requirement/RequirementHandler.cs Sat Jan 28 16:57:59 2012 +0000 @@ -50,7 +50,7 @@ Validation result = Validation.Passed; failureMessages = new List(); - foreach (IRequirement requirement in army.GetRequirements()) + foreach (IRequirement requirement in army.GetAddingUnitRequirements(unitType)) { if (!Validates.AsOkay(requirement.AllowsAdding(unitType, army))) {