mirror of
https://github.com/dcs-retribution/dcs-retribution.git
synced 2025-11-10 15:41:24 +00:00
First version of PretenseLuaGenerator, inherited from LuaGenerator
This commit is contained in:
parent
9f271cdb91
commit
7d0234820c
@ -13,23 +13,30 @@ from dcs.triggers import TriggerStart
|
|||||||
|
|
||||||
from game.ato import FlightType
|
from game.ato import FlightType
|
||||||
from game.dcs.aircrafttype import AircraftType
|
from game.dcs.aircrafttype import AircraftType
|
||||||
|
from game.missiongenerator.luagenerator import LuaGenerator
|
||||||
from game.plugins import LuaPluginManager
|
from game.plugins import LuaPluginManager
|
||||||
from game.theater import TheaterGroundObject
|
from game.theater import TheaterGroundObject, Airfield
|
||||||
from game.theater.iadsnetwork.iadsrole import IadsRole
|
from game.theater.iadsnetwork.iadsrole import IadsRole
|
||||||
from game.utils import escape_string_for_lua
|
from game.utils import escape_string_for_lua
|
||||||
from .missiondata import MissionData
|
from game.missiongenerator.missiondata import MissionData
|
||||||
|
|
||||||
if TYPE_CHECKING:
|
if TYPE_CHECKING:
|
||||||
from game import Game
|
from game import Game
|
||||||
|
|
||||||
|
|
||||||
class LuaGenerator:
|
class PretenseLuaGenerator(LuaGenerator):
|
||||||
def __init__(
|
def __init__(
|
||||||
self,
|
self,
|
||||||
game: Game,
|
game: Game,
|
||||||
mission: Mission,
|
mission: Mission,
|
||||||
mission_data: MissionData,
|
mission_data: MissionData,
|
||||||
) -> None:
|
) -> None:
|
||||||
|
super().__init__(
|
||||||
|
game,
|
||||||
|
mission,
|
||||||
|
mission_data,
|
||||||
|
)
|
||||||
|
|
||||||
self.game = game
|
self.game = game
|
||||||
self.mission = mission
|
self.mission = mission
|
||||||
self.mission_data = mission_data
|
self.mission_data = mission_data
|
||||||
@ -207,8 +214,95 @@ class LuaGenerator:
|
|||||||
for role, connections in node.connections.items():
|
for role, connections in node.connections.items():
|
||||||
iads_element.add_data_array(role, connections)
|
iads_element.add_data_array(role, connections)
|
||||||
|
|
||||||
trigger = TriggerStart(comment="Set DCS Retribution data")
|
trigger = TriggerStart(comment="Pretense init")
|
||||||
trigger.add_action(DoScript(String(lua_data.create_operations_lua())))
|
|
||||||
|
init_header_file = open("./resources/plugins/pretense/init_header.lua", "r")
|
||||||
|
init_header = init_header_file.read()
|
||||||
|
|
||||||
|
lua_string = ""
|
||||||
|
lua_data = LuaData("products")
|
||||||
|
|
||||||
|
for cp in self.game.theater.controlpoints:
|
||||||
|
cp_name_trimmed = "".join([i for i in cp.name.lower() if i.isalnum()])
|
||||||
|
cp_side = 2 if cp.captured else 1
|
||||||
|
|
||||||
|
lua_string += f"zones.{cp_name_trimmed} = ZoneCommand:new('{cp.name}')\n"
|
||||||
|
lua_string += (
|
||||||
|
f"zones.{cp_name_trimmed}.initialState = "
|
||||||
|
+ "{ side="
|
||||||
|
+ str(cp_side)
|
||||||
|
+ " }\n"
|
||||||
|
)
|
||||||
|
lua_string += f"zones.{cp_name_trimmed}.keepActive = true\n"
|
||||||
|
if cp.has_helipads:
|
||||||
|
lua_string += f"zones.{cp_name_trimmed}.isHeloSpawn = true\n"
|
||||||
|
if isinstance(cp, Airfield) or cp.has_ground_spawns:
|
||||||
|
lua_string += f"zones.{cp_name_trimmed}.isPlaneSpawn = true\n"
|
||||||
|
lua_string += f"zones.{cp_name_trimmed}.maxResource = 50000\n"
|
||||||
|
lua_string += f"zones.{cp_name_trimmed}:defineUpgrades(" + "{\n"
|
||||||
|
lua_string += " [1] = { --red side\n"
|
||||||
|
lua_string += " presets.upgrades.basic.tent:extend({\n"
|
||||||
|
lua_string += f" name='{cp_name_trimmed}-tent-red',\n"
|
||||||
|
lua_string += " products = {\n"
|
||||||
|
lua_string += " presets.special.red.infantry:extend({ name='mike-defense-red'})\n"
|
||||||
|
lua_string += " }\n"
|
||||||
|
lua_string += " }),\n"
|
||||||
|
lua_string += " presets.upgrades.basic.comPost:extend({\n"
|
||||||
|
lua_string += " name = 'batumi-com-red',\n"
|
||||||
|
lua_string += " products = {"
|
||||||
|
lua_string += " presets.special.red.infantry:extend({ name='batumi-defense-red'}),\n"
|
||||||
|
lua_string += " presets.defenses.red.infantry:extend({ name='batumi-garrison-red' })\n"
|
||||||
|
lua_string += " }\n"
|
||||||
|
lua_string += " }),\n"
|
||||||
|
lua_string += " },\n"
|
||||||
|
lua_string += " [2] = --blue side\n"
|
||||||
|
lua_string += " {\n"
|
||||||
|
lua_string += " presets.upgrades.basic.tent:extend({\n"
|
||||||
|
lua_string += " name='mike-tent-blue',\n"
|
||||||
|
lua_string += " products = {\n"
|
||||||
|
lua_string += " presets.special.blue.infantry:extend({ name='mike-defense-blue'})\n"
|
||||||
|
lua_string += " }\n"
|
||||||
|
lua_string += " }),\n"
|
||||||
|
lua_string += " presets.upgrades.basic.comPost:extend({\n"
|
||||||
|
lua_string += " name = 'batumi-com-blue',\n"
|
||||||
|
lua_string += " products = {"
|
||||||
|
lua_string += " presets.special.blue.infantry:extend({ name='batumi-defense-blue'}),\n"
|
||||||
|
lua_string += " presets.defenses.blue.infantry:extend({ name='batumi-garrison-blue' })\n"
|
||||||
|
lua_string += " }\n"
|
||||||
|
lua_string += " }),\n"
|
||||||
|
lua_string += " presets.upgrades.supply.fuelTank:extend({\n"
|
||||||
|
lua_string += " name = 'batumi-fueltank-blue',\n"
|
||||||
|
lua_string += " products = {\n"
|
||||||
|
lua_string += " presets.missions.supply.convoy_escorted:extend({ name='batumi-supply-convoy-1'}),\n"
|
||||||
|
lua_string += " presets.missions.supply.helo:extend({ name='batumi-supply-blue-1' }),\n"
|
||||||
|
lua_string += " presets.missions.supply.transfer:extend({name='batumi-transfer-blue'})\n"
|
||||||
|
lua_string += " }\n"
|
||||||
|
lua_string += " }),\n"
|
||||||
|
lua_string += " presets.upgrades.airdef.comCenter:extend({\n"
|
||||||
|
lua_string += " name = 'batumi-mission-command-blue',\n"
|
||||||
|
lua_string += " products = {\n"
|
||||||
|
lua_string += " presets.defenses.blue.shorad:extend({ name='batumi-sam-blue' }),\n"
|
||||||
|
lua_string += " presets.missions.attack.sead:extend({name='batumi-sead-blue-1', altitude=25000, expend=AI.Task.WeaponExpend.ALL}),\n"
|
||||||
|
lua_string += " presets.missions.attack.cas:extend({name='batumi-cas-blue-1', altitude=15000, expend=AI.Task.WeaponExpend.ONE}),\n"
|
||||||
|
lua_string += " presets.missions.attack.bai:extend({name='batumi-cas-blue-1', altitude=10000, expend=AI.Task.WeaponExpend.ONE}),\n"
|
||||||
|
lua_string += " presets.missions.attack.strike:extend({name='batumi-strike-blue-1', altitude=20000, expend=AI.Task.WeaponExpend.ALL}),\n"
|
||||||
|
lua_string += " presets.missions.patrol.aircraft:extend({name='batumi-patrol-blue-1', altitude=25000, range=25}),\n"
|
||||||
|
lua_string += " presets.missions.support.awacs:extend({name='batumi-awacs-blue', altitude=30000, freq=257.5}),\n"
|
||||||
|
lua_string += " presets.missions.support.tanker:extend({name='batumi-tanker-blue', altitude=25000, freq=257, tacan='37', variant=\"Drogue\"})\n"
|
||||||
|
lua_string += " }\n"
|
||||||
|
lua_string += " })\n"
|
||||||
|
lua_string += " }\n"
|
||||||
|
lua_string += "})\n"
|
||||||
|
|
||||||
|
init_body_file = open("./resources/plugins/pretense/init_body.lua", "r")
|
||||||
|
init_body = init_body_file.read()
|
||||||
|
|
||||||
|
init_footer_file = open("./resources/plugins/pretense/init_footer.lua", "r")
|
||||||
|
init_footer = init_footer_file.read()
|
||||||
|
|
||||||
|
lua_string = init_header + lua_string + init_body + init_footer
|
||||||
|
|
||||||
|
trigger.add_action(DoScript(String(lua_string)))
|
||||||
self.mission.triggerrules.triggers.append(trigger)
|
self.mission.triggerrules.triggers.append(trigger)
|
||||||
|
|
||||||
def inject_lua_trigger(self, contents: str, comment: str) -> None:
|
def inject_lua_trigger(self, contents: str, comment: str) -> None:
|
||||||
|
|||||||
@ -35,9 +35,9 @@ from game.missiongenerator.frontlineconflictdescription import (
|
|||||||
)
|
)
|
||||||
from game.missiongenerator.kneeboard import KneeboardGenerator
|
from game.missiongenerator.kneeboard import KneeboardGenerator
|
||||||
from game.missiongenerator.lasercoderegistry import LaserCodeRegistry
|
from game.missiongenerator.lasercoderegistry import LaserCodeRegistry
|
||||||
from game.missiongenerator.luagenerator import LuaGenerator
|
|
||||||
from game.missiongenerator.missiondata import MissionData
|
from game.missiongenerator.missiondata import MissionData
|
||||||
from game.missiongenerator.tgogenerator import TgoGenerator
|
from game.missiongenerator.tgogenerator import TgoGenerator
|
||||||
|
from .pretenseluagenerator import PretenseLuaGenerator
|
||||||
from .pretensetgogenerator import PretenseTgoGenerator
|
from .pretensetgogenerator import PretenseTgoGenerator
|
||||||
from .pretensetriggergenerator import PretenseTriggerGenerator
|
from .pretensetriggergenerator import PretenseTriggerGenerator
|
||||||
from game.missiongenerator.visualsgenerator import VisualsGenerator
|
from game.missiongenerator.visualsgenerator import VisualsGenerator
|
||||||
@ -107,7 +107,7 @@ class PretenseMissionGenerator:
|
|||||||
PretenseTriggerGenerator(self.mission, self.game).generate()
|
PretenseTriggerGenerator(self.mission, self.game).generate()
|
||||||
ForcedOptionsGenerator(self.mission, self.game).generate()
|
ForcedOptionsGenerator(self.mission, self.game).generate()
|
||||||
VisualsGenerator(self.mission, self.game).generate()
|
VisualsGenerator(self.mission, self.game).generate()
|
||||||
LuaGenerator(self.game, self.mission, self.mission_data).generate()
|
PretenseLuaGenerator(self.game, self.mission, self.mission_data).generate()
|
||||||
|
|
||||||
self.setup_combined_arms()
|
self.setup_combined_arms()
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user