diff --git a/.vscode/launch.json b/.vscode/launch.json index cfe531b5..778f6d53 100644 --- a/.vscode/launch.json +++ b/.vscode/launch.json @@ -51,6 +51,17 @@ "PYTHONPATH": ".;./pydcs" }, "preLaunchTask": "Prepare Environment" - } + }, + { + "name": "Fix Layout orientation", + "type": "python", + "request": "launch", + "program": "resources\\tools\\fix_layout_orientation.py", + "console": "integratedTerminal", + "env": { + "PYTHONPATH": ".;./pydcs" + }, + "args": ["resources/layouts/anti_air/S-300_Site.miz"] + }, ] } \ No newline at end of file diff --git a/game/missiongenerator/tgogenerator.py b/game/missiongenerator/tgogenerator.py index 98d9be6e..6aef36d1 100644 --- a/game/missiongenerator/tgogenerator.py +++ b/game/missiongenerator/tgogenerator.py @@ -417,7 +417,8 @@ class GenericCarrierGenerator(GroundObjectGenerator): if self.game.theater.is_in_sea(point): group.points[0].speed = carrier_speed.meters_per_second group.add_waypoint(point, carrier_speed.kph) - return brc + # Rotate the whole ground object to the new course + self.ground_object.rotate(brc) return None def tacan_callsign(self) -> str: diff --git a/resources/groups/NASAMS-B.yaml b/resources/groups/NASAMS-B.yaml index aa9b5bad..b0350dd8 100644 --- a/resources/groups/NASAMS-B.yaml +++ b/resources/groups/NASAMS-B.yaml @@ -6,4 +6,4 @@ units: - SAM NASAMS SR MPQ64F1 - SAM NASAMS LN AIM-120B layouts: - - NASAMS Site \ No newline at end of file + - 4 Launcher Circle \ No newline at end of file diff --git a/resources/groups/NASAMS-C.yaml b/resources/groups/NASAMS-C.yaml index b983be98..e2ba0c5a 100644 --- a/resources/groups/NASAMS-C.yaml +++ b/resources/groups/NASAMS-C.yaml @@ -6,4 +6,4 @@ units: - SAM NASAMS SR MPQ64F1 - SAM NASAMS LN AIM-120C layouts: - - NASAMS Site \ No newline at end of file + - 4 Launcher Circle \ No newline at end of file diff --git a/resources/groups/SA-17.yaml b/resources/groups/SA-17.yaml index b8627e05..158771e7 100644 --- a/resources/groups/SA-17.yaml +++ b/resources/groups/SA-17.yaml @@ -6,4 +6,4 @@ units: - SAM SA-11 Buk "Gadfly" C2 - SAM SA-17 Buk M1-2 LN 9A310M1-2 layouts: - - SA-17 Grizzly Battery \ No newline at end of file + - 4 Launcher Site \ No newline at end of file diff --git a/resources/groups/SA-6.yaml b/resources/groups/SA-6.yaml index e54a7e2b..5a32774d 100644 --- a/resources/groups/SA-6.yaml +++ b/resources/groups/SA-6.yaml @@ -5,4 +5,4 @@ units: - SAM SA-6 Kub "Straight Flush" STR - SAM SA-6 Kub "Gainful" TEL layouts: - - SA-6 Kub Site \ No newline at end of file + - 4 Launcher Circle \ No newline at end of file diff --git a/resources/layouts/anti_air/4_Launcher_Circle.miz b/resources/layouts/anti_air/4_Launcher_Circle.miz new file mode 100644 index 00000000..79310d52 Binary files /dev/null and b/resources/layouts/anti_air/4_Launcher_Circle.miz differ diff --git a/resources/layouts/anti_air/4_Launcher_Circle.yaml b/resources/layouts/anti_air/4_Launcher_Circle.yaml new file mode 100644 index 00000000..6878467d --- /dev/null +++ b/resources/layouts/anti_air/4_Launcher_Circle.yaml @@ -0,0 +1,32 @@ +name: 4 Launcher Circle +tasks: + - SHORAD + - MERAD +groups: + - SAM: + - name: Search Radar + unit_count: + - 1 + unit_classes: + - SearchRadar + - SearchTrackRadar + - name: Command Post + optional: true + fill: false # Do not fill with faction possible units + unit_count: + - 1 + unit_classes: + - CommandPost + - name: Launcher + unit_count: + - 4 + unit_classes: + - Launcher + - TELAR + - name: Logistics + optional: true + unit_count: + - 1 + - 2 + unit_classes: + - Logistics diff --git a/resources/layouts/anti_air/AAA.miz b/resources/layouts/anti_air/AAA.miz deleted file mode 100644 index 8207e4a4..00000000 Binary files a/resources/layouts/anti_air/AAA.miz and /dev/null differ diff --git a/resources/layouts/anti_air/AAA_Mobile.yaml b/resources/layouts/anti_air/AAA_Mobile.yaml deleted file mode 100644 index ac88b6e4..00000000 --- a/resources/layouts/anti_air/AAA_Mobile.yaml +++ /dev/null @@ -1,21 +0,0 @@ -name: AAA Mobile -description: A standard AAA template -generic: true # This Layout will be used to generate ForceGroups -tasks: - - AAA -groups: - - AAA: # Group Name - - name: AAA Mobile 0 # Sub group which will be merged into the group - unit_count: - - 2 - - 6 - unit_classes: - - AAA - - name: AAA Mobile 1 # Sub group which will be merged into the group - optional: true - unit_count: - - 1 - - 2 - unit_classes: - - Logistics -layout_file: resources/layouts/anti_air/AAA.miz \ No newline at end of file diff --git a/resources/layouts/anti_air/AAA_Radar.yaml b/resources/layouts/anti_air/AAA_Radar.yaml index cbdde869..5d6145be 100644 --- a/resources/layouts/anti_air/AAA_Radar.yaml +++ b/resources/layouts/anti_air/AAA_Radar.yaml @@ -5,22 +5,22 @@ tasks: - AAA groups: - AAA: - - name: AAA Radar Site 0 + - name: AAA Site Radar unit_count: - 1 unit_classes: - SearchRadar - - name: AAA Radar Site 1 + - name: AAA Site unit_count: - 2 - 6 unit_classes: - AAA - - name: AAA Radar Site 2 + - name: AAA Site Logistics optional: true unit_count: - 1 - 2 unit_classes: - Logistics -layout_file: resources/layouts/anti_air/AAA.miz \ No newline at end of file +layout_file: resources/layouts/anti_air/AAA_Site.miz \ No newline at end of file diff --git a/resources/layouts/anti_air/AAA_Site.miz b/resources/layouts/anti_air/AAA_Site.miz new file mode 100644 index 00000000..e419a220 Binary files /dev/null and b/resources/layouts/anti_air/AAA_Site.miz differ diff --git a/resources/layouts/anti_air/AAA_Site.yaml b/resources/layouts/anti_air/AAA_Site.yaml index 2504462f..27f5beee 100644 --- a/resources/layouts/anti_air/AAA_Site.yaml +++ b/resources/layouts/anti_air/AAA_Site.yaml @@ -5,17 +5,16 @@ tasks: - AAA groups: - AAA: - - name: AAA Site 0 + - name: AAA Site unit_count: - 2 - 6 unit_classes: - AAA - - name: AAA Site 1 + - name: AAA Site Logistics optional: true unit_count: - 1 - 2 unit_classes: - Logistics -layout_file: resources/layouts/anti_air/AAA.miz \ No newline at end of file diff --git a/resources/layouts/anti_air/Cold_War_Flak_Site.miz b/resources/layouts/anti_air/Cold_War_Flak_Site.miz new file mode 100644 index 00000000..64b2b98b Binary files /dev/null and b/resources/layouts/anti_air/Cold_War_Flak_Site.miz differ diff --git a/resources/layouts/anti_air/Cold_War_Flak_Site.yaml b/resources/layouts/anti_air/Cold_War_Flak_Site.yaml index bb271d91..5fcb8283 100644 --- a/resources/layouts/anti_air/Cold_War_Flak_Site.yaml +++ b/resources/layouts/anti_air/Cold_War_Flak_Site.yaml @@ -34,4 +34,3 @@ groups: - 2 unit_classes: - Logistics -layout_file: resources/layouts/anti_air/flak.miz diff --git a/resources/layouts/anti_air/Early-Warning_Radar.miz b/resources/layouts/anti_air/Early-Warning_Radar.miz new file mode 100644 index 00000000..510d5f09 Binary files /dev/null and b/resources/layouts/anti_air/Early-Warning_Radar.miz differ diff --git a/resources/layouts/anti_air/Early-Warning_Radar.yaml b/resources/layouts/anti_air/Early-Warning_Radar.yaml index 6474de1e..f3b7f832 100644 --- a/resources/layouts/anti_air/Early-Warning_Radar.yaml +++ b/resources/layouts/anti_air/Early-Warning_Radar.yaml @@ -12,4 +12,3 @@ groups: fallback_classes: - SearchRadar - SearchTrackRadar -layout_file: resources/layouts/anti_air/legacy_ground_templates.miz diff --git a/resources/layouts/anti_air/Flak_Site.miz b/resources/layouts/anti_air/Flak_Site.miz new file mode 100644 index 00000000..7fa432ad Binary files /dev/null and b/resources/layouts/anti_air/Flak_Site.miz differ diff --git a/resources/layouts/anti_air/Flak_Site.yaml b/resources/layouts/anti_air/Flak_Site.yaml index 1d2d0f76..362b1c33 100644 --- a/resources/layouts/anti_air/Flak_Site.yaml +++ b/resources/layouts/anti_air/Flak_Site.yaml @@ -48,4 +48,3 @@ groups: - 4 unit_types: - Blitz_36-6700A -layout_file: resources/layouts/anti_air/legacy_ground_templates.miz diff --git a/resources/layouts/anti_air/Freya_EWR_Site.miz b/resources/layouts/anti_air/Freya_EWR_Site.miz new file mode 100644 index 00000000..3e966ba7 Binary files /dev/null and b/resources/layouts/anti_air/Freya_EWR_Site.miz differ diff --git a/resources/layouts/anti_air/Freya_EWR_Site.yaml b/resources/layouts/anti_air/Freya_EWR_Site.yaml index 6d77d907..f0cc0aa3 100644 --- a/resources/layouts/anti_air/Freya_EWR_Site.yaml +++ b/resources/layouts/anti_air/Freya_EWR_Site.yaml @@ -48,4 +48,3 @@ groups: - 3 unit_types: - soldier_mauser98 -layout_file: resources/layouts/anti_air/legacy_ground_templates.miz diff --git a/resources/layouts/anti_air/NASAMS_Site.miz b/resources/layouts/anti_air/NASAMS_Site.miz deleted file mode 100644 index 0b25d593..00000000 Binary files a/resources/layouts/anti_air/NASAMS_Site.miz and /dev/null differ diff --git a/resources/layouts/anti_air/NASAMS_Site.yaml b/resources/layouts/anti_air/NASAMS_Site.yaml deleted file mode 100644 index e3f2d746..00000000 --- a/resources/layouts/anti_air/NASAMS_Site.yaml +++ /dev/null @@ -1,21 +0,0 @@ -name: NASAMS Site -tasks: - - MERAD -groups: - - NASAMS: - - name: SR - unit_count: - - 1 - unit_types: - - NASAMS_Radar_MPQ64F1 - - name: CC - unit_count: - - 1 - unit_types: - - NASAMS_Command_Post - - name: LN - unit_count: - - 4 - unit_types: - - NASAMS_LN_B - - NASAMS_LN_C diff --git a/resources/layouts/anti_air/Patriot_Battery.miz b/resources/layouts/anti_air/Patriot_Battery.miz new file mode 100644 index 00000000..972a9d2b Binary files /dev/null and b/resources/layouts/anti_air/Patriot_Battery.miz differ diff --git a/resources/layouts/anti_air/Patriot_Battery.yaml b/resources/layouts/anti_air/Patriot_Battery.yaml index f8ff4dac..52e9ecb9 100644 --- a/resources/layouts/anti_air/Patriot_Battery.yaml +++ b/resources/layouts/anti_air/Patriot_Battery.yaml @@ -49,4 +49,3 @@ groups: - 2 unit_classes: - SHORAD -layout_file: resources/layouts/anti_air/legacy_ground_templates.miz diff --git a/resources/layouts/anti_air/S-300_Site.miz b/resources/layouts/anti_air/S-300_Site.miz index 17f43f7e..b223c5f3 100644 Binary files a/resources/layouts/anti_air/S-300_Site.miz and b/resources/layouts/anti_air/S-300_Site.miz differ diff --git a/resources/layouts/anti_air/SA-17_Grizzly_Battery.yaml b/resources/layouts/anti_air/SA-17_Grizzly_Battery.yaml deleted file mode 100644 index a3ff78a5..00000000 --- a/resources/layouts/anti_air/SA-17_Grizzly_Battery.yaml +++ /dev/null @@ -1,21 +0,0 @@ -name: SA-17 Grizzly Battery -tasks: - - MERAD -groups: - - SA-17: - - name: SA-17 Grizzly Battery 0 - unit_count: - - 1 - unit_types: - - SA-11 Buk SR 9S18M1 - - name: SA-17 Grizzly Battery 1 - unit_count: - - 1 - unit_types: - - SA-11 Buk CC 9S470M1 - - name: SA-17 Grizzly Battery 2 - unit_count: - - 3 - unit_types: - - SA-17 Buk M1-2 LN 9A310M1-2 -layout_file: resources/layouts/anti_air/legacy_ground_templates.miz diff --git a/resources/layouts/anti_air/SA-5_S-200_Site.miz b/resources/layouts/anti_air/SA-5_S-200_Site.miz new file mode 100644 index 00000000..7f4cf8c4 Binary files /dev/null and b/resources/layouts/anti_air/SA-5_S-200_Site.miz differ diff --git a/resources/layouts/anti_air/SA-5_S-200_Site.yaml b/resources/layouts/anti_air/SA-5_S-200_Site.yaml index 6d0f4bd6..3545f612 100644 --- a/resources/layouts/anti_air/SA-5_S-200_Site.yaml +++ b/resources/layouts/anti_air/SA-5_S-200_Site.yaml @@ -24,4 +24,3 @@ groups: - 6 unit_types: - S-200_Launcher -layout_file: resources/layouts/anti_air/legacy_ground_templates.miz diff --git a/resources/layouts/anti_air/SA-6_Kub_Site.yaml b/resources/layouts/anti_air/SA-6_Kub_Site.yaml deleted file mode 100644 index 3407711c..00000000 --- a/resources/layouts/anti_air/SA-6_Kub_Site.yaml +++ /dev/null @@ -1,16 +0,0 @@ -name: SA-6 Kub Site -tasks: - - MERAD -groups: - - SA-6: - - name: SA-6 Kub Site 0 - unit_count: - - 1 - unit_types: - - Kub 1S91 str - - name: SA-6 Kub Site 1 - unit_count: - - 4 - unit_types: - - Kub 2P25 ln -layout_file: resources/layouts/anti_air/legacy_ground_templates.miz diff --git a/resources/layouts/anti_air/WW2_Ally_Flak_Site.miz b/resources/layouts/anti_air/WW2_Ally_Flak_Site.miz new file mode 100644 index 00000000..aa768d08 Binary files /dev/null and b/resources/layouts/anti_air/WW2_Ally_Flak_Site.miz differ diff --git a/resources/layouts/anti_air/WW2_Ally_Flak_Site.yaml b/resources/layouts/anti_air/WW2_Ally_Flak_Site.yaml index dc0d78d1..24013548 100644 --- a/resources/layouts/anti_air/WW2_Ally_Flak_Site.yaml +++ b/resources/layouts/anti_air/WW2_Ally_Flak_Site.yaml @@ -38,4 +38,3 @@ groups: - 1 unit_types: - Bedford_MWD -layout_file: resources/layouts/anti_air/legacy_ground_templates.miz diff --git a/resources/layouts/anti_air/WW2_Flak_Site.miz b/resources/layouts/anti_air/WW2_Flak_Site.miz new file mode 100644 index 00000000..0e67dc42 Binary files /dev/null and b/resources/layouts/anti_air/WW2_Flak_Site.miz differ diff --git a/resources/layouts/anti_air/WW2_Flak_Site.yaml b/resources/layouts/anti_air/WW2_Flak_Site.yaml index 442b0fb3..e9eb0c97 100644 --- a/resources/layouts/anti_air/WW2_Flak_Site.yaml +++ b/resources/layouts/anti_air/WW2_Flak_Site.yaml @@ -13,4 +13,3 @@ groups: - 1 unit_types: - Blitz_36-6700A -layout_file: resources/layouts/anti_air/legacy_ground_templates.miz diff --git a/resources/layouts/anti_air/flak.miz b/resources/layouts/anti_air/flak.miz deleted file mode 100644 index 4226e980..00000000 Binary files a/resources/layouts/anti_air/flak.miz and /dev/null differ diff --git a/resources/layouts/anti_air/legacy_ground_templates.miz b/resources/layouts/anti_air/legacy_ground_templates.miz deleted file mode 100644 index bab7ef3a..00000000 Binary files a/resources/layouts/anti_air/legacy_ground_templates.miz and /dev/null differ diff --git a/resources/layouts/naval/Carrier_Group.miz b/resources/layouts/naval/Carrier_Group.miz new file mode 100644 index 00000000..85a78ca5 Binary files /dev/null and b/resources/layouts/naval/Carrier_Group.miz differ diff --git a/resources/layouts/naval/Carrier_Group.yaml b/resources/layouts/naval/Carrier_Group.yaml index b8368694..d4a17600 100644 --- a/resources/layouts/naval/Carrier_Group.yaml +++ b/resources/layouts/naval/Carrier_Group.yaml @@ -15,4 +15,3 @@ groups: - 4 unit_classes: - Destroyer -layout_file: resources/layouts/naval/legacy_naval_templates.miz diff --git a/resources/layouts/naval/Carrier_Strike_Group_8.miz b/resources/layouts/naval/Carrier_Strike_Group_8.miz new file mode 100644 index 00000000..78983415 Binary files /dev/null and b/resources/layouts/naval/Carrier_Strike_Group_8.miz differ diff --git a/resources/layouts/naval/Carrier_Strike_Group_8.yaml b/resources/layouts/naval/Carrier_Strike_Group_8.yaml index 09f15eb3..ae37b126 100644 --- a/resources/layouts/naval/Carrier_Strike_Group_8.yaml +++ b/resources/layouts/naval/Carrier_Strike_Group_8.yaml @@ -20,4 +20,3 @@ groups: - 1 unit_types: - TICONDEROG -layout_file: resources/layouts/naval/legacy_naval_templates.miz diff --git a/resources/layouts/naval/LHA_Group.miz b/resources/layouts/naval/LHA_Group.miz new file mode 100644 index 00000000..806ed908 Binary files /dev/null and b/resources/layouts/naval/LHA_Group.miz differ diff --git a/resources/layouts/naval/LHA_Group.yaml b/resources/layouts/naval/LHA_Group.yaml index b0b2b8f4..64844d57 100644 --- a/resources/layouts/naval/LHA_Group.yaml +++ b/resources/layouts/naval/LHA_Group.yaml @@ -15,4 +15,3 @@ groups: - 2 unit_classes: - Destroyer -layout_file: resources/layouts/naval/legacy_naval_templates.miz diff --git a/resources/layouts/naval/Naval-Group.miz b/resources/layouts/naval/Naval-Group.miz new file mode 100644 index 00000000..9dcc971a Binary files /dev/null and b/resources/layouts/naval/Naval-Group.miz differ diff --git a/resources/layouts/naval/Naval-Group.yaml b/resources/layouts/naval/Naval-Group.yaml index 4d39a9ce..dafd669d 100644 --- a/resources/layouts/naval/Naval-Group.yaml +++ b/resources/layouts/naval/Naval-Group.yaml @@ -20,4 +20,3 @@ groups: - 1 unit_classes: - Cruiser -layout_file: resources/layouts/naval/naval.miz diff --git a/resources/layouts/naval/Naval-Two-Ship.miz b/resources/layouts/naval/Naval-Two-Ship.miz new file mode 100644 index 00000000..69b6035a Binary files /dev/null and b/resources/layouts/naval/Naval-Two-Ship.miz differ diff --git a/resources/layouts/naval/Naval-Two-Ship.yaml b/resources/layouts/naval/Naval-Two-Ship.yaml index 54242c7a..7538eeef 100644 --- a/resources/layouts/naval/Naval-Two-Ship.yaml +++ b/resources/layouts/naval/Naval-Two-Ship.yaml @@ -14,4 +14,3 @@ groups: - Boat - Submarine - LandingShip -layout_file: resources/layouts/naval/naval.miz diff --git a/resources/layouts/naval/WW2-LST.miz b/resources/layouts/naval/WW2-LST.miz new file mode 100644 index 00000000..8bd80659 Binary files /dev/null and b/resources/layouts/naval/WW2-LST.miz differ diff --git a/resources/layouts/naval/WW2-LST.yaml b/resources/layouts/naval/WW2-LST.yaml index cb6fdc6f..d9dad673 100644 --- a/resources/layouts/naval/WW2-LST.yaml +++ b/resources/layouts/naval/WW2-LST.yaml @@ -14,4 +14,3 @@ groups: - 3 unit_types: - LST_Mk2 -layout_file: resources/layouts/naval/legacy_naval_templates.miz diff --git a/resources/layouts/naval/legacy_naval_templates.miz b/resources/layouts/naval/legacy_naval_templates.miz deleted file mode 100644 index b255345e..00000000 Binary files a/resources/layouts/naval/legacy_naval_templates.miz and /dev/null differ diff --git a/resources/layouts/naval/naval.miz b/resources/layouts/naval/naval.miz deleted file mode 100644 index 7e0ceb22..00000000 Binary files a/resources/layouts/naval/naval.miz and /dev/null differ diff --git a/resources/tools/fix_layout_orientation.py b/resources/tools/fix_layout_orientation.py new file mode 100644 index 00000000..f462fbec --- /dev/null +++ b/resources/tools/fix_layout_orientation.py @@ -0,0 +1,63 @@ +# Script to update a layout.miz which is not created with an orientation of Heading=0 +# It loads the miz as and reorientates all objects + + +# Requirement: Only ONE Group has to be within the miz file. +# Load miz +# Determine Center and current heading (use first unit for that) +# Rotate everything around the center with the difference to heading 0 +# Save the miz + +import argparse +import itertools +from typing import Any + +import dcs + +from game.point_with_heading import PointWithHeading +from game.utils import Heading + + +def fix_orientation(miz_file: str) -> None: + mission = dcs.Mission() + mission.load_file(miz_file) + groups = [] + # Load all units from the miz + for country in itertools.chain( + mission.coalition["red"].countries.values(), + mission.coalition["blue"].countries.values(), + ): + for dcs_group in itertools.chain( + mission.country(country.name).vehicle_group, + mission.country(country.name).ship_group, + mission.country(country.name).static_group, + ): + groups.append(dcs_group) + + # Get the center which will be used as origin for the rotation + center_unit = groups[0].units[0] + + # Calculate the rotation + rotation = Heading.from_degrees(360 - int(center_unit.heading)) + + # Rotate all units + for group in groups: + for unit in group.units: + unit.position = PointWithHeading.from_point( + unit.position, Heading.from_degrees(int(unit.heading)) + rotation + ) + unit.heading = unit.position.heading.degrees + unit.position.rotate(center_unit.position, rotation) + group.points[0].position = group.units[0].position + # Save the miz + mission.save() + + +def main() -> None: + parser = argparse.ArgumentParser() + parser.add_argument("mission", type=str, help="The mission which will be fixed") + args = parser.parse_args() + fix_orientation(args.mission) + + +main()