Mercurial > repos > IBBoard.WarFoundry.API
comparison API/Objects/Requirement/RequiresNUnitsForMUnitsRequirement.cs @ 446:ca1e8f7c8b73
Re: #350: Add requirement to allow N of unit for specific other units
* Update army validation to support required amounts other than 1
author | IBBoard <dev@ibboard.co.uk> |
---|---|
date | Tue, 20 Dec 2011 20:26:54 +0000 |
parents | 2d1bdd679f82 |
children | 4fbb7f205f7e |
comparison
equal
deleted
inserted
replaced
445:2d1bdd679f82 | 446:ca1e8f7c8b73 |
---|---|
160 int allowedTypeCount = army.GetUnitTypeCount(allowedType); | 160 int allowedTypeCount = army.GetUnitTypeCount(allowedType); |
161 bool typeFound = (allowedTypeCount > 0); | 161 bool typeFound = (allowedTypeCount > 0); |
162 | 162 |
163 foreach (UnitCountRequirementData limit in requiredTypes) | 163 foreach (UnitCountRequirementData limit in requiredTypes) |
164 { | 164 { |
165 int limitedTypeCount = army.GetUnitTypeCount(limit.UnitType); | 165 int limitedTypeCount = GetUnitTypesCount(army, limit.UnitTypes); |
166 typeFound |= (limitedTypeCount > 0); | 166 typeFound |= (limitedTypeCount > 0); |
167 | 167 |
168 if (!IsValidByRequirement(limit, allowedTypeCount, limitedTypeCount)) | 168 if (!IsValidByRequirement(limit, allowedTypeCount, limitedTypeCount)) |
169 { | 169 { |
170 canAdd = Validation.Failed; | 170 canAdd = Validation.Failed; |
194 List<string> failures = new List<string>(); | 194 List<string> failures = new List<string>(); |
195 int allowedTypeCount = army.GetUnitTypeCount(allowedType); | 195 int allowedTypeCount = army.GetUnitTypeCount(allowedType); |
196 | 196 |
197 foreach (UnitCountRequirementData limit in requiredTypes) | 197 foreach (UnitCountRequirementData limit in requiredTypes) |
198 { | 198 { |
199 int limitedTypeCount = army.GetUnitTypeCount(limit.UnitType); | 199 int limitedTypeCount = GetUnitTypesCount(army, limit.UnitTypes); |
200 | 200 |
201 if (!IsValidByRequirement(limit, allowedTypeCount, limitedTypeCount)) | 201 if (!IsValidByRequirement(limit, allowedTypeCount, limitedTypeCount)) |
202 { | 202 { |
203 failures.Add(String.Format("{0} {1} for every {2} {3} (have {4} for {5})", limit.Count, limit.UnitType.Name, limit.AllowsCount, allowedType.Name, limitedTypeCount, allowedTypeCount)); | 203 string unitTypeList = GetUnitTypeList(limit); |
204 failures.Add(String.Format("{0} {1} for every {2} {3} (have {4} for {5})", limit.Count, unitTypeList, limit.AllowsCount, allowedType.Name, limitedTypeCount, allowedTypeCount)); | |
204 } | 205 } |
205 } | 206 } |
206 | 207 |
207 return failures; | 208 return failures; |
209 } | |
210 | |
211 private int GetUnitTypesCount(Army army, UnitType[] unitTypes) | |
212 { | |
213 return GetUnitTypesCount(army, unitTypes, null); | |
208 } | 214 } |
209 | 215 |
210 public override string RequirementID | 216 public override string RequirementID |
211 { | 217 { |
212 get | 218 get |