Refactor payloads folder logic

This commit is contained in:
Raffson 2023-07-22 23:26:32 +02:00
parent 63e65744f1
commit da75f41b01
No known key found for this signature in database
GPG Key ID: B0402B2C9B764D99
2 changed files with 15 additions and 16 deletions

View File

@ -80,6 +80,13 @@ def settings_dir() -> Path:
return base_path() / "Retribution" / "Settings" return base_path() / "Retribution" / "Settings"
def payloads_dir(backup: bool = False) -> Path:
payloads = base_path() / "MissionEditor" / "UnitPayloads"
if backup:
return payloads / "_retribution_backups"
return payloads
def save_dir() -> Path: def save_dir() -> Path:
return base_path() / "Retribution" / "Saves" return base_path() / "Retribution" / "Saves"

View File

@ -1,5 +1,4 @@
from dataclasses import dataclass from dataclasses import dataclass
from pathlib import Path
from shutil import copyfile from shutil import copyfile
from typing import Dict, Union from typing import Dict, Union
@ -20,12 +19,9 @@ from dcs import lua
from game import Game from game import Game
from game.ato.flight import Flight from game.ato.flight import Flight
from game.data.weapons import Pylon from game.data.weapons import Pylon
from game.persistency import base_path from game.persistency import payloads_dir
from qt_ui.windows.mission.flight.payload.QPylonEditor import QPylonEditor from qt_ui.windows.mission.flight.payload.QPylonEditor import QPylonEditor
PAYLOADS_FOLDER = Path()
BACKUP_FOLDER = Path()
class QLoadoutEditor(QGroupBox): class QLoadoutEditor(QGroupBox):
saved = Signal(str) saved = Signal(str)
@ -37,11 +33,6 @@ class QLoadoutEditor(QGroupBox):
self.setCheckable(True) self.setCheckable(True)
self.setChecked(flight.loadout.is_custom) self.setChecked(flight.loadout.is_custom)
global PAYLOADS_FOLDER
PAYLOADS_FOLDER = base_path() / "MissionEditor" / "UnitPayloads"
global BACKUP_FOLDER
BACKUP_FOLDER = PAYLOADS_FOLDER / "_retribution_backups"
vbox = QVBoxLayout(self) vbox = QVBoxLayout(self)
layout = QGridLayout(self) layout = QGridLayout(self)
@ -74,12 +65,13 @@ class QLoadoutEditor(QGroupBox):
def _backup_payloads(self) -> None: def _backup_payloads(self) -> None:
ac_id = self.flight.unit_type.dcs_unit_type.id ac_id = self.flight.unit_type.dcs_unit_type.id
payload_file = PAYLOADS_FOLDER / f"{ac_id}.lua" payload_file = payloads_dir() / f"{ac_id}.lua"
if not payload_file.exists(): if not payload_file.exists():
return return
backup_file = BACKUP_FOLDER / f"{ac_id}.lua" backup_folder = payloads_dir(backup=True)
if not BACKUP_FOLDER.exists(): backup_file = backup_folder / f"{ac_id}.lua"
BACKUP_FOLDER.mkdir() if not backup_folder.exists():
backup_folder.mkdir()
copyfile(payload_file, backup_file) copyfile(payload_file, backup_file)
QMessageBox.information( QMessageBox.information(
QWidget(), QWidget(),
@ -95,7 +87,7 @@ class QLoadoutEditor(QGroupBox):
payload_name = payload_name_input.textValue() payload_name = payload_name_input.textValue()
ac_type = self.flight.unit_type.dcs_unit_type ac_type = self.flight.unit_type.dcs_unit_type
ac_id = ac_type.id ac_id = ac_type.id
payload_file = base_path() / "MissionEditor" / "UnitPayloads" / f"{ac_id}.lua" payload_file = payloads_dir() / f"{ac_id}.lua"
ac_type.payloads[payload_name] = DcsPayload.from_flight( ac_type.payloads[payload_name] = DcsPayload.from_flight(
self.flight, payload_name self.flight, payload_name
).to_dict() ).to_dict()
@ -137,7 +129,7 @@ class QLoadoutEditor(QGroupBox):
) )
def _create_backup_if_needed(self, ac_id): def _create_backup_if_needed(self, ac_id):
backup_file = BACKUP_FOLDER / f"{ac_id}.lua" backup_file = payloads_dir(backup=True) / f"{ac_id}.lua"
if not backup_file.exists(): if not backup_file.exists():
self._backup_payloads() self._backup_payloads()