diff --git a/game/migrator.py b/game/migrator.py index 9becbfab..362e3911 100644 --- a/game/migrator.py +++ b/game/migrator.py @@ -5,13 +5,14 @@ from datetime import timedelta from typing import TYPE_CHECKING, Any from dcs.countries import countries_by_name +from dcs.terrain import Airport, Terrain from game.ato import FlightType from game.ato.flightplans.formation import FormationLayout from game.ato.flightplans.waypointbuilder import WaypointBuilder from game.ato.packagewaypoints import PackageWaypoints from game.data.doctrine import MODERN_DOCTRINE, COLDWAR_DOCTRINE, WWII_DOCTRINE -from game.theater import ParkingType, SeasonalConditions +from game.theater import ParkingType, SeasonalConditions, Airfield if TYPE_CHECKING: from game import Game @@ -40,6 +41,7 @@ class Migrator: self._release_untasked_flights() self._update_weather() self._update_tgos() + self._reload_terrain() def _update_doctrine(self) -> None: doctrines = [ @@ -104,6 +106,8 @@ class Migrator: faulty_beacon = [x for x in beacons if x.id == "airfield20_0"] if faulty_beacon: beacons.remove([x for x in beacons if x.id == "airfield20_0"][0]) + if isinstance(cp, Airfield) and issubclass(cp.airport.__class__, Airport): + cp.airport = cp.airport.__class__(self.game.theater.terrain) # type: ignore def _update_flight_plan(self, f: Flight) -> None: layout = f.flight_plan.layout @@ -239,3 +243,8 @@ class Migrator: for go in self.game.theater.ground_objects: try_set_attr(go, "task", None) try_set_attr(go, "hide_on_mfd", False) + + def _reload_terrain(self) -> None: + t = self.game.theater.terrain + if issubclass(t.__class__, Terrain): + self.game.theater.terrain = type(t)() # type: ignore