Mercurial > repos > IBDev-IBBoard.WarFoundry.API
annotate API/Objects/Requirement/RequirementHandler.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 | 4f01fdc3bb41 |
children |
rev | line source |
---|---|
353 | 1 // This file (RequirementHandler.cs) is a part of the IBBoard.WarFoundry.API project and is copyright 2011 IBBoard |
2 // | |
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. | |
4 using System; | |
361
8781e53c59bb
Re #345: Add failure message to requirements
IBBoard <dev@ibboard.co.uk>
parents:
355
diff
changeset
|
5 using System.Collections.Generic; |
487
248df19652f9
Re #410: Create "N units per M models in parent unit" requirement
IBBoard <dev@ibboard.co.uk>
parents:
451
diff
changeset
|
6 using IBBoard.WarFoundry.API.Objects.Requirement.Context; |
353 | 7 |
8 namespace IBBoard.WarFoundry.API.Objects.Requirement | |
9 { | |
10 /// <summary> | |
11 /// The requirement handler that tests the validity of armies. | |
12 /// </summary> | |
13 public class RequirementHandler | |
14 { | |
15 private RequirementHandler() | |
16 { | |
17 } | |
363
506af4cbe3f5
Fixes #33: Add centralised requirement checker
IBBoard <dev@ibboard.co.uk>
parents:
361
diff
changeset
|
18 |
506af4cbe3f5
Fixes #33: Add centralised requirement checker
IBBoard <dev@ibboard.co.uk>
parents:
361
diff
changeset
|
19 |
506af4cbe3f5
Fixes #33: Add centralised requirement checker
IBBoard <dev@ibboard.co.uk>
parents:
361
diff
changeset
|
20 public static Validation ValidateArmy(Army army) |
361
8781e53c59bb
Re #345: Add failure message to requirements
IBBoard <dev@ibboard.co.uk>
parents:
355
diff
changeset
|
21 { |
8781e53c59bb
Re #345: Add failure message to requirements
IBBoard <dev@ibboard.co.uk>
parents:
355
diff
changeset
|
22 ICollection<string> ignored; |
8781e53c59bb
Re #345: Add failure message to requirements
IBBoard <dev@ibboard.co.uk>
parents:
355
diff
changeset
|
23 return ValidateArmy(army, out ignored); |
8781e53c59bb
Re #345: Add failure message to requirements
IBBoard <dev@ibboard.co.uk>
parents:
355
diff
changeset
|
24 } |
8781e53c59bb
Re #345: Add failure message to requirements
IBBoard <dev@ibboard.co.uk>
parents:
355
diff
changeset
|
25 |
363
506af4cbe3f5
Fixes #33: Add centralised requirement checker
IBBoard <dev@ibboard.co.uk>
parents:
361
diff
changeset
|
26 public static Validation ValidateArmy(Army army, out ICollection<string> failureMessages) |
506af4cbe3f5
Fixes #33: Add centralised requirement checker
IBBoard <dev@ibboard.co.uk>
parents:
361
diff
changeset
|
27 { |
361
8781e53c59bb
Re #345: Add failure message to requirements
IBBoard <dev@ibboard.co.uk>
parents:
355
diff
changeset
|
28 Validation result = Validation.Passed; |
363
506af4cbe3f5
Fixes #33: Add centralised requirement checker
IBBoard <dev@ibboard.co.uk>
parents:
361
diff
changeset
|
29 failureMessages = new List<string>(); |
506af4cbe3f5
Fixes #33: Add centralised requirement checker
IBBoard <dev@ibboard.co.uk>
parents:
361
diff
changeset
|
30 |
506af4cbe3f5
Fixes #33: Add centralised requirement checker
IBBoard <dev@ibboard.co.uk>
parents:
361
diff
changeset
|
31 foreach (IRequirement requirement in army.GetRequirements()) |
506af4cbe3f5
Fixes #33: Add centralised requirement checker
IBBoard <dev@ibboard.co.uk>
parents:
361
diff
changeset
|
32 { |
506af4cbe3f5
Fixes #33: Add centralised requirement checker
IBBoard <dev@ibboard.co.uk>
parents:
361
diff
changeset
|
33 if (!Validates.AsOkay(requirement.ValidatesArmy(army))) |
506af4cbe3f5
Fixes #33: Add centralised requirement checker
IBBoard <dev@ibboard.co.uk>
parents:
361
diff
changeset
|
34 { |
361
8781e53c59bb
Re #345: Add failure message to requirements
IBBoard <dev@ibboard.co.uk>
parents:
355
diff
changeset
|
35 result = Validation.Failed; |
363
506af4cbe3f5
Fixes #33: Add centralised requirement checker
IBBoard <dev@ibboard.co.uk>
parents:
361
diff
changeset
|
36 failureMessages.Add(requirement.GetValidationMessage(army)); |
506af4cbe3f5
Fixes #33: Add centralised requirement checker
IBBoard <dev@ibboard.co.uk>
parents:
361
diff
changeset
|
37 } |
506af4cbe3f5
Fixes #33: Add centralised requirement checker
IBBoard <dev@ibboard.co.uk>
parents:
361
diff
changeset
|
38 } |
506af4cbe3f5
Fixes #33: Add centralised requirement checker
IBBoard <dev@ibboard.co.uk>
parents:
361
diff
changeset
|
39 |
506af4cbe3f5
Fixes #33: Add centralised requirement checker
IBBoard <dev@ibboard.co.uk>
parents:
361
diff
changeset
|
40 return result; |
506af4cbe3f5
Fixes #33: Add centralised requirement checker
IBBoard <dev@ibboard.co.uk>
parents:
361
diff
changeset
|
41 } |
355 | 42 |
43 public static Validation AllowsAdding(UnitType unitType, Army army) | |
44 { | |
487
248df19652f9
Re #410: Create "N units per M models in parent unit" requirement
IBBoard <dev@ibboard.co.uk>
parents:
451
diff
changeset
|
45 return AllowsAdding(unitType, army, new NullAddingContext()); |
363
506af4cbe3f5
Fixes #33: Add centralised requirement checker
IBBoard <dev@ibboard.co.uk>
parents:
361
diff
changeset
|
46 } |
506af4cbe3f5
Fixes #33: Add centralised requirement checker
IBBoard <dev@ibboard.co.uk>
parents:
361
diff
changeset
|
47 |
487
248df19652f9
Re #410: Create "N units per M models in parent unit" requirement
IBBoard <dev@ibboard.co.uk>
parents:
451
diff
changeset
|
48 public static Validation AllowsAdding(UnitType unitType, Army army, AddingContext context) |
248df19652f9
Re #410: Create "N units per M models in parent unit" requirement
IBBoard <dev@ibboard.co.uk>
parents:
451
diff
changeset
|
49 { |
248df19652f9
Re #410: Create "N units per M models in parent unit" requirement
IBBoard <dev@ibboard.co.uk>
parents:
451
diff
changeset
|
50 ICollection<string> ignored; |
248df19652f9
Re #410: Create "N units per M models in parent unit" requirement
IBBoard <dev@ibboard.co.uk>
parents:
451
diff
changeset
|
51 return AllowsAdding(unitType, army, context, out ignored); |
248df19652f9
Re #410: Create "N units per M models in parent unit" requirement
IBBoard <dev@ibboard.co.uk>
parents:
451
diff
changeset
|
52 } |
248df19652f9
Re #410: Create "N units per M models in parent unit" requirement
IBBoard <dev@ibboard.co.uk>
parents:
451
diff
changeset
|
53 |
363
506af4cbe3f5
Fixes #33: Add centralised requirement checker
IBBoard <dev@ibboard.co.uk>
parents:
361
diff
changeset
|
54 public static Validation AllowsAdding(UnitType unitType, Army army, out ICollection<string> failureMessages) |
506af4cbe3f5
Fixes #33: Add centralised requirement checker
IBBoard <dev@ibboard.co.uk>
parents:
361
diff
changeset
|
55 { |
487
248df19652f9
Re #410: Create "N units per M models in parent unit" requirement
IBBoard <dev@ibboard.co.uk>
parents:
451
diff
changeset
|
56 return AllowsAdding(unitType, army, new NullAddingContext(), out failureMessages); |
248df19652f9
Re #410: Create "N units per M models in parent unit" requirement
IBBoard <dev@ibboard.co.uk>
parents:
451
diff
changeset
|
57 } |
248df19652f9
Re #410: Create "N units per M models in parent unit" requirement
IBBoard <dev@ibboard.co.uk>
parents:
451
diff
changeset
|
58 |
248df19652f9
Re #410: Create "N units per M models in parent unit" requirement
IBBoard <dev@ibboard.co.uk>
parents:
451
diff
changeset
|
59 public static Validation AllowsAdding(UnitType unitType, Army army, AddingContext context, out ICollection<string> failureMessages) |
248df19652f9
Re #410: Create "N units per M models in parent unit" requirement
IBBoard <dev@ibboard.co.uk>
parents:
451
diff
changeset
|
60 { |
355 | 61 Validation result = Validation.Passed; |
363
506af4cbe3f5
Fixes #33: Add centralised requirement checker
IBBoard <dev@ibboard.co.uk>
parents:
361
diff
changeset
|
62 failureMessages = new List<string>(); |
506af4cbe3f5
Fixes #33: Add centralised requirement checker
IBBoard <dev@ibboard.co.uk>
parents:
361
diff
changeset
|
63 |
451
676f5ce04176
Re #379: Fix validation of requirements to check for unit
IBBoard <dev@ibboard.co.uk>
parents:
363
diff
changeset
|
64 foreach (IRequirement requirement in army.GetAddingUnitRequirements(unitType)) |
355 | 65 { |
494
4f01fdc3bb41
Re #410: Create "N units per M models in parent unit" requirement
IBBoard <dev@ibboard.co.uk>
parents:
487
diff
changeset
|
66 if (!Validates.AsOkay(requirement.AllowsAdding(unitType, army, context))) |
355 | 67 { |
68 result = Validation.Failed; | |
487
248df19652f9
Re #410: Create "N units per M models in parent unit" requirement
IBBoard <dev@ibboard.co.uk>
parents:
451
diff
changeset
|
69 failureMessages.Add(requirement.GetAllowsAddingMessage(unitType, army, context)); |
355 | 70 } |
71 } | |
72 | |
73 return result; | |
74 } | |
353 | 75 } |
76 } | |
77 |