Get rid of all pydcs' PayloadDirectories usages

This commit is contained in:
Raffson 2023-07-22 19:32:30 +02:00
parent 57319bd78b
commit 0e5df2fd21
No known key found for this signature in database
GPG Key ID: B0402B2C9B764D99

View File

@ -1,8 +1,7 @@
from dataclasses import dataclass from dataclasses import dataclass
from shutil import copyfile
from typing import Dict, Union from typing import Dict, Union
import dcs.lua
import dcs.payloads
from PySide2.QtCore import Signal from PySide2.QtCore import Signal
from PySide2.QtWidgets import ( from PySide2.QtWidgets import (
QGridLayout, QGridLayout,
@ -13,6 +12,7 @@ from PySide2.QtWidgets import (
QPushButton, QPushButton,
QInputDialog, QInputDialog,
) )
from dcs import lua
from game import Game from game import Game
from game.ato.flight import Flight from game.ato.flight import Flight
@ -20,7 +20,8 @@ from game.data.weapons import Pylon
from game.persistency import base_path from game.persistency import base_path
from qt_ui.windows.mission.flight.payload.QPylonEditor import QPylonEditor from qt_ui.windows.mission.flight.payload.QPylonEditor import QPylonEditor
BACKUP_FOLDER = dcs.payloads.PayloadDirectories.user() / "_retribution_backups" PAYLOADS_FOLDER = ""
BACKUP_FOLDER = ""
class QLoadoutEditor(QGroupBox): class QLoadoutEditor(QGroupBox):
@ -33,6 +34,11 @@ 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)
@ -65,15 +71,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 = dcs.payloads.PayloadDirectories.user() / f"{ac_id}.lua" payload_file = PAYLOADS_FOLDER / 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_file = BACKUP_FOLDER / f"{ac_id}.lua"
if not BACKUP_FOLDER.exists(): if not BACKUP_FOLDER.exists():
BACKUP_FOLDER.mkdir() BACKUP_FOLDER.mkdir()
with backup_file.open("w", encoding="utf-8") as f: copyfile(payload_file, backup_file)
with payload_file.open("r", encoding="utf-8") as g:
f.write(g.read())
def _save_payload(self) -> None: def _save_payload(self) -> None:
payload_name_input = self._create_input_dialog() payload_name_input = self._create_input_dialog()
@ -89,7 +93,7 @@ class QLoadoutEditor(QGroupBox):
if payload_file.exists(): if payload_file.exists():
self._create_backup_if_needed(ac_id) self._create_backup_if_needed(ac_id)
with payload_file.open("r", encoding="utf-8") as f: with payload_file.open("r", encoding="utf-8") as f:
payloads = dcs.lua.loads(f.read()) payloads = lua.loads(f.read())
if payloads: if payloads:
pdict = payloads["unitPayloads"]["payloads"] pdict = payloads["unitPayloads"]["payloads"]
next_key = len(pdict) + 1 next_key = len(pdict) + 1
@ -101,7 +105,7 @@ class QLoadoutEditor(QGroupBox):
).to_dict() ).to_dict()
with payload_file.open("w", encoding="utf-8") as f: with payload_file.open("w", encoding="utf-8") as f:
f.write("local unitPayloads = ") f.write("local unitPayloads = ")
f.write(dcs.lua.dumps(payloads["unitPayloads"], indent=1)) f.write(lua.dumps(payloads["unitPayloads"], indent=1))
f.write("\nreturn unitPayloads") f.write("\nreturn unitPayloads")
else: else:
with payload_file.open("w", encoding="utf-8") as f: with payload_file.open("w", encoding="utf-8") as f:
@ -113,7 +117,7 @@ class QLoadoutEditor(QGroupBox):
"unitType": f"{self.flight.unit_type.dcs_unit_type.id}", "unitType": f"{self.flight.unit_type.dcs_unit_type.id}",
} }
f.write("local unitPayloads = ") f.write("local unitPayloads = ")
f.write(dcs.lua.dumps(payloads, indent=1)) f.write(lua.dumps(payloads, indent=1))
f.write("\nreturn unitPayloads") f.write("\nreturn unitPayloads")
self.saved.emit(payload_name) self.saved.emit(payload_name)