diff --git a/dcs/flyingunit.py b/dcs/flyingunit.py index cc5379d2..5cc2e652 100644 --- a/dcs/flyingunit.py +++ b/dcs/flyingunit.py @@ -46,6 +46,7 @@ def __init__( self.radio: Optional[AircraftRadioPresets] = None self.hardpoint_racks = True self.addpropaircraft = dict(_type.property_defaults) if _type.property_defaults else None + self.payload_restricted: Optional[Dict[int, Dict[int, str]]] = None def load_from_dict(self, d): super(FlyingUnit, self).load_from_dict(d) @@ -71,6 +72,7 @@ def load_from_dict(self, d): self.radio = d.get("Radio") self.hardpoint_racks = d.get("hardpoint_racks", None) self.addpropaircraft = d.get("AddPropAircraft") + self.payload_restricted = d["payload"].get("restricted", None) return True def set_parking(self, parking_slot: ParkingSlot): @@ -227,6 +229,8 @@ def dict(self): d["callsign"] = self.callsign_dict if self.radio: d["Radio"] = self.radio + if self.payload_restricted is not None: + d["payload"]["restricted"] = self.payload_restricted return d diff --git a/tests/missions/payload.restrictions.miz b/tests/missions/payload.restrictions.miz new file mode 100644 index 00000000..78808be5 Binary files /dev/null and b/tests/missions/payload.restrictions.miz differ diff --git a/tests/test_mission.py b/tests/test_mission.py index ef962912..0cab1012 100644 --- a/tests/test_mission.py +++ b/tests/test_mission.py @@ -1346,6 +1346,23 @@ def test_find_unit(self) -> None: no_unit = m.find_unit(non_existing_unit_name, red_coalition) self.assertIsNone(no_unit) + def test_payload_restrictions(self) -> None: + m = Mission() + m.load_file("tests/missions/payload.restrictions.miz") + + country_name = "USA" + coal_name = str(dcs.action.Coalition.Blue.value) + + self.assertIsNotNone(m.coalition[coal_name].country(country_name).plane_group[0].units[0].payload_restricted) + + m.save("missions/saved.payload.restrictions.miz") + + m2 = Mission() + m2.load_file("missions/saved.payload.restrictions.miz") + + self.assertDictEqual(m.coalition[coal_name].country(country_name).plane_group[0].units[0].payload_restricted, + m2.coalition[coal_name].country(country_name).plane_group[0].units[0].payload_restricted) + def test_linked_trigger_zone(self) -> None: m_name = "tests/missions/linked-trigger-zone.miz" m = dcs.mission.Mission()