mirror of
https://github.com/dcs-retribution/dcs-retribution.git
synced 2025-11-10 15:41:24 +00:00
- the base LUA functionality has been implemented as a mandatory plugin - the jtacautolase functionality has been implemented as a plugin - added a VEAF framework plugin The plugins have GUI elements in the Settings window.
91 lines
5.1 KiB
Python
91 lines
5.1 KiB
Python
from PySide2.QtCore import QSize, Qt, QItemSelectionModel, QPoint
|
|
from PySide2.QtWidgets import QLabel, QDialog, QGridLayout, QListView, QStackedLayout, QComboBox, QWidget, \
|
|
QAbstractItemView, QPushButton, QGroupBox, QCheckBox, QVBoxLayout, QSpinBox
|
|
from .base_plugin import BasePlugin
|
|
|
|
class VeafPlugin(BasePlugin):
|
|
nameInUI:str = "VEAF framework"
|
|
nameInSettings:str = "plugin.veaf"
|
|
enabledDefaultValue:bool = False
|
|
|
|
#Allow spawn option
|
|
nameInUI_allowSpawn:str = "Allow units spawn via markers and CTLD (not implemented yet)"
|
|
nameInSettings_allowSpawn:str = "plugin.veaf.allowSpawn"
|
|
|
|
def setupUI(self, settingsWindow, row:int):
|
|
# call the base method to add the plugin selection checkbox
|
|
super().setupUI(settingsWindow, row)
|
|
|
|
if settingsWindow.pluginsOptionsPageLayout:
|
|
self.optionsGroup = QGroupBox(self.nameInUI)
|
|
optionsGroupLayout = QGridLayout();
|
|
optionsGroupLayout.setAlignment(Qt.AlignTop)
|
|
self.optionsGroup.setLayout(optionsGroupLayout)
|
|
settingsWindow.pluginsOptionsPageLayout.addWidget(self.optionsGroup)
|
|
|
|
# allow spawn of objects
|
|
if not self.nameInSettings_allowSpawn in self.settings.plugins:
|
|
self.settings.plugins[self.nameInSettings_allowSpawn] = True
|
|
|
|
self.uiWidget_allowSpawn = QCheckBox()
|
|
self.uiWidget_allowSpawn.setChecked(self.settings.plugins[self.nameInSettings_allowSpawn])
|
|
self.uiWidget_allowSpawn.setEnabled(False)
|
|
self.uiWidget_allowSpawn.toggled.connect(lambda: self.applySetting(settingsWindow))
|
|
|
|
optionsGroupLayout.addWidget(QLabel(self.nameInUI_allowSpawn), 0, 0)
|
|
optionsGroupLayout.addWidget(self.uiWidget_allowSpawn, 0, 1, Qt.AlignRight)
|
|
|
|
# disable or enable the UI in the plugins special page
|
|
self.enableOptionsGroup()
|
|
|
|
def enableOptionsGroup(self):
|
|
pluginEnabled = self.uiWidget.isChecked()
|
|
self.optionsGroup.setEnabled(pluginEnabled)
|
|
|
|
def applySetting(self, settingsWindow):
|
|
# call the base method to apply the plugin selection checkbox value
|
|
super().applySetting(settingsWindow)
|
|
|
|
# save the "allow spawn" option
|
|
self.settings.plugins[self.nameInSettings_allowSpawn] = self.uiWidget_allowSpawn.isChecked()
|
|
|
|
# disable or enable the UI in the plugins special page
|
|
self.enableOptionsGroup()
|
|
|
|
def injectScripts(self, operation):
|
|
if super().injectScripts(operation):
|
|
# bypass JTACAutoLase
|
|
operation.bypassPluginScript("veaf", "jtacautolase")
|
|
|
|
# inject the required scripts
|
|
operation.injectPluginScript("veaf", "src\\scripts\\mist.lua", "mist")
|
|
operation.injectPluginScript("veaf", "src\\scripts\\Moose.lua", "moose")
|
|
operation.injectPluginScript("veaf", "src\\scripts\\CTLD.lua", "ctld")
|
|
operation.injectPluginScript("veaf", "src\\scripts\\NIOD.lua", "niod")
|
|
operation.injectPluginScript("veaf", "src\\scripts\\WeatherMark.lua", "weathermark")
|
|
operation.injectPluginScript("veaf", "src\\scripts\\veaf.lua", "veaf")
|
|
operation.injectPluginScript("veaf", "src\\scripts\\dcsUnits.lua", "dcsunits")
|
|
operation.injectPluginScript("veaf", "src\\scripts\\veafAssets.lua", "veafassets")
|
|
operation.injectPluginScript("veaf", "src\\scripts\\veafCarrierOperations.lua", "veafcarrieroperations")
|
|
operation.injectPluginScript("veaf", "src\\scripts\\veafCasMission.lua", "veafcasmission")
|
|
operation.injectPluginScript("veaf", "src\\scripts\\veafCombatMission.lua", "veafcombatmission")
|
|
operation.injectPluginScript("veaf", "src\\scripts\\veafCombatZone.lua", "veafcombatzone")
|
|
operation.injectPluginScript("veaf", "src\\scripts\\veafGrass.lua", "veafgrass")
|
|
operation.injectPluginScript("veaf", "src\\scripts\\veafInterpreter.lua", "veafinterpreter")
|
|
operation.injectPluginScript("veaf", "src\\scripts\\veafMarkers.lua", "veafmarkers")
|
|
operation.injectPluginScript("veaf", "src\\scripts\\veafMove.lua", "veafmove")
|
|
operation.injectPluginScript("veaf", "src\\scripts\\veafNamedPoints.lua", "veafnamedpoints")
|
|
operation.injectPluginScript("veaf", "src\\scripts\\veafRadio.lua", "veafradio")
|
|
operation.injectPluginScript("veaf", "src\\scripts\\veafRemote.lua", "veafremote")
|
|
operation.injectPluginScript("veaf", "src\\scripts\\veafSecurity.lua", "veafsecurity")
|
|
operation.injectPluginScript("veaf", "src\\scripts\\veafShortcuts.lua", "veafshortcuts")
|
|
operation.injectPluginScript("veaf", "src\\scripts\\veafSpawn.lua", "veafspawn")
|
|
operation.injectPluginScript("veaf", "src\\scripts\\veafTransportMission.lua", "veaftransportmission")
|
|
operation.injectPluginScript("veaf", "src\\scripts\\veafUnits.lua", "veafunits")
|
|
|
|
|
|
def injectConfiguration(self, operation):
|
|
if super().injectConfiguration(operation):
|
|
operation.injectPluginScript("veaf", "src\\config\\missionConfig.lua", "missionconfig")
|
|
|