Mercurial > repos > IBDev-IBBoard.WarFoundry.API
annotate API/Objects/Requirement/UnitRequiresAtLeastNUnitsRequirement.cs @ 499:2fc99446f9c9 default tip
Add initial structure for categories of equipment
author | IBBoard <dev@ibboard.co.uk> |
---|---|
date | Sun, 16 Oct 2016 20:26:44 +0100 |
parents | 248df19652f9 |
children |
rev | line source |
---|---|
360
777725613edb
Re #345: Add failure message to requirements
IBBoard <dev@ibboard.co.uk>
parents:
350
diff
changeset
|
1 // This file (UnitRequiresAtLeastNUnitsRequirement.cs) is a part of the IBBoard.WarFoundry.API project and is copyright 2011 IBBoard |
777725613edb
Re #345: Add failure message to requirements
IBBoard <dev@ibboard.co.uk>
parents:
350
diff
changeset
|
2 // |
777725613edb
Re #345: Add failure message to requirements
IBBoard <dev@ibboard.co.uk>
parents:
350
diff
changeset
|
3 // 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. |
777725613edb
Re #345: Add failure message to requirements
IBBoard <dev@ibboard.co.uk>
parents:
350
diff
changeset
|
4 using System; |
777725613edb
Re #345: Add failure message to requirements
IBBoard <dev@ibboard.co.uk>
parents:
350
diff
changeset
|
5 using System.Collections.Generic; |
777725613edb
Re #345: Add failure message to requirements
IBBoard <dev@ibboard.co.uk>
parents:
350
diff
changeset
|
6 using IBBoard.WarFoundry.API.Objects; |
480
e0641e0eb86c
Re #410: "N units per M models in parent" requirement
IBBoard <dev@ibboard.co.uk>
parents:
479
diff
changeset
|
7 using IBBoard.WarFoundry.API.Objects.Requirement.Context; |
360
777725613edb
Re #345: Add failure message to requirements
IBBoard <dev@ibboard.co.uk>
parents:
350
diff
changeset
|
8 |
777725613edb
Re #345: Add failure message to requirements
IBBoard <dev@ibboard.co.uk>
parents:
350
diff
changeset
|
9 namespace IBBoard.WarFoundry.API.Objects.Requirement |
777725613edb
Re #345: Add failure message to requirements
IBBoard <dev@ibboard.co.uk>
parents:
350
diff
changeset
|
10 { |
777725613edb
Re #345: Add failure message to requirements
IBBoard <dev@ibboard.co.uk>
parents:
350
diff
changeset
|
11 /// <summary> |
777725613edb
Re #345: Add failure message to requirements
IBBoard <dev@ibboard.co.uk>
parents:
350
diff
changeset
|
12 /// 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. |
777725613edb
Re #345: Add failure message to requirements
IBBoard <dev@ibboard.co.uk>
parents:
350
diff
changeset
|
13 /// </summary> |
455
afc6410e4efc
Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
454
diff
changeset
|
14 public class UnitRequiresAtLeastNUnitsRequirement : RequiresAtLeastNUnitsRequirement<UnitType> |
360
777725613edb
Re #345: Add failure message to requirements
IBBoard <dev@ibboard.co.uk>
parents:
350
diff
changeset
|
15 { |
455
afc6410e4efc
Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
454
diff
changeset
|
16 public UnitRequiresAtLeastNUnitsRequirement(UnitType requirementOn) : base(requirementOn) |
360
777725613edb
Re #345: Add failure message to requirements
IBBoard <dev@ibboard.co.uk>
parents:
350
diff
changeset
|
17 { |
777725613edb
Re #345: Add failure message to requirements
IBBoard <dev@ibboard.co.uk>
parents:
350
diff
changeset
|
18 } |
777725613edb
Re #345: Add failure message to requirements
IBBoard <dev@ibboard.co.uk>
parents:
350
diff
changeset
|
19 |
479
f48c49b53738
Re #410: "N units per M models in parent" requirement
IBBoard <dev@ibboard.co.uk>
parents:
458
diff
changeset
|
20 protected override bool IsApplicable(IWarFoundryObject toObject, AddingContext context) |
458 | 21 { |
22 return AllowedObject.Equals(toObject) || (toObject is Unit && AllowedObject.Equals(((Unit)toObject).UnitType)); | |
360
777725613edb
Re #345: Add failure message to requirements
IBBoard <dev@ibboard.co.uk>
parents:
350
diff
changeset
|
23 } |
777725613edb
Re #345: Add failure message to requirements
IBBoard <dev@ibboard.co.uk>
parents:
350
diff
changeset
|
24 |
487
248df19652f9
Re #410: Create "N units per M models in parent unit" requirement
IBBoard <dev@ibboard.co.uk>
parents:
480
diff
changeset
|
25 protected override bool IsApplicableToBoth(IWarFoundryObject toObject, Army toArmy, AddingContext context) |
360
777725613edb
Re #345: Add failure message to requirements
IBBoard <dev@ibboard.co.uk>
parents:
350
diff
changeset
|
26 { |
458 | 27 bool isApplicable = false; |
28 UnitType addedType = toObject as UnitType; | |
29 | |
30 if (addedType == null) | |
31 { | |
32 addedType = (toObject is Unit) ? ((Unit)toObject).UnitType : null; | |
33 } | |
34 | |
35 if (addedType != null && toArmy.GetUnitTypeCount(AllowedObject) > 0) | |
36 { | |
37 foreach (UnitCountRequirementData limit in ConstraintTypes) | |
38 { | |
39 if (Arrays.Contains(limit.UnitTypes, addedType)) | |
40 { | |
41 isApplicable = true; | |
42 break; | |
43 } | |
44 } | |
45 } | |
46 | |
47 return isApplicable; | |
360
777725613edb
Re #345: Add failure message to requirements
IBBoard <dev@ibboard.co.uk>
parents:
350
diff
changeset
|
48 } |
777725613edb
Re #345: Add failure message to requirements
IBBoard <dev@ibboard.co.uk>
parents:
350
diff
changeset
|
49 |
458 | 50 protected override int GetObjectCountFromArmy(Army toArmy, UnitType obj) |
360
777725613edb
Re #345: Add failure message to requirements
IBBoard <dev@ibboard.co.uk>
parents:
350
diff
changeset
|
51 { |
458 | 52 return toArmy.GetUnitTypeCount(obj); |
360
777725613edb
Re #345: Add failure message to requirements
IBBoard <dev@ibboard.co.uk>
parents:
350
diff
changeset
|
53 } |
777725613edb
Re #345: Add failure message to requirements
IBBoard <dev@ibboard.co.uk>
parents:
350
diff
changeset
|
54 } |
777725613edb
Re #345: Add failure message to requirements
IBBoard <dev@ibboard.co.uk>
parents:
350
diff
changeset
|
55 } |
777725613edb
Re #345: Add failure message to requirements
IBBoard <dev@ibboard.co.uk>
parents:
350
diff
changeset
|
56 |