updates to strike missions; frontline operations invalid units placement fixed; minor UI updates

This commit is contained in:
Vasyl Horbachenko
2018-09-09 04:15:44 +03:00
parent e0d82da6cb
commit 4ba1dd87e8
25 changed files with 176 additions and 97 deletions

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@@ -4,41 +4,66 @@ import typing
from game import db
from gen.groundobjectsgen import TheaterGroundObject
from dcs.mission import Mission
from dcs.terrain import PersianGulf
from dcs.mapping import Point
m = Mission()
m.load_file("./cau_groundobjects.miz")
result = {}
result_by_groups = {} # type: typing.Dict[int, TheaterGroundObject]
ids_counters = {}
def append_group(cp_id, category, group_id, object_id, position, heading):
global result
global result_by_groups
ground_object = TheaterGroundObject(category, cp_id, group_id, object_id, position, heading)
if cp_id not in result:
result[cp_id] = []
result[cp_id].append(ground_object)
result[cp_id].append(TheaterGroundObject(category, cp_id, group_id, object_id, position, heading))
result_by_groups_key = "{}_{}_{}".format(cp_id, category, group_id)
if result_by_groups_key not in result_by_groups:
result_by_groups[result_by_groups_key] = []
result_by_groups[result_by_groups_key].append(ground_object)
def parse_name(name: str) -> typing.Tuple:
args = str(name).split("|")
if len(args) == 3:
args.append("1")
args = str(name.split()[0]).split("|")
return args[0], int(args[1]), int(args[2]), int(args[3])
return args[0], int(args[1]), int(args[2])
for group in m.country("Russia").static_group + m.country("Russia").vehicle_group:
try:
category, cp_id, group_id, object_id = parse_name(str(group.name))
category, cp_id, group_id = parse_name(str(group.name))
except:
print("Failed to parse {}".format(group.name))
continue
append_group(cp_id, category, group_id, object_id, [group.position.x, group.position.y], group.units[0].heading)
ids_counters_key = "{}_{}".format(cp_id, group_id)
ids_counters[ids_counters_key] = ids_counters.get(ids_counters_key, 0) + 1
object_id = ids_counters[ids_counters_key]
append_group(cp_id, category, group_id, object_id, group.position, group.units[0].heading)
GROUP_TRESHOLD = 300
did_check_pairs = []
for group_id, objects_in_group in result_by_groups.items():
for a in objects_in_group:
for b in objects_in_group:
if (a, b) in did_check_pairs:
continue
did_check_pairs.append((a, b))
distance = a.position.distance_to_point(b.position)
if distance > GROUP_TRESHOLD:
print("Objects {} and {} in group {} are too far apart ({})!".format(a.string_identifier, b.string_identifier, group_id, distance))
print("Total {} objects".format(sum([len(x) for x in result.values()])))
with open("../cau_groundobjects.p", "wb") as f:
pickle.dump(result, f)

View File

@@ -1,14 +1,14 @@
import pickle
from dcs.mission import Mission
from dcs.terrain import PersianGulf
m = Mission()
m.load_file("./gulf_terrain.miz")
for terrain in ["cau", "gulf"]:
m = Mission()
m.load_file("./{}_terrain.miz".format(terrain))
landmap = []
for plane_group in m.country("USA").plane_group:
landmap.append([(x.position.x, x.position.y) for x in plane_group.points])
landmap = []
for plane_group in m.country("USA").plane_group:
landmap.append([(x.position.x, x.position.y) for x in plane_group.points])
with open("../gulflandmap.p", "wb") as f:
pickle.dump(landmap, f)
with open("../{}landmap.p".format(terrain), "wb") as f:
pickle.dump(landmap, f)