Mercurial > repos > snowblizz-super-API-ideas
changeset 360:777725613edb
Re #345: Add failure message to requirements
* Add protected property to hold prefix for validation string, as that is all that changes
author | IBBoard <dev@ibboard.co.uk> |
---|---|
date | Sun, 01 May 2011 14:33:27 +0000 |
parents | 2a9c046be55a |
children | 8781e53c59bb |
files | API/Objects/Requirement/RequiresAtLeastNUnitsRequirement.cs API/Objects/Requirement/UnitRequiresAtLeastNUnitsRequirement.cs |
diffstat | 2 files changed, 48 insertions(+), 44 deletions(-) [+] |
line wrap: on
line diff
--- 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<UnitCountRequirementData>(); 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();
--- 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 -{ - /// <summary> - /// 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. - /// </summary> - 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 +{ + /// <summary> + /// 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. + /// </summary> + 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; + } + } +} +