Reload terrain and airports in migrator

This commit is contained in:
Raffson 2024-08-16 00:33:46 +02:00
parent 86e4f45152
commit c262bb3681
No known key found for this signature in database
GPG Key ID: B0402B2C9B764D99

View File

@ -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