-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmapini.py
153 lines (121 loc) · 3.93 KB
/
mapini.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
import json
import argparse
from internal.preview_base import PreviewBase
from internal.map_file import MapFile
from internal.sort_triggers import TriggerSorter
from internal.zombies.gen_zombie_spawns import GenZombieSpawns
from internal.csra2_exporter import CSRA2Exporter
parser = argparse.ArgumentParser()
group_mode = parser.add_mutually_exclusive_group(required=True)
group_mode.add_argument(
"--replace-preview",
help="Add or replace a map\'s preview image.",
nargs=2,
metavar=("MAP_FILE", "IMAGE_FILE"))
group_mode.add_argument(
"--extract-preview",
help="Extract the preview image from a map file.",
nargs=2,
metavar=("MAP_FILE", "IMAGE_FILE"))
group_mode.add_argument(
"--show-preview",
help="Display the preview of a map file.",
nargs=1,
metavar=("MAP_FILE",))
group_mode.add_argument(
"--merge-ini",
help="Patch the ini rules of a map file with those of the given ini file. You can choose between overwriting, completely replacing, or only adding the sections.",
nargs=3,
metavar=("MAP_FILE", "INI_FILE", "PATCH_MODE=(overwrite|replace|add)"),
)
group_mode.add_argument(
"--gen-zombie-spawns",
help="Generate zombie spawnpoint logic for all waypoint IDs 100-300.",
nargs=2,
metavar=("MAP_FILE", "SPAWNS_JSON_FILE")
)
group_mode.add_argument(
"--sort-triggers",
help="Sort map INI trigger and tag IDs. Will not affect gameplay.",
nargs=1,
metavar=("MAP_FILE",))
group_mode.add_argument(
"--rename",
help="Rename the map file.",
nargs=2,
metavar=("MAP_FILE", "NAME")
)
group_mode.add_argument(
"--export-csra2",
help="For Nuclear Kommando.",
nargs=1,
metavar=("MAP_FILE",)
)
# group_mode.add_argument(
# "--set-author",
# help="Set the author of the map.",
# nargs=1,
# metavar=("MAP_FILE",)
# )
args = parser.parse_args()
#
# Select mode
#
if args.extract_preview:
print("Extracting preview...")
map = MapFile()
map.from_file(args.extract_preview[0])
preview = map.read_preview()
preview.save_image(args.extract_preview[1])
elif args.replace_preview:
print("Replacing preview...")
preview = PreviewBase()
preview.from_image(args.replace_preview[1])
map = MapFile()
map.from_file(args.replace_preview[0])
map.set_preview(preview)
map.save(args.replace_preview[0])
elif args.show_preview:
print("Displaying preview...")
map = MapFile()
map.from_file(args.show_preview[0])
preview = map.read_preview()
preview.show()
elif args.merge_ini:
patch_mode = args.merge_ini[2]
if not patch_mode in [ "overwrite", "replace", "add" ]:
parser.error('unrecognized PATCH_MODE "{}", choose between "overwrite", "replace" or "add"'.format(patch_mode))
pretty_names = { "overwrite": "Overwriting", "replace": "Replacing", "add": "Adding"}
print("{} ini rules...".format(pretty_names[patch_mode]))
map = MapFile()
map.from_file(args.merge_ini[0])
map.merge(args.merge_ini[1], patch_mode)
map.save(args.merge_ini[0])
elif args.sort_triggers:
print("Sorting all IDs...")
map = MapFile()
map.from_file(args.sort_triggers[0])
trigger_sorter = TriggerSorter(map)
trigger_sorter.sort_triggers()
map.save(args.sort_triggers[0])
elif args.gen_zombie_spawns:
print("Generating zombie spawn system...")
map = MapFile()
map.from_file(args.gen_zombie_spawns[0])
with open(args.gen_zombie_spawns[1]) as f:
spawn_json = json.load(f)
gen_zombie_spawns = GenZombieSpawns(map, spawn_json)
gen_zombie_spawns.generate()
map.save(args.gen_zombie_spawns[0])
elif args.rename:
print("Renaming map...")
map = MapFile()
map.from_file(args.rename[0])
map.set_name(args.rename[1])
map.save(args.rename[0])
elif args.export_csra2:
print("Exporting map info for csra2.com...")
map = MapFile()
map.from_file(args.export_csra2[0])
exporter = CSRA2Exporter(map)
exporter.export()