Mercurial > repos > IBBoard.WarFoundry.API
diff API/Objects/Requirement/RequiresNoMoreThanNOfUnitTypeRequirement.cs @ 487:248df19652f9
Re #410: Create "N units per M models in parent unit" requirement
* Add null adding context
* Add initial skeleton of "N units per M models in parent unit" requirement
* Update use of context
* Standardise some of "is applicable" testing
author | IBBoard <dev@ibboard.co.uk> |
---|---|
date | Fri, 27 Jul 2012 20:31:12 +0100 |
parents | e0641e0eb86c |
children |
line wrap: on
line diff
--- a/API/Objects/Requirement/RequiresNoMoreThanNOfUnitTypeRequirement.cs Sun Jul 15 21:01:47 2012 +0100 +++ b/API/Objects/Requirement/RequiresNoMoreThanNOfUnitTypeRequirement.cs Fri Jul 27 20:31:12 2012 +0100 @@ -67,7 +67,7 @@ foreach (UnitCountRequirementData limit in ConstraintTypes) { - if (GetUnitTypeCount(toArmy, limit.UnitType, wfObject) > limit.Count) + if (GetUnitTypeCount(toArmy, limit.UnitType, wfObject, context) > limit.Count) { canAdd = Validation.Failed; break; @@ -77,16 +77,21 @@ return canAdd; } - private int GetUnitTypeCount(Army toArmy, UnitType unitType, WarFoundryObject wfObject) + private int GetUnitTypeCount(Army toArmy, UnitType unitType, IWarFoundryObject wfObject, AddingContext context) { - return toArmy.GetUnitTypeCount(unitType) + GetCountFromObject(wfObject, unitType); + return toArmy.GetUnitTypeCount(unitType) + GetCountFromObject(wfObject, unitType) + GetCountFromContext(context); } - private int GetCountFromObject(WarFoundryObject wfObject, UnitType limitedType) + private int GetCountFromObject(IWarFoundryObject wfObject, UnitType limitedType, AddingContext context) { return (limitedType.Equals(wfObject) || (wfObject is Unit && ((Unit)wfObject).UnitType.Equals(limitedType))) ? 1 : 0; } + protected virtual int GetCountFromContext(AddingContext context) + { + return 0; + } + /// <summary> /// Adds a requirement for there to be no more than maxCount of a given UnitType /// </summary> @@ -177,7 +182,7 @@ return failures; } - protected override string GetFailedAddingRequirementsString(IWarFoundryObject toAdd, Army toArmy) + protected override string GetFailedAddingRequirementsString(IWarFoundryObject toAdd, Army toArmy, AddingContext context) { return String.Join("; ", GetFailedAddingRequirements(toAdd, toArmy).ToArray()); }