mirror of
https://github.com/dcs-retribution/dcs-retribution.git
synced 2025-11-10 15:41:24 +00:00
Factor out Lua generation.
This commit is contained in:
parent
200c13dc31
commit
851c2d88a9
@ -320,6 +320,45 @@ class Operation:
|
|||||||
if self.game.settings.perf_smoke_gen:
|
if self.game.settings.perf_smoke_gen:
|
||||||
visualgen.generate()
|
visualgen.generate()
|
||||||
|
|
||||||
|
self.generate_lua(airgen, airsupportgen, jtacs)
|
||||||
|
|
||||||
|
# Inject Plugins Lua Scripts and data
|
||||||
|
for plugin in LuaPluginManager.plugins():
|
||||||
|
if plugin.enabled:
|
||||||
|
plugin.inject_scripts(self)
|
||||||
|
plugin.inject_configuration(self)
|
||||||
|
|
||||||
|
self.assign_channels_to_flights(airgen.flights,
|
||||||
|
airsupportgen.air_support)
|
||||||
|
self.notify_info_generators(groundobjectgen, airsupportgen, jtacs, airgen)
|
||||||
|
|
||||||
|
def assign_channels_to_flights(self, flights: List[FlightData],
|
||||||
|
air_support: AirSupport) -> None:
|
||||||
|
"""Assigns preset radio channels for client flights."""
|
||||||
|
for flight in flights:
|
||||||
|
if not flight.client_units:
|
||||||
|
continue
|
||||||
|
self.assign_channels_to_flight(flight, air_support)
|
||||||
|
|
||||||
|
def assign_channels_to_flight(self, flight: FlightData,
|
||||||
|
air_support: AirSupport) -> None:
|
||||||
|
"""Assigns preset radio channels for a client flight."""
|
||||||
|
airframe = flight.aircraft_type
|
||||||
|
|
||||||
|
try:
|
||||||
|
aircraft_data = AIRCRAFT_DATA[airframe.id]
|
||||||
|
except KeyError:
|
||||||
|
logging.warning(f"No aircraft data for {airframe.id}")
|
||||||
|
return
|
||||||
|
|
||||||
|
if aircraft_data.channel_allocator is not None:
|
||||||
|
aircraft_data.channel_allocator.assign_channels_for_flight(
|
||||||
|
flight, air_support
|
||||||
|
)
|
||||||
|
|
||||||
|
def generate_lua(self, airgen: AircraftConflictGenerator,
|
||||||
|
airsupportgen: AirSupportConflictGenerator,
|
||||||
|
jtacs: List[JtacInfo]) -> None:
|
||||||
luaData = {}
|
luaData = {}
|
||||||
luaData["AircraftCarriers"] = {}
|
luaData["AircraftCarriers"] = {}
|
||||||
luaData["Tankers"] = {}
|
luaData["Tankers"] = {}
|
||||||
@ -357,7 +396,10 @@ class Operation:
|
|||||||
}
|
}
|
||||||
|
|
||||||
for flight in airgen.flights:
|
for flight in airgen.flights:
|
||||||
if flight.friendly and flight.flight_type in [FlightType.ANTISHIP, FlightType.DEAD, FlightType.SEAD, FlightType.STRIKE]:
|
if flight.friendly and flight.flight_type in [FlightType.ANTISHIP,
|
||||||
|
FlightType.DEAD,
|
||||||
|
FlightType.SEAD,
|
||||||
|
FlightType.STRIKE]:
|
||||||
flightType = flight.flight_type.name
|
flightType = flight.flight_type.name
|
||||||
flightTarget = flight.package.target
|
flightTarget = flight.package.target
|
||||||
if flightTarget:
|
if flightTarget:
|
||||||
@ -372,7 +414,8 @@ class Operation:
|
|||||||
luaData["TargetPoints"][flightTargetName] = {
|
luaData["TargetPoints"][flightTargetName] = {
|
||||||
"name": flightTargetName,
|
"name": flightTargetName,
|
||||||
"type": flightTargetType,
|
"type": flightTargetType,
|
||||||
"position": { "x": flightTarget.position.x, "y": flightTarget.position.y}
|
"position": {"x": flightTarget.position.x,
|
||||||
|
"y": flightTarget.position.y}
|
||||||
}
|
}
|
||||||
|
|
||||||
# set a LUA table with data from Liberation that we want to set
|
# set a LUA table with data from Liberation that we want to set
|
||||||
@ -467,41 +510,6 @@ dcsLiberation.TargetPoints = {
|
|||||||
|
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
|
||||||
trigger = TriggerStart(comment="Set DCS Liberation data")
|
trigger = TriggerStart(comment="Set DCS Liberation data")
|
||||||
trigger.add_action(DoScript(String(lua)))
|
trigger.add_action(DoScript(String(lua)))
|
||||||
self.current_mission.triggerrules.triggers.append(trigger)
|
self.current_mission.triggerrules.triggers.append(trigger)
|
||||||
|
|
||||||
# Inject Plugins Lua Scripts and data
|
|
||||||
for plugin in LuaPluginManager.plugins():
|
|
||||||
if plugin.enabled:
|
|
||||||
plugin.inject_scripts(self)
|
|
||||||
plugin.inject_configuration(self)
|
|
||||||
|
|
||||||
self.assign_channels_to_flights(airgen.flights,
|
|
||||||
airsupportgen.air_support)
|
|
||||||
self.notify_info_generators(groundobjectgen, airsupportgen, jtacs, airgen)
|
|
||||||
|
|
||||||
def assign_channels_to_flights(self, flights: List[FlightData],
|
|
||||||
air_support: AirSupport) -> None:
|
|
||||||
"""Assigns preset radio channels for client flights."""
|
|
||||||
for flight in flights:
|
|
||||||
if not flight.client_units:
|
|
||||||
continue
|
|
||||||
self.assign_channels_to_flight(flight, air_support)
|
|
||||||
|
|
||||||
def assign_channels_to_flight(self, flight: FlightData,
|
|
||||||
air_support: AirSupport) -> None:
|
|
||||||
"""Assigns preset radio channels for a client flight."""
|
|
||||||
airframe = flight.aircraft_type
|
|
||||||
|
|
||||||
try:
|
|
||||||
aircraft_data = AIRCRAFT_DATA[airframe.id]
|
|
||||||
except KeyError:
|
|
||||||
logging.warning(f"No aircraft data for {airframe.id}")
|
|
||||||
return
|
|
||||||
|
|
||||||
if aircraft_data.channel_allocator is not None:
|
|
||||||
aircraft_data.channel_allocator.assign_channels_for_flight(
|
|
||||||
flight, air_support
|
|
||||||
)
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user