# HG changeset patch # User IBBoard # Date 1327865965 0 # Node ID b671085871b7bb15f2f938d51736cf632ea9af05 # Parent 676f5ce041768b3fbef71ed3f9cced098269fd07 Re #379: Fix validation of requirements to check for unit * Separate messages for adding unit and validating army. * Make translation easier (once we add it in) diff -r 676f5ce04176 -r b671085871b7 API/Objects/Requirement/RequiresAtLeastNUnitsRequirement.cs --- a/API/Objects/Requirement/RequiresAtLeastNUnitsRequirement.cs Sat Jan 28 16:57:59 2012 +0000 +++ b/API/Objects/Requirement/RequiresAtLeastNUnitsRequirement.cs Sun Jan 29 19:39:25 2012 +0000 @@ -20,7 +20,6 @@ public RequiresAtLeastNUnitsRequirement(params UnitType[] requiredUnitTypes) { - FailureStringPrefix = "Army must contain: "; requiredTypes = new List(); foreach (UnitType unitType in requiredUnitTypes) @@ -29,7 +28,6 @@ } } - public override string RequirementID { get @@ -38,7 +36,7 @@ } } - protected override bool TypeEquals (object obj) + protected override bool TypeEquals(object obj) { RequiresAtLeastNUnitsRequirement otherReq = (RequiresAtLeastNUnitsRequirement)obj; if (!Collections.Collections.AreEqual(requiredTypes, otherReq.requiredTypes)) @@ -98,7 +96,7 @@ return isApplicable; } - protected UnitType GetUnitTypeFromObject (WarFoundryObject toObject) + protected UnitType GetUnitTypeFromObject(WarFoundryObject toObject) { UnitType unitType = null; @@ -114,7 +112,7 @@ return unitType; } - private bool IsApplicable (UnitType unitType) + private bool IsApplicable(UnitType unitType) { bool isApplicable = false; foreach (UnitCountRequirementData requirement in requiredTypes) @@ -174,7 +172,7 @@ /// /// The unit type to require. /// - public void AddUnitTypeRequirement (UnitType unitType) + public void AddUnitTypeRequirement(UnitType unitType) { AddUnitTypeRequirement(unitType, 1); } @@ -204,15 +202,11 @@ return isValid; } - protected string FailureStringPrefix { get; set; } + protected virtual string ValidationFailedMessage { get { return "Army must contain: {0}."; } } protected override string GetValidationFailedMessage(Army army) { - StringBuilder sb = new StringBuilder(); - sb.Append(FailureStringPrefix); - sb.Append(String.Join("; ", GetFailedRequirements(army).ToArray())); - sb.Append("."); - return sb.ToString(); + return String.Format(ValidationFailedMessage, String.Join("; ", GetFailedRequirements(army).ToArray())); } private List GetFailedRequirements(Army army) @@ -232,13 +226,11 @@ return failures; } + protected virtual string AllowsAddingFailedMessage { get { return ValidationFailedMessage; } } + protected override string GetAllowsAddingFailedMessage(UnitType toAdd, Army toArmy) { - StringBuilder sb = new StringBuilder(); - sb.Append(FailureStringPrefix); - sb.Append(String.Join("; ", GetFailedAddingRequirements(toAdd, toArmy).ToArray())); - sb.Append("."); - return sb.ToString(); + return String.Format(AllowsAddingFailedMessage, String.Join("; ", GetFailedAddingRequirements(toAdd, toArmy).ToArray())); } private List GetFailedAddingRequirements(UnitType unitType, Army army) diff -r 676f5ce04176 -r b671085871b7 API/Objects/Requirement/UnitRequiresAtLeastNUnitsRequirement.cs --- a/API/Objects/Requirement/UnitRequiresAtLeastNUnitsRequirement.cs Sat Jan 28 16:57:59 2012 +0000 +++ b/API/Objects/Requirement/UnitRequiresAtLeastNUnitsRequirement.cs Sun Jan 29 19:39:25 2012 +0000 @@ -17,7 +17,6 @@ public UnitRequiresAtLeastNUnitsRequirement(UnitType requirementOn) : base() { requirementOnType = requirementOn; - FailureStringPrefix = "Army contains " + requirementOn.Name + " and so must contain: "; } protected override bool IsApplicable(WarFoundryObject toObjectAdded) @@ -39,6 +38,22 @@ { return IsApplicable(toArmy) ? base.ValidatesArmy(toArmy) : Validation.NotApplicable; } + + protected override string ValidationFailedMessage + { + get + { + return "Army contains " + requirementOnType.Name + " and so must contain: {0}."; + } + } + + protected override string AllowsAddingFailedMessage + { + get + { + return "Army would contain " + requirementOnType.Name + " and so must contain: {0}."; + } + } } }