Fix Skynet scripting errors

added a better exception handling

closes #2205
This commit is contained in:
RndName 2022-05-04 17:23:41 +02:00
parent 799e01c7b3
commit 321bd4e874
No known key found for this signature in database
GPG Key ID: 5EF516FD9537F7C0

View File

@ -31,12 +31,12 @@ if dcsLiberation and SkynetIADS then
end end
end end
env.info(string.format("DCSLiberation|Skynet-IADS plugin - createRedIADS=%s",tostring(createRedIADS))) env.info(string.format("DCSLiberation|Skynet-IADS plugin - createRedIADS=%s", tostring(createRedIADS)))
env.info(string.format("DCSLiberation|Skynet-IADS plugin - createBlueIADS=%s",tostring(createBlueIADS))) env.info(string.format("DCSLiberation|Skynet-IADS plugin - createBlueIADS=%s", tostring(createBlueIADS)))
env.info(string.format("DCSLiberation|Skynet-IADS plugin - includeRedInRadio=%s",tostring(includeRedInRadio))) env.info(string.format("DCSLiberation|Skynet-IADS plugin - includeRedInRadio=%s", tostring(includeRedInRadio)))
env.info(string.format("DCSLiberation|Skynet-IADS plugin - includeBlueInRadio=%s",tostring(includeBlueInRadio))) env.info(string.format("DCSLiberation|Skynet-IADS plugin - includeBlueInRadio=%s", tostring(includeBlueInRadio)))
env.info(string.format("DCSLiberation|Skynet-IADS plugin - debugRED=%s",tostring(debugRED))) env.info(string.format("DCSLiberation|Skynet-IADS plugin - debugRED=%s", tostring(debugRED)))
env.info(string.format("DCSLiberation|Skynet-IADS plugin - debugBLUE=%s",tostring(debugBLUE))) env.info(string.format("DCSLiberation|Skynet-IADS plugin - debugBLUE=%s", tostring(debugBLUE)))
-- actual configuration code -- actual configuration code
local function initializeIADSElement(iads, iads_unit, element) local function initializeIADSElement(iads, iads_unit, element)
@ -63,21 +63,25 @@ if dcsLiberation and SkynetIADS then
iads_unit:setAutonomousBehaviour(element.autonomous_behaviour) iads_unit:setAutonomousBehaviour(element.autonomous_behaviour)
end end
if element.ConnectionNode then if element.ConnectionNode then
for i,cn in pairs(element.ConnectionNode) do for i, cn in pairs(element.ConnectionNode) do
env.info(string.format("DCSLiberation|Skynet-IADS plugin - adding IADS ConnectionNode %s", cn)) env.info(string.format("DCSLiberation|Skynet-IADS plugin - adding IADS ConnectionNode %s", cn))
local connection_node = StaticObject.getByName(cn .. " object") -- pydcs adds ' object' to the unit name for static elements local connection_node = StaticObject.getByName(cn .. " object") -- pydcs adds ' object' to the unit name for static elements
iads_unit:addConnectionNode(connection_node) if connection_node then
iads_unit:addConnectionNode(connection_node)
end
end end
end end
if element.PowerSource then if element.PowerSource then
for i,ps in pairs(element.PowerSource) do for i, ps in pairs(element.PowerSource) do
env.info(string.format("DCSLiberation|Skynet-IADS plugin - adding IADS PowerSource %s", ps)) env.info(string.format("DCSLiberation|Skynet-IADS plugin - adding IADS PowerSource %s", ps))
local power_source = StaticObject.getByName(ps .. " object") -- pydcs adds ' object' to the unit name for static elements local power_source = StaticObject.getByName(ps .. " object") -- pydcs adds ' object' to the unit name for static elements
iads_unit:addPowerSource(power_source) if power_source then
iads_unit:addPowerSource(power_source)
end
end end
end end
if element.PD then if element.PD then
for i,pd in pairs(element.PD) do for i, pd in pairs(element.PD) do
env.info(string.format("DCSLiberation|Skynet-IADS plugin - adding IADS Point Defence %s", pd)) env.info(string.format("DCSLiberation|Skynet-IADS plugin - adding IADS Point Defence %s", pd))
local point_defence = iads:addSAMSite(pd) local point_defence = iads:addSAMSite(pd)
if point_defence ~= nil then if point_defence ~= nil then
@ -136,33 +140,38 @@ if dcsLiberation and SkynetIADS then
if dcsLiberation.IADS then if dcsLiberation.IADS then
local coalition_iads = dcsLiberation.IADS[coalitionPrefix] local coalition_iads = dcsLiberation.IADS[coalitionPrefix]
if coalition_iads.Ewr then if coalition_iads.Ewr then
for _,unit in pairs(coalition_iads.Ewr) do for _, unit in pairs(coalition_iads.Ewr) do
env.info(string.format("DCSLiberation|Skynet-IADS plugin - processing IADS EWR %s", unit.dcsGroupName)) env.info(string.format("DCSLiberation|Skynet-IADS plugin - processing IADS EWR %s", unit.dcsGroupName))
local iads_unit = iads:addEarlyWarningRadar(unit.dcsGroupName) local iads_unit = iads:addEarlyWarningRadar(unit.dcsGroupName)
initializeIADSElement(iads, iads_unit, unit) initializeIADSElement(iads, iads_unit, unit)
end end
end end
if coalition_iads.Sam then if coalition_iads.Sam then
for _,unit in pairs(coalition_iads.Sam) do for _, unit in pairs(coalition_iads.Sam) do
env.info(string.format("DCSLiberation|Skynet-IADS plugin - processing IADS SAM %s", unit.dcsGroupName)) env.info(string.format("DCSLiberation|Skynet-IADS plugin - processing IADS SAM %s", unit.dcsGroupName))
local iads_unit = iads:addSAMSite(unit.dcsGroupName) local iads_unit = iads:addSAMSite(unit.dcsGroupName)
initializeIADSElement(iads, iads_unit, unit) initializeIADSElement(iads, iads_unit, unit)
end end
end end
if coalition_iads.SamAsEwr then if coalition_iads.SamAsEwr then
for _,unit in pairs(coalition_iads.SamAsEwr) do for _, unit in pairs(coalition_iads.SamAsEwr) do
env.info(string.format("DCSLiberation|Skynet-IADS plugin - processing IADS SAM as EWR %s", unit.dcsGroupName)) env.info(string.format("DCSLiberation|Skynet-IADS plugin - processing IADS SAM as EWR %s", unit.dcsGroupName))
local iads_unit = iads:addSAMSite(unit.dcsGroupName) local iads_unit = iads:addSAMSite(unit.dcsGroupName)
iads_unit:setActAsEW(true) if iads_unit ~= nil then
initializeIADSElement(iads, iads_unit, unit) -- only process if its a valid skynet group
iads_unit:setActAsEW(true)
initializeIADSElement(iads, iads_unit, unit)
end
end end
end end
if coalition_iads.CommandCenter then if coalition_iads.CommandCenter then
for _,unit in pairs(coalition_iads.CommandCenter) do for _, unit in pairs(coalition_iads.CommandCenter) do
env.info(string.format("DCSLiberation|Skynet-IADS plugin - processing IADS Command Center %s", unit.dcsGroupName)) env.info(string.format("DCSLiberation|Skynet-IADS plugin - processing IADS Command Center %s", unit.dcsGroupName))
local commandCenter = StaticObject.getByName(unit.dcsGroupName .. " object") -- pydcs adds ' object' to the unit name for static elements local commandCenter = StaticObject.getByName(unit.dcsGroupName .. " object") -- pydcs adds ' object' to the unit name for static elements
local iads_unit = iads:addCommandCenter(commandCenter) if commandCenter then
initializeIADSElement(iads, iads_unit, unit) local iads_unit = iads:addCommandCenter(commandCenter)
initializeIADSElement(iads, iads_unit, unit)
end
end end
end end
end end
@ -192,4 +201,4 @@ if dcsLiberation and SkynetIADS then
initializeIADS(blueIADS, 2, includeBlueInRadio, debugBLUE) -- BLUE initializeIADS(blueIADS, 2, includeBlueInRadio, debugBLUE) -- BLUE
end end
end end