Better save-compat w.r.t. changes in AC's yaml

This commit is contained in:
Raffson 2024-08-03 16:32:38 +02:00
parent f79e96a474
commit 532515fad7
No known key found for this signature in database
GPG Key ID: B0402B2C9B764D99
2 changed files with 10 additions and 12 deletions

View File

@ -239,6 +239,16 @@ class AircraftType(UnitType[Type[FlyingType]]):
list list
) )
def __setstate__(self, state: dict[str, Any]) -> None:
# Save compat: the `name` field has been renamed `variant_id`.
if "name" in state:
state["variant_id"] = state.pop("name")
# Update any existing models with new data on load.
updated = AircraftType.named(state["variant_id"])
updated.__dict__.update(state)
self.__dict__.update(updated.__dict__)
def __post_init__(self) -> None: def __post_init__(self) -> None:
enrich = {} enrich = {}
if FlightType.SEAD_SWEEP not in self.task_priorities: if FlightType.SEAD_SWEEP not in self.task_priorities:
@ -419,16 +429,6 @@ class AircraftType(UnitType[Type[FlyingType]]):
def task_priority(self, task: FlightType) -> int: def task_priority(self, task: FlightType) -> int:
return self.task_priorities[task] return self.task_priorities[task]
def __setstate__(self, state: dict[str, Any]) -> None:
# Save compat: the `name` field has been renamed `variant_id`.
if "name" in state:
state["variant_id"] = state.pop("name")
# Update any existing models with new data on load.
updated = AircraftType.named(state["variant_id"])
state.update(updated.__dict__)
self.__dict__.update(state)
@staticmethod @staticmethod
def _migrator() -> Dict[str, str]: def _migrator() -> Dict[str, str]:
return {"F-15E Strike Eagle (AI)": "F-15E Strike Eagle"} return {"F-15E Strike Eagle (AI)": "F-15E Strike Eagle"}

View File

@ -11,7 +11,6 @@ from game.ato.flightplans.formation import FormationLayout
from game.ato.flightplans.waypointbuilder import WaypointBuilder from game.ato.flightplans.waypointbuilder import WaypointBuilder
from game.ato.packagewaypoints import PackageWaypoints from game.ato.packagewaypoints import PackageWaypoints
from game.data.doctrine import MODERN_DOCTRINE, COLDWAR_DOCTRINE, WWII_DOCTRINE from game.data.doctrine import MODERN_DOCTRINE, COLDWAR_DOCTRINE, WWII_DOCTRINE
from game.dcs.aircrafttype import AircraftType
from game.theater import ParkingType, SeasonalConditions from game.theater import ParkingType, SeasonalConditions
if TYPE_CHECKING: if TYPE_CHECKING:
@ -165,7 +164,6 @@ class Migrator:
try_set_attr(s, "max_size", 12) try_set_attr(s, "max_size", 12)
try_set_attr(s, "radio_presets", {}) try_set_attr(s, "radio_presets", {})
try_set_attr(s, "livery_set", []) try_set_attr(s, "livery_set", [])
s.aircraft = AircraftType.named(s.aircraft.variant_id)
if isinstance(s.country, str): if isinstance(s.country, str):
c = country_dict.get(s.country, s.country) c = country_dict.get(s.country, s.country)
s.country = countries_by_name[c]() s.country = countries_by_name[c]()