Skip to content

Commit

Permalink
Support for restricted payloads (pydcs#370)
Browse files Browse the repository at this point in the history
Co-authored-by: Rene Peinthor <peinthor@gmail.com>
  • Loading branch information
332fg-raven and rp- committed May 20, 2024
1 parent 9133802 commit cb88c8a
Show file tree
Hide file tree
Showing 3 changed files with 21 additions and 0 deletions.
4 changes: 4 additions & 0 deletions dcs/flyingunit.py
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand All @@ -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):
Expand Down Expand Up @@ -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


Expand Down
Binary file added tests/missions/payload.restrictions.miz
Binary file not shown.
17 changes: 17 additions & 0 deletions tests/test_mission.py
Original file line number Diff line number Diff line change
Expand Up @@ -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()
Expand Down

0 comments on commit cb88c8a

Please sign in to comment.