diff --git a/.gitignore b/.gitignore index 68c604e4..8c7d79f3 100644 --- a/.gitignore +++ b/.gitignore @@ -21,3 +21,4 @@ logs/liberation.log qt_ui/logs/liberation.log *.psd +resources/scripts/plugins/* diff --git a/game/operation/operation.py b/game/operation/operation.py index f66eb124..2449746e 100644 --- a/game/operation/operation.py +++ b/game/operation/operation.py @@ -234,30 +234,29 @@ class Operation: if self.game.settings.perf_smoke_gen: self.visualgen.generate() - # Inject Lua Scripts - load_mist = TriggerStart(comment="Load Mist Lua Framework") - with open("./resources/scripts/mist_4_3_74.lua") as f: - load_mist.add_action(DoScript(String(f.read()))) - self.current_mission.triggerrules.triggers.append(load_mist) + # Inject Plugins Lua Scripts + listOfPluginsScripts = [] + try: + with open("./resources/scripts/plugins/__plugins.lst", "r") as a_file: + for line in a_file: + name = line.strip() + if not name.startswith( '#' ): + trigger = TriggerStart(comment="Load " + name) + listOfPluginsScripts.append(name) + fileref = self.current_mission.map_resource.add_resource_file("./resources/scripts/plugins/" + name) + trigger.add_action(DoScriptFile(fileref)) + self.current_mission.triggerrules.triggers.append(trigger) + except Exception as e: + print(e) - # Load Ciribob's JTACAutoLase script - load_autolase = TriggerStart(comment="Load JTAC script") - with open("./resources/scripts/JTACAutoLase.lua") as f: - - script = f.read() - script = script + "\n" - - smoke = "true" - if hasattr(self.game.settings, "jtac_smoke_on"): - if not self.game.settings.jtac_smoke_on: - smoke = "false" - - for jtac in jtacs: - script += f"\nJTACAutoLase('{jtac.unit_name}', {jtac.code}, {smoke}, 'vehicle')\n" - - load_autolase.add_action(DoScript(String(script))) - self.current_mission.triggerrules.triggers.append(load_autolase) + # Inject Mist Script if not done already in the plugins + if not "mist.lua" in listOfPluginsScripts and not "mist_4_3_74.lua" in listOfPluginsScripts: # don't load mist twice + trigger = TriggerStart(comment="Load Mist Lua Framework") + fileref = self.current_mission.map_resource.add_resource_file("./resources/scripts/mist_4_3_74.lua") + trigger.add_action(DoScriptFile(fileref)) + self.current_mission.triggerrules.triggers.append(trigger) + # Inject Liberation script load_dcs_libe = TriggerStart(comment="Load DCS Liberation Script") with open("./resources/scripts/dcs_liberation.lua") as f: script = f.read() @@ -268,6 +267,25 @@ class Operation: load_dcs_libe.add_action(DoScript(String(script))) self.current_mission.triggerrules.triggers.append(load_dcs_libe) + # Load Ciribob's JTACAutoLase script if not done already in the plugins + if not "JTACAutoLase.lua" in listOfPluginsScripts: # don't load JTACAutoLase twice + load_autolase = TriggerStart(comment="Load JTAC script") + with open("./resources/scripts/JTACAutoLase.lua") as f: + + script = f.read() + script = script + "\n" + + smoke = "true" + if hasattr(self.game.settings, "jtac_smoke_on"): + if not self.game.settings.jtac_smoke_on: + smoke = "false" + + for jtac in jtacs: + script += f"\nJTACAutoLase('{jtac.unit_name}', {jtac.code}, {smoke}, 'vehicle')\n" + + load_autolase.add_action(DoScript(String(script))) + self.current_mission.triggerrules.triggers.append(load_autolase) + self.assign_channels_to_flights() kneeboard_generator = KneeboardGenerator(self.current_mission) diff --git a/resources/scripts/plugins/__plugins.lst.sample b/resources/scripts/plugins/__plugins.lst.sample new file mode 100644 index 00000000..27cbf0c0 --- /dev/null +++ b/resources/scripts/plugins/__plugins.lst.sample @@ -0,0 +1,29 @@ +# this is a list of lua scripts that will be injected in the mission, in the same order +mist.lua +Moose.lua +CTLD.lua +NIOD.lua +WeatherMark.lua +veaf.lua +dcsUnits.lua +# JTACAutoLase is an empty file, only there to disable loading the official script (already included in CTLD) +JTACAutoLase.lua +veafAssets.lua +veafCarrierOperations.lua +veafCarrierOperations2.lua +veafCasMission.lua +veafCombatMission.lua +veafCombatZone.lua +veafGrass.lua +veafInterpreter.lua +veafMarkers.lua +veafMove.lua +veafNamedPoints.lua +veafRadio.lua +veafRemote.lua +veafSecurity.lua +veafShortcuts.lua +veafSpawn.lua +veafTransportMission.lua +veafUnits.lua +missionConfig.lua diff --git a/resources/scripts/plugins/link.cmd.sample b/resources/scripts/plugins/link.cmd.sample new file mode 100644 index 00000000..e9c69ce7 --- /dev/null +++ b/resources/scripts/plugins/link.cmd.sample @@ -0,0 +1,29 @@ +rem this can be used to easily create hardlinks from your plugin development folder + +mklink mist.lua d:\dev\_VEAF\VEAF-Mission-Creation-Tools\src\scripts\community\mist.lua +mklink Moose.lua d:\dev\_VEAF\VEAF-Mission-Creation-Tools\src\scripts\community\Moose.lua +mklink CTLD.lua d:\dev\_VEAF\VEAF-Mission-Creation-Tools\src\scripts\community\CTLD.lua +mklink NIOD.lua d:\dev\_VEAF\VEAF-Mission-Creation-Tools\src\scripts\community\NIOD.lua +mklink WeatherMark.lua d:\dev\_VEAF\VEAF-Mission-Creation-Tools\src\scripts\community\WeatherMark.lua +mklink veaf.lua d:\dev\_VEAF\VEAF-Mission-Creation-Tools\src\scripts\veaf\veaf.lua +mklink dcsUnits.lua d:\dev\_VEAF\VEAF-Mission-Creation-Tools\src\scripts\veaf\dcsUnits.lua +mklink JTACAutoLase.lua d:\dev\_VEAF\VEAF-Mission-Creation-Tools\src\scripts\veaf\JTACAutoLase.lua +mklink veafAssets.lua d:\dev\_VEAF\VEAF-Mission-Creation-Tools\src\scripts\veaf\veafAssets.lua +mklink veafCarrierOperations.lua d:\dev\_VEAF\VEAF-Mission-Creation-Tools\src\scripts\veaf\veafCarrierOperations.lua +mklink veafCarrierOperations2.lua d:\dev\_VEAF\VEAF-Mission-Creation-Tools\src\scripts\veaf\veafCarrierOperations2.lua +mklink veafCasMission.lua d:\dev\_VEAF\VEAF-Mission-Creation-Tools\src\scripts\veaf\veafCasMission.lua +mklink veafCombatMission.lua d:\dev\_VEAF\VEAF-Mission-Creation-Tools\src\scripts\veaf\veafCombatMission.lua +mklink veafCombatZone.lua d:\dev\_VEAF\VEAF-Mission-Creation-Tools\src\scripts\veaf\veafCombatZone.lua +mklink veafGrass.lua d:\dev\_VEAF\VEAF-Mission-Creation-Tools\src\scripts\veaf\veafGrass.lua +mklink veafInterpreter.lua d:\dev\_VEAF\VEAF-Mission-Creation-Tools\src\scripts\veaf\veafInterpreter.lua +mklink veafMarkers.lua d:\dev\_VEAF\VEAF-Mission-Creation-Tools\src\scripts\veaf\veafMarkers.lua +mklink veafMove.lua d:\dev\_VEAF\VEAF-Mission-Creation-Tools\src\scripts\veaf\veafMove.lua +mklink veafNamedPoints.lua d:\dev\_VEAF\VEAF-Mission-Creation-Tools\src\scripts\veaf\veafNamedPoints.lua +mklink veafRadio.lua d:\dev\_VEAF\VEAF-Mission-Creation-Tools\src\scripts\veaf\veafRadio.lua +mklink veafRemote.lua d:\dev\_VEAF\VEAF-Mission-Creation-Tools\src\scripts\veaf\veafRemote.lua +mklink veafSecurity.lua d:\dev\_VEAF\VEAF-Mission-Creation-Tools\src\scripts\veaf\veafSecurity.lua +mklink veafShortcuts.lua d:\dev\_VEAF\VEAF-Mission-Creation-Tools\src\scripts\veaf\veafShortcuts.lua +mklink veafSpawn.lua d:\dev\_VEAF\VEAF-Mission-Creation-Tools\src\scripts\veaf\veafSpawn.lua +mklink veafTransportMission.lua d:\dev\_VEAF\VEAF-Mission-Creation-Tools\src\scripts\veaf\veafTransportMission.lua +mklink veafUnits.lua d:\dev\_VEAF\VEAF-Mission-Creation-Tools\src\scripts\veaf\veafUnits.lua +mklink missionConfig.lua d:\dev\_VEAF\VEAF-Mission-Creation-Tools\src\scripts\veaf\missionConfig.lua