Browse Source

add troop file arg

Bastien Sevajol 5 years ago
parent
commit
23565baeb3
1 changed files with 24 additions and 0 deletions
  1. 24 0
      run.py

+ 24 - 0
run.py View File

@@ -1,6 +1,7 @@
1 1
 # coding: utf-8
2 2
 import argparse
3 3
 import logging
4
+import sys
4 5
 from random import seed
5 6
 
6 7
 from synergine2.log import get_default_logger
@@ -20,9 +21,13 @@ def main(
20 21
     map_dir_path: str,
21 22
     seed_value: int=None,
22 23
     state_file_path: str=None,
24
+    troops_file_path: str=None,
23 25
     state_save_dir: str='.',
24 26
     placement_mode: bool = False,
25 27
 ):
28
+    assert not (state_file_path and troops_file_path),\
29
+        'Do not provide troops file when state file given'
30
+
26 31
     if seed_value is not None:
27 32
         seed(seed_value)
28 33
 
@@ -49,6 +54,12 @@ def main(
49 54
         state = state_loader.get_state(state_file_path)
50 55
         subjects.extend(state.subjects)
51 56
 
57
+    elif troops_file_path:
58
+        troop_loader_builder = TroopConstructorBuilder(config, simulation)
59
+        troop_loader = troop_loader_builder.get_troop_loader()
60
+        troops = troop_loader.get_troops(troops_file_path)
61
+        subjects.extend(troops.subjects)
62
+
52 63
     simulation.subjects = subjects
53 64
 
54 65
     core = Core(
@@ -76,6 +87,7 @@ if __name__ == '__main__':
76 87
     )
77 88
     parser.add_argument('map_dir_path', help='map directory path')
78 89
     parser.add_argument('--seed', dest='seed', default=None)
90
+    parser.add_argument('--troops', dest='troops', default=None)
79 91
     parser.add_argument('--state', dest='state', default=None)
80 92
     parser.add_argument(
81 93
         '--state-save-dir',
@@ -90,10 +102,22 @@ if __name__ == '__main__':
90 102
 
91 103
     args = parser.parse_args()
92 104
 
105
+    if args.troops and args.state:
106
+        print(
107
+            'Cannot load state "{}" because you provide troops file "{}". '
108
+            'You must provide only one of them.'.format(
109
+                args.state,
110
+                args.troops,
111
+            ),
112
+            file=sys.stderr,
113
+        )
114
+        exit(1)
115
+
93 116
     main(
94 117
         args.map_dir_path,
95 118
         seed_value=args.seed,
96 119
         state_file_path=args.state,
120
+        troops_file_path=args.troops,
97 121
         state_save_dir=args.state_save_dir,
98 122
         placement_mode=args.placement,
99 123
     )