# HG changeset patch # User IBBoard # Date 1304260407 0 # Node ID 777725613edb8f68ed707f096a35422c83b9cc1a # Parent 2a9c046be55aedc8de803a5e5c19b62e8846e5d2 Re #345: Add failure message to requirements * Add protected property to hold prefix for validation string, as that is all that changes diff -r 2a9c046be55a -r 777725613edb API/Objects/Requirement/RequiresAtLeastNUnitsRequirement.cs --- a/API/Objects/Requirement/RequiresAtLeastNUnitsRequirement.cs Sun May 01 14:23:51 2011 +0000 +++ b/API/Objects/Requirement/RequiresAtLeastNUnitsRequirement.cs Sun May 01 14:33:27 2011 +0000 @@ -17,6 +17,7 @@ public RequiresAtLeastNUnitsRequirement(params UnitType[] requiredUnitTypes) { + FailureStringPrefix = "Army must contain: "; requiredTypes = new List(); foreach (UnitType unitType in requiredUnitTypes) @@ -179,10 +180,12 @@ return isValid; } + protected string FailureStringPrefix { get; set; } + protected override string GetValidationFailedMessage (Army army) { StringBuilder sb = new StringBuilder(); - sb.Append("Army must contain: "); + sb.Append(FailureStringPrefix); sb.Append(String.Join("; ", GetFailedRequirements(army).ToArray())); sb.Append("."); return sb.ToString(); diff -r 2a9c046be55a -r 777725613edb API/Objects/Requirement/UnitRequiresAtLeastNUnitsRequirement.cs --- a/API/Objects/Requirement/UnitRequiresAtLeastNUnitsRequirement.cs Sun May 01 14:23:51 2011 +0000 +++ b/API/Objects/Requirement/UnitRequiresAtLeastNUnitsRequirement.cs Sun May 01 14:33:27 2011 +0000 @@ -1,43 +1,44 @@ -// This file (UnitRequiresAtLeastNUnitsRequirement.cs) is a part of the IBBoard.WarFoundry.API project and is copyright 2011 IBBoard -// -// The file and the library/program it is in are licensed and distributed, without warranty, under the GNU Affero GPL license, either version 3 of the License or (at your option) any later version. Please see COPYING for more information and the full license. -using System; -using System.Collections.Generic; -using IBBoard.WarFoundry.API.Objects; - -namespace IBBoard.WarFoundry.API.Objects.Requirement -{ - /// - /// A requirement where a UnitType requires at least N units of one or more unit types before any number of that object can be taken in an army. - /// - public class UnitRequiresAtLeastNUnitsRequirement : RequiresAtLeastNUnitsRequirement - { - private UnitType requirementOnType; - - public UnitRequiresAtLeastNUnitsRequirement(UnitType requirementOn) : base() - { - requirementOnType = requirementOn; - } - - protected override bool IsApplicable(WarFoundryObject toObjectAdded) - { - return base.IsApplicable(toObjectAdded) || IsRequirementOnType(toObjectAdded); - } - - private bool IsRequirementOnType(WarFoundryObject toObjectAdded) - { - return requirementOnType.Equals(toObjectAdded) || (toObjectAdded is Unit && requirementOnType.Equals(((Unit)toObjectAdded).UnitType)); - } - - protected override bool IsApplicable(Army toArmy) - { - return toArmy.GetUnitTypeCount(requirementOnType) > 0; - } - - public override Validation ValidatesArmy(Army toArmy) - { - return IsApplicable(toArmy) ? base.ValidatesArmy(toArmy) : Validation.NotApplicable; - } - } -} - +// This file (UnitRequiresAtLeastNUnitsRequirement.cs) is a part of the IBBoard.WarFoundry.API project and is copyright 2011 IBBoard +// +// The file and the library/program it is in are licensed and distributed, without warranty, under the GNU Affero GPL license, either version 3 of the License or (at your option) any later version. Please see COPYING for more information and the full license. +using System; +using System.Collections.Generic; +using IBBoard.WarFoundry.API.Objects; + +namespace IBBoard.WarFoundry.API.Objects.Requirement +{ + /// + /// A requirement where a UnitType requires at least N units of one or more unit types before any number of that object can be taken in an army. + /// + public class UnitRequiresAtLeastNUnitsRequirement : RequiresAtLeastNUnitsRequirement + { + private UnitType requirementOnType; + + public UnitRequiresAtLeastNUnitsRequirement(UnitType requirementOn) : base() + { + requirementOnType = requirementOn; + FailureStringPrefix = "Army contains " + requirementOn.Name + " and so must contain: "; + } + + protected override bool IsApplicable(WarFoundryObject toObjectAdded) + { + return base.IsApplicable(toObjectAdded) || IsRequirementOnType(toObjectAdded); + } + + private bool IsRequirementOnType(WarFoundryObject toObjectAdded) + { + return requirementOnType.Equals(toObjectAdded) || (toObjectAdded is Unit && requirementOnType.Equals(((Unit)toObjectAdded).UnitType)); + } + + protected override bool IsApplicable(Army toArmy) + { + return toArmy.GetUnitTypeCount(requirementOnType) > 0; + } + + public override Validation ValidatesArmy(Army toArmy) + { + return IsApplicable(toArmy) ? base.ValidatesArmy(toArmy) : Validation.NotApplicable; + } + } +} +