mirror of
https://github.com/dcs-retribution/dcs-retribution.git
synced 2025-11-10 15:41:24 +00:00
Adjust pre-pretense backup strategy
This commit is contained in:
parent
dcc424d7e1
commit
3d1a5bea67
@ -154,6 +154,10 @@ def save_dir() -> Path:
|
|||||||
return base_path() / "Retribution" / "Saves"
|
return base_path() / "Retribution" / "Saves"
|
||||||
|
|
||||||
|
|
||||||
|
def pre_pretense_backups_dir() -> Path:
|
||||||
|
return save_dir() / "PrePretenseBackups"
|
||||||
|
|
||||||
|
|
||||||
def server_port() -> int:
|
def server_port() -> int:
|
||||||
global _server_port
|
global _server_port
|
||||||
return _server_port
|
return _server_port
|
||||||
|
|||||||
@ -1,6 +1,5 @@
|
|||||||
from __future__ import annotations
|
from __future__ import annotations
|
||||||
|
|
||||||
import copy
|
|
||||||
import logging
|
import logging
|
||||||
import pickle
|
import pickle
|
||||||
from datetime import datetime
|
from datetime import datetime
|
||||||
@ -20,7 +19,6 @@ from dcs.task import AFAC, FAC, SetInvisibleCommand, SetImmortalCommand, OrbitAc
|
|||||||
from game.lasercodes.lasercoderegistry import LaserCodeRegistry
|
from game.lasercodes.lasercoderegistry import LaserCodeRegistry
|
||||||
from game.missiongenerator.convoygenerator import ConvoyGenerator
|
from game.missiongenerator.convoygenerator import ConvoyGenerator
|
||||||
from game.missiongenerator.environmentgenerator import EnvironmentGenerator
|
from game.missiongenerator.environmentgenerator import EnvironmentGenerator
|
||||||
from game.missiongenerator.flotgenerator import FlotGenerator
|
|
||||||
from game.missiongenerator.forcedoptionsgenerator import ForcedOptionsGenerator
|
from game.missiongenerator.forcedoptionsgenerator import ForcedOptionsGenerator
|
||||||
from game.missiongenerator.frontlineconflictdescription import (
|
from game.missiongenerator.frontlineconflictdescription import (
|
||||||
FrontLineConflictDescription,
|
FrontLineConflictDescription,
|
||||||
@ -29,6 +27,7 @@ from game.missiongenerator.missiondata import MissionData, JtacInfo
|
|||||||
from game.missiongenerator.tgogenerator import TgoGenerator
|
from game.missiongenerator.tgogenerator import TgoGenerator
|
||||||
from game.missiongenerator.visualsgenerator import VisualsGenerator
|
from game.missiongenerator.visualsgenerator import VisualsGenerator
|
||||||
from game.naming import namegen
|
from game.naming import namegen
|
||||||
|
from game.persistency import pre_pretense_backups_dir
|
||||||
from game.pretense.pretenseaircraftgenerator import PretenseAircraftGenerator
|
from game.pretense.pretenseaircraftgenerator import PretenseAircraftGenerator
|
||||||
from game.radio.radios import RadioRegistry
|
from game.radio.radios import RadioRegistry
|
||||||
from game.radio.tacan import TacanRegistry
|
from game.radio.tacan import TacanRegistry
|
||||||
@ -74,17 +73,16 @@ class PretenseMissionGenerator(MissionGenerator):
|
|||||||
self.mission.options.load_from_dict(options)
|
self.mission.options.load_from_dict(options)
|
||||||
|
|
||||||
def generate_miz(self, output: Path) -> UnitMap:
|
def generate_miz(self, output: Path) -> UnitMap:
|
||||||
now = datetime.now()
|
|
||||||
date_time = now.strftime("%Y-%d-%mT%H_%M_%S")
|
|
||||||
game_backup_pickle = pickle.dumps(self.game)
|
game_backup_pickle = pickle.dumps(self.game)
|
||||||
|
path = pre_pretense_backups_dir()
|
||||||
|
path.mkdir(parents=True, exist_ok=True)
|
||||||
|
path /= f".pre-pretense-backup.retribution"
|
||||||
try:
|
try:
|
||||||
with open(
|
with open(path, "wb") as f:
|
||||||
self.game.savepath + ".pre-pretense-backup." + date_time, "wb"
|
|
||||||
) as f:
|
|
||||||
pickle.dump(self.game, f)
|
pickle.dump(self.game, f)
|
||||||
except:
|
except:
|
||||||
logging.error(
|
logging.error(
|
||||||
f"Unable to save Pretense pre-generation backup to {self.game.savepath}.pre-pretense-backup.{date_time}"
|
f"Unable to save Pretense pre-generation backup to {path}"
|
||||||
)
|
)
|
||||||
|
|
||||||
if self.generation_started:
|
if self.generation_started:
|
||||||
|
|||||||
@ -1,6 +1,7 @@
|
|||||||
import logging
|
import logging
|
||||||
import traceback
|
import traceback
|
||||||
import webbrowser
|
import webbrowser
|
||||||
|
from datetime import datetime
|
||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
from typing import Optional
|
from typing import Optional
|
||||||
|
|
||||||
@ -21,6 +22,7 @@ from game import Game, VERSION, persistency, Migrator
|
|||||||
from game.debriefing import Debriefing
|
from game.debriefing import Debriefing
|
||||||
from game.game import TurnState
|
from game.game import TurnState
|
||||||
from game.layout import LAYOUTS
|
from game.layout import LAYOUTS
|
||||||
|
from game.persistency import pre_pretense_backups_dir
|
||||||
from game.pretense.pretensemissiongenerator import PretenseMissionGenerator
|
from game.pretense.pretensemissiongenerator import PretenseMissionGenerator
|
||||||
from game.server import EventStream, GameContext
|
from game.server import EventStream, GameContext
|
||||||
from game.server.dependencies import QtCallbacks, QtContext
|
from game.server.dependencies import QtCallbacks, QtContext
|
||||||
@ -322,9 +324,23 @@ class QLiberationWindow(QMainWindow):
|
|||||||
|
|
||||||
def newPretenseCampaign(self):
|
def newPretenseCampaign(self):
|
||||||
output = persistency.mission_path_for("pretense_campaign.miz")
|
output = persistency.mission_path_for("pretense_campaign.miz")
|
||||||
PretenseMissionGenerator(
|
try:
|
||||||
self.game, self.game.conditions.start_time
|
PretenseMissionGenerator(
|
||||||
).generate_miz(output)
|
self.game, self.game.conditions.start_time
|
||||||
|
).generate_miz(output)
|
||||||
|
except Exception as e:
|
||||||
|
now = datetime.now()
|
||||||
|
date_time = now.strftime("%Y-%d-%mT%H_%M_%S")
|
||||||
|
path = pre_pretense_backups_dir()
|
||||||
|
path.mkdir(parents=True, exist_ok=True)
|
||||||
|
tgt = path / f"pre-pretense-backup_{date_time}.retribution"
|
||||||
|
path /= f".pre-pretense-backup.retribution"
|
||||||
|
if path.exists():
|
||||||
|
with open(path, "rb") as source:
|
||||||
|
with open(tgt, "wb") as target:
|
||||||
|
target.write(source.read())
|
||||||
|
raise e
|
||||||
|
|
||||||
title = "Pretense campaign generated"
|
title = "Pretense campaign generated"
|
||||||
msg = f"A Pretense campaign mission has been successfully generated in {output}"
|
msg = f"A Pretense campaign mission has been successfully generated in {output}"
|
||||||
QMessageBox.information(QApplication.focusWidget(), title, msg, QMessageBox.Ok)
|
QMessageBox.information(QApplication.focusWidget(), title, msg, QMessageBox.Ok)
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user