4 Commits

Author SHA1 Message Date
Raffson
18ff480c07 Update changelog 2024-03-17 01:25:25 +01:00
Raffson
19fd79c25c Avoid crash with incompatible save on startup 2024-03-17 01:25:24 +01:00
Raffson
f992310a36 Fix save-compat issue 2024-03-17 00:57:26 +01:00
Raffson
edcadde368 Update version to 1.3.1 2024-03-17 00:53:57 +01:00
5 changed files with 32 additions and 15 deletions

View File

@@ -1,3 +1,11 @@
# Retribution v1.3.1
#### Note: Re-save your missions in DCS' Mission Editor to avoid possible crashes due to datalink (usually the case when F-16C blk50s are used) when hosting missions on a dedicated server.
## Fixes
* **[UX]** Fix save-compatibility issue
* **[UX]** Avoid crash on startup due to incompatible save
# Retribution v1.3.0
#### Note: Re-save your missions in DCS' Mission Editor to avoid possible crashes due to datalink (usually the case when F-16C blk50s are used) when hosting missions on a dedicated server.

View File

@@ -6,10 +6,10 @@
# -- Project information -----------------------------------------------------
# https://www.sphinx-doc.org/en/master/usage/configuration.html#project-information
project = "DCS Liberation"
copyright = "2023, DCS Liberation Team"
author = "DCS Liberation Team"
release = "7.0.0"
project = "DCS Retribution"
copyright = "2023, DCS Retribution Team"
author = "DCS Retribution Team"
release = "1.3.1"
# -- General configuration ---------------------------------------------------
# https://www.sphinx-doc.org/en/master/usage/configuration.html#general-configuration

View File

@@ -123,6 +123,7 @@ class Migrator:
try_set_attr(f, "tacan")
try_set_attr(f, "tcn_name")
try_set_attr(f, "fuel", f.unit_type.max_fuel)
try_set_attr(f, "plane_altitude_offset", 0)
if f.package in f.squadron.coalition.ato.packages:
self._update_flight_plan(f)
else:

View File

@@ -3,7 +3,7 @@ from pathlib import Path
MAJOR_VERSION = 1
MINOR_VERSION = 3
MICRO_VERSION = 0
MICRO_VERSION = 1
def _optional_build_id_component(path: Path) -> str | None:

View File

@@ -108,7 +108,7 @@ class QLiberationWindow(QMainWindow):
if last_save_file:
logging.info("Loading last saved game : " + str(last_save_file))
game = persistency.load_game(last_save_file)
self.migrate_game(game, last_save_file)
game = self.migrate_game(game, last_save_file)
self.onGameGenerated(game)
self.updateWindowTitle(last_save_file if game else None)
else:
@@ -316,7 +316,7 @@ class QLiberationWindow(QMainWindow):
)
if file is not None and file[0] != "":
game = persistency.load_game(file[0])
self.migrate_game(game, file[0])
game = self.migrate_game(game, file[0])
GameUpdateSignal.get_instance().game_loaded.emit(game)
self.updateWindowTitle(file[0])
@@ -324,15 +324,23 @@ class QLiberationWindow(QMainWindow):
def migrate_game(self, game, path):
if game:
is_liberation = ".liberation" in path
Migrator(game, is_liberation)
try:
Migrator(game, is_liberation)
return game
except Exception:
self.incompatible_save_popup(path)
else:
relative_path = Path(path)
QMessageBox.critical(
self,
"Incompatible save",
"Incompatible save file detected, please report the issue on GitHub or Discord.\n"
f"Make sure to include the campaign that fails to load, i.e.:\n\n{relative_path}",
)
self.incompatible_save_popup(path)
return None
def incompatible_save_popup(self, path):
relative_path = Path(path)
QMessageBox.critical(
self,
"Incompatible save",
"Incompatible save file detected, please report the issue on GitHub or Discord.\n"
f"Make sure to include the campaign that fails to load, i.e.:\n\n{relative_path}",
)
def saveGame(self):
logging.info("Saving game")