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());
 		}