# HG changeset patch # User IBBoard # Date 1304259831 0 # Node ID 2a9c046be55aedc8de803a5e5c19b62e8846e5d2 # Parent dbe7ccb1e5578fb7dafacfc3731d14d76eef8d5c Re #345: Add failure message to requirements * Implement message creation for "at least" requirement diff -r dbe7ccb1e557 -r 2a9c046be55a API/Objects/Requirement/RequiresAtLeastNUnitsRequirement.cs --- a/API/Objects/Requirement/RequiresAtLeastNUnitsRequirement.cs Sun May 01 13:56:20 2011 +0000 +++ b/API/Objects/Requirement/RequiresAtLeastNUnitsRequirement.cs Sun May 01 14:23:51 2011 +0000 @@ -4,6 +4,7 @@ using System; using System.Collections.Generic; using IBBoard.WarFoundry.API.Objects; +using System.Text; namespace IBBoard.WarFoundry.API.Objects.Requirement { @@ -180,8 +181,28 @@ protected override string GetValidationFailedMessage (Army army) { - string message = ""; - return message; + StringBuilder sb = new StringBuilder(); + sb.Append("Army must contain: "); + sb.Append(String.Join("; ", GetFailedRequirements(army).ToArray())); + sb.Append("."); + return sb.ToString(); + } + + private List GetFailedRequirements(Army army) + { + List failures = new List(); + + foreach (UnitCountRequirementData requirement in requiredTypes) + { + int unitCount = army.GetUnitTypeCount(requirement.UnitType); + + if (unitCount < requirement.Count) + { + failures.Add(requirement.Count + " × " + requirement.UnitType.Name + " (have " + unitCount + ")"); + } + } + + return failures; } } }