mirror of
https://github.com/dcs-retribution/dcs-retribution.git
synced 2025-11-10 15:41:24 +00:00
initial tooling
This commit is contained in:
parent
61400ba726
commit
398630d51e
BIN
resources/mizdata/caucasus/caucusus_frontline.miz
Normal file
BIN
resources/mizdata/caucasus/caucusus_frontline.miz
Normal file
Binary file not shown.
74
resources/tools/generate_frontlines.py
Normal file
74
resources/tools/generate_frontlines.py
Normal file
@ -0,0 +1,74 @@
|
||||
from __future__ import annotations
|
||||
|
||||
import json
|
||||
import argparse
|
||||
from pathlib import Path
|
||||
from typing import List, Tuple, Union, Dict
|
||||
|
||||
from dcs.terrain import Caucasus, PersianGulf, Syria, Nevada, Normandy, TheChannel
|
||||
from dcs import Mission
|
||||
|
||||
Terrain = Union[Caucasus, PersianGulf, Syria, Nevada, Normandy, TheChannel]
|
||||
|
||||
SAVE_PATH = Path("resources/frontlines")
|
||||
|
||||
def validate_miz(file_path: Path) -> bool:
|
||||
return bool(file_path.suffix == ".miz" and file_path.exists())
|
||||
|
||||
def validate_airports(airports: Tuple[int], terrain: Terrain):
|
||||
for airport in airports:
|
||||
if terrain.airport_by_id(airport) is None:
|
||||
print(f"Cannot load airport for invalid id {airport}")
|
||||
|
||||
def load_files(files) -> List[Mission]:
|
||||
missions = []
|
||||
for file in files:
|
||||
if validate_miz(file):
|
||||
mission = Mission()
|
||||
mission.load_file(file)
|
||||
missions.append(mission)
|
||||
else:
|
||||
print(f"Error: {file} doesn't look like a valid mission file.")
|
||||
return missions
|
||||
|
||||
def create_frontline_dict(mission: Mission) -> Dict[str, Dict]:
|
||||
frontline_dict = {}
|
||||
for group in mission.country("USA").vehicle_group:
|
||||
groupname = str(group.name).replace(group.name.id, "").replace(":","")
|
||||
control_points = groupname.split("|")
|
||||
frontline_dict[groupname] = {
|
||||
"points": [(i.position.x, i.position.y) for i in group.points],
|
||||
"start_cp": int(control_points[0])
|
||||
}
|
||||
return frontline_dict
|
||||
|
||||
def process_missions(missions: List[Mission]) -> None:
|
||||
for mission in missions:
|
||||
frontline_dict = create_frontline_dict(mission)
|
||||
write_json(frontline_dict, mission.terrain.name.lower())
|
||||
|
||||
def write_json(frontline_dict: Dict[str, Dict], terrain_name: str) -> None:
|
||||
with open(SAVE_PATH.joinpath(terrain_name + ".json"), "w") as file:
|
||||
json.dump(frontline_dict, file)
|
||||
|
||||
if __name__ == "__main__":
|
||||
parser = argparse.ArgumentParser(
|
||||
description="Process a miz file to create json descriptions of multi-segment frontlines"
|
||||
)
|
||||
parser.add_argument(
|
||||
"files",
|
||||
metavar="N",
|
||||
type=Path,
|
||||
nargs="+",
|
||||
help="A list of space separated .miz files to extract frontlines from",
|
||||
)
|
||||
|
||||
args = parser.parse_args()
|
||||
missions = load_files(args.files)
|
||||
process_missions(missions)
|
||||
# frontline_dict = create_frontline_dict(missions[0])
|
||||
|
||||
print("Done")
|
||||
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user