Mercurial > repos > IBBoard.WarFoundry.API
changeset 452:b671085871b7
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)
author | IBBoard <dev@ibboard.co.uk> |
---|---|
date | Sun, 29 Jan 2012 19:39:25 +0000 |
parents | 676f5ce04176 |
children | dace3b7779ca |
files | API/Objects/Requirement/RequiresAtLeastNUnitsRequirement.cs API/Objects/Requirement/UnitRequiresAtLeastNUnitsRequirement.cs |
diffstat | 2 files changed, 25 insertions(+), 18 deletions(-) [+] |
line wrap: on
line diff
--- 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<UnitCountRequirementData>(); 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 @@ /// <param name='unitType'> /// The unit type to require. /// </param> - 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<string> 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<string> GetFailedAddingRequirements(UnitType unitType, Army army)
--- 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}."; + } + } } }