0
|
1 using System;
|
|
2 using System.Collections.Generic;
|
|
3 using System.Text;
|
|
4 using IBBoard.WarFoundry.API;
|
|
5 using IBBoard.WarFoundry.API.Objects;
|
|
6
|
|
7 namespace IBBoard.WarFoundry.API.Requirements
|
|
8 {
|
|
9 /// <summary>
|
|
10 /// Summary description for UnitRequiresRequirement.
|
|
11 /// </summary>
|
|
12 public class UnitRequiresAtLeastRequirement : UnitRequirement
|
|
13 {
|
|
14 private UnitType[] requiredTypes;
|
|
15 private int[] requiredCounts;
|
|
16 private String unitList;
|
|
17
|
|
18 public UnitRequiresAtLeastRequirement(UnitType type, UnitType requiredUnitType) : this(type, new UnitType[]{requiredUnitType}, new int[]{1})
|
|
19 {
|
|
20 }
|
|
21
|
|
22 public UnitRequiresAtLeastRequirement(UnitType type, UnitType[] requiredUnitTypes, int[] minNumsRequired) : base(type)
|
|
23 {
|
|
24 if (requiredUnitTypes.Length != minNumsRequired.Length)
|
|
25 {
|
|
26 throw new ArgumentException("List of required unit types and list of number of units required must be equal");
|
|
27 }
|
|
28 else if (requiredUnitTypes.Length == 1)
|
|
29 {
|
|
30 throw new ArgumentException("List of required unit types must not be empty");
|
|
31 }
|
|
32
|
|
33 requiredTypes = requiredUnitTypes;
|
|
34 requiredCounts = minNumsRequired;
|
|
35
|
|
36 if (requiredTypes.Length > 1)
|
|
37 {
|
|
38 StringBuilder sb = new StringBuilder(requiredCounts[0]+" x "+requiredTypes[0].Name);
|
|
39
|
|
40 for (int i = 1; i<requiredTypes.Length; i++)
|
|
41 {
|
|
42 sb.Append(", "+requiredCounts[i]+" x "+requiredTypes[i].Name);
|
|
43 }
|
|
44
|
|
45 unitList = sb.ToString();
|
|
46 }
|
|
47 else
|
|
48 {
|
|
49 unitList = requiredTypes[0].Name;
|
|
50 }
|
|
51 }
|
|
52
|
|
53 public override string Description
|
|
54 {
|
|
55 get { return "The army must include at least the following units to include a unit of type "+unitType.Name+": "+unitList; }
|
|
56 }
|
|
57
|
|
58 protected override AbstractFailedRequirement CanRemoveFromArmy(Army army, UnitType type)
|
|
59 {
|
|
60 return null;
|
|
61 }
|
|
62
|
|
63 protected override AbstractFailedRequirement CanAddToArmy(Army army, UnitType type)
|
|
64 {
|
|
65 FailedRequirement failure = null;
|
|
66 int count = requiredTypes.Length;
|
|
67
|
|
68 for (int i = 0; i < count; i++)
|
|
69 {
|
|
70 if (army.GetUnitTypeCount(requiredTypes[i]) < requiredCounts[i])
|
|
71 {
|
|
72 failure = new FailedRequirement(this);
|
|
73 break;
|
|
74 }
|
|
75 }
|
|
76
|
|
77 return failure;
|
|
78 }
|
|
79 }
|
|
80 }
|