Mercurial > repos > IBBoard.WarFoundry.API
annotate api/Requirements/UnitExcludesRequirement.cs @ 232:f5009a00a50d
Re #236: Handle null game system in race
* Fix error message text
no-open-ticket
author | IBBoard <dev@ibboard.co.uk> |
---|---|
date | Thu, 24 Dec 2009 14:57:32 +0000 |
parents | 6083010a005c |
children |
rev | line source |
---|---|
104
2f3cafb69799
Re #121: Migrate to AGPL license
IBBoard <dev@ibboard.co.uk>
parents:
82
diff
changeset
|
1 // This file (UnitExcludesRequirement.cs) is a part of the IBBoard.WarFoundry.API project and is copyright 2008, 2009 IBBoard. |
15 | 2 // |
104
2f3cafb69799
Re #121: Migrate to AGPL license
IBBoard <dev@ibboard.co.uk>
parents:
82
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. |
15 | 4 |
0 | 5 using System; |
6 using System.Collections.Generic; | |
229
6083010a005c
Re #223: Use translations within the API
IBBoard <dev@ibboard.co.uk>
parents:
104
diff
changeset
|
7 using System.Text; |
82 | 8 using IBBoard.WarFoundry.API.Objects; |
229
6083010a005c
Re #223: Use translations within the API
IBBoard <dev@ibboard.co.uk>
parents:
104
diff
changeset
|
9 using IBBoard.Lang; |
82 | 10 |
11 namespace IBBoard.WarFoundry.API.Requirements | |
12 { | |
13 /// <summary> | |
14 /// Summary description for UnitExcludesRequirement. | |
15 /// </summary> | |
16 public class UnitExcludesRequirement : UnitRequirement | |
17 { | |
18 private UnitRequirementItem[] excludingTypes; | |
19 | |
20 public UnitExcludesRequirement(UnitType type, UnitRequirementItem[] excludingUnitTypes) : base(type) | |
21 { | |
22 excludingTypes = excludingUnitTypes; | |
23 } | |
24 | |
25 public override string Description | |
26 { | |
27 get | |
28 { | |
229
6083010a005c
Re #223: Use translations within the API
IBBoard <dev@ibboard.co.uk>
parents:
104
diff
changeset
|
29 string otherUnits = GetOtherUnitTypeNames(); |
6083010a005c
Re #223: Use translations within the API
IBBoard <dev@ibboard.co.uk>
parents:
104
diff
changeset
|
30 return Translation.GetTranslation("requirementUnitExcludesDescription", "{0} can only be taken if none of the following are taken: {1}", unitType.Name, otherUnits); |
82 | 31 } |
32 } | |
229
6083010a005c
Re #223: Use translations within the API
IBBoard <dev@ibboard.co.uk>
parents:
104
diff
changeset
|
33 |
6083010a005c
Re #223: Use translations within the API
IBBoard <dev@ibboard.co.uk>
parents:
104
diff
changeset
|
34 private string GetOtherUnitTypeNames() |
6083010a005c
Re #223: Use translations within the API
IBBoard <dev@ibboard.co.uk>
parents:
104
diff
changeset
|
35 { |
6083010a005c
Re #223: Use translations within the API
IBBoard <dev@ibboard.co.uk>
parents:
104
diff
changeset
|
36 StringBuilder sb = new StringBuilder(); |
6083010a005c
Re #223: Use translations within the API
IBBoard <dev@ibboard.co.uk>
parents:
104
diff
changeset
|
37 |
6083010a005c
Re #223: Use translations within the API
IBBoard <dev@ibboard.co.uk>
parents:
104
diff
changeset
|
38 foreach (UnitRequirementItem req in excludingTypes) |
6083010a005c
Re #223: Use translations within the API
IBBoard <dev@ibboard.co.uk>
parents:
104
diff
changeset
|
39 { |
6083010a005c
Re #223: Use translations within the API
IBBoard <dev@ibboard.co.uk>
parents:
104
diff
changeset
|
40 sb.Append(req.UnitType.Name); |
6083010a005c
Re #223: Use translations within the API
IBBoard <dev@ibboard.co.uk>
parents:
104
diff
changeset
|
41 } |
6083010a005c
Re #223: Use translations within the API
IBBoard <dev@ibboard.co.uk>
parents:
104
diff
changeset
|
42 |
6083010a005c
Re #223: Use translations within the API
IBBoard <dev@ibboard.co.uk>
parents:
104
diff
changeset
|
43 return sb.ToString(); |
6083010a005c
Re #223: Use translations within the API
IBBoard <dev@ibboard.co.uk>
parents:
104
diff
changeset
|
44 } |
82 | 45 |
46 protected override AbstractFailedRequirement CanAddToArmy(Army army, UnitType type) | |
0 | 47 { |
82 | 48 FailedUnitRequirement failed = null; |
49 | |
50 for (int i = 0; i<excludingTypes.Length; i++) | |
51 { | |
52 if (army.GetUnitTypeCount(excludingTypes[i].UnitType) > 0) | |
53 { | |
0 | 54 failed = new FailedUnitRequirement(this); |
82 | 55 break; |
56 } | |
0 | 57 } |
58 | |
82 | 59 return failed; |
60 } | |
61 | |
62 protected override AbstractFailedRequirement CanRemoveFromArmy(Army army, UnitType type) | |
63 { | |
64 return null; | |
65 } | |
66 | |
67 } | |
68 } |