diff --git a/dcs/mission.py b/dcs/mission.py index c6e75658..650174d3 100644 --- a/dcs/mission.py +++ b/dcs/mission.py @@ -132,6 +132,7 @@ def __init__(self, terrain: Optional[Terrain] = None) -> None: self.warehouses = Warehouses(self.terrain) self.goals = Goals() self.drawings = Drawings(self.terrain) + self.required_modules = None blue = Coalition("blue") blue.add_country(countries.Australia()) blue.add_country(countries.Belgium()) @@ -260,6 +261,9 @@ def loaddict(fname: str, mizfile: zipfile.ZipFile, reserved_files: List[str]) -> imp_mission = mission_dict["mission"] + # required modules + self.required_modules = imp_mission.get("requiredModules", {}) + # import translations self.translation = Translation(self) translation_dict = dictionary_dict["dictionary"] @@ -2006,6 +2010,7 @@ def dict(self): "Month": self.start_time.month, "Day": self.start_time.day } + m["requiredModules"] = {} if self.required_modules is None else self.required_modules if self.random_weather: self.weather.random(self.start_time, self.terrain) m["groundControl"] = self.groundControl.dict() diff --git a/tests/missions/Mission_with_required_modules.miz b/tests/missions/Mission_with_required_modules.miz new file mode 100644 index 00000000..caf7938a Binary files /dev/null and b/tests/missions/Mission_with_required_modules.miz differ diff --git a/tests/test_mission.py b/tests/test_mission.py index 873324f3..4c49ea3c 100644 --- a/tests/test_mission.py +++ b/tests/test_mission.py @@ -872,3 +872,15 @@ def preset_preserved(group: dcs.unitgroup.StaticGroup, static_groups = m2.coalition["blue"].countries["USA"].static_group self.assertTrue(any(preset_preserved(g, 3) for g in static_groups)) + + def test_smoke_required_modules(self) -> None: + mizname = "tests/missions/Mission_with_required_modules.miz" + m = dcs.mission.Mission() + m.load_file(mizname) + self.assertEqual(m.required_modules, {"WWII Armour and Technics": "WWII Armour and Technics"}) + + saved_miz = "tests/missions/Mission_with_required_modules_saved.miz" + m.save(saved_miz) + m2 = dcs.mission.Mission() + m2.load_file(saved_miz) + self.assertEqual(m.required_modules, m2.required_modules)