Save-compat improvements

This commit is contained in:
Raffson 2025-01-01 20:37:36 +01:00
parent 4c9dba2fe5
commit 807bb16ddf
No known key found for this signature in database
GPG Key ID: B0402B2C9B764D99
3 changed files with 16 additions and 2 deletions

View File

@ -199,8 +199,14 @@ class Migrator:
for c in self.game.coalitions:
if isinstance(c.faction.country, str):
c.faction.country = countries_by_name[c.faction.country]()
if isinstance(c.faction.aircraft, list):
if getattr(c.faction, "aircraft", None) and isinstance(
c.faction.aircraft, list
):
c.faction.aircraft = set(c.faction.aircraft)
elif getattr(c.faction, "aircrafts", None) and isinstance(
c.faction.aircrafts, list
):
c.faction.aircraft = set(c.faction.aircrafts)
if isinstance(c.faction.awacs, list):
c.faction.awacs = set(c.faction.awacs)
if isinstance(c.faction.tankers, list):

View File

@ -120,6 +120,13 @@ class MigrationUnpickler(pickle.Unpickler):
except AttributeError:
alternate = name.split('.')[:-1] + [name.split('.')[-1][0].lower() + name.split('.')[-1][1:]]
name = '.'.join(alternate)
try:
return super().find_class(module, name)
except AttributeError:
if "dcs.terrain" in module and "airports" not in module:
module = f"{module}.airports"
else:
raise
return super().find_class(module, name)
# fmt: on

View File

@ -368,7 +368,8 @@ class QLiberationWindow(QMainWindow):
try:
Migrator(game, is_liberation)
return game
except Exception:
except Exception as e:
logging.exception(e)
self.incompatible_save_popup(path)
else:
self.incompatible_save_popup(path)