Mercurial > repos > IBBoard.WarFoundry.API
changeset 359:2a9c046be55a
Re #345: Add failure message to requirements
* Implement message creation for "at least" requirement
author | IBBoard <dev@ibboard.co.uk> |
---|---|
date | Sun, 01 May 2011 14:23:51 +0000 |
parents | dbe7ccb1e557 |
children | 777725613edb |
files | API/Objects/Requirement/RequiresAtLeastNUnitsRequirement.cs |
diffstat | 1 files changed, 23 insertions(+), 2 deletions(-) [+] |
line wrap: on
line diff
--- 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<string> GetFailedRequirements(Army army) + { + List<string> failures = new List<string>(); + + 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; } } }