mirror of
https://github.com/FlightControl-Master/MOOSE.git
synced 2026-08-24 20:15:30 +00:00
SEAD - (re-)added emissions on/off option and ability to link object functions for state changes.
This commit is contained in:
@@ -17,7 +17,7 @@
|
|||||||
--
|
--
|
||||||
-- ### Authors: **FlightControl**, **applevangelist**
|
-- ### Authors: **FlightControl**, **applevangelist**
|
||||||
--
|
--
|
||||||
-- Last Update: Aug 2021
|
-- Last Update: Nov 2021
|
||||||
--
|
--
|
||||||
-- ===
|
-- ===
|
||||||
--
|
--
|
||||||
@@ -51,6 +51,8 @@ SEAD = {
|
|||||||
SuppressedGroups = {},
|
SuppressedGroups = {},
|
||||||
EngagementRange = 75, -- default 75% engagement range Feature Request #1355
|
EngagementRange = 75, -- default 75% engagement range Feature Request #1355
|
||||||
Padding = 10,
|
Padding = 10,
|
||||||
|
CallBack = nil,
|
||||||
|
UseCallBack = false,
|
||||||
}
|
}
|
||||||
|
|
||||||
--- Missile enumerators
|
--- Missile enumerators
|
||||||
@@ -114,10 +116,14 @@ function SEAD:New( SEADGroupPrefixes, Padding )
|
|||||||
local padding = Padding or 10
|
local padding = Padding or 10
|
||||||
if padding < 10 then padding = 10 end
|
if padding < 10 then padding = 10 end
|
||||||
self.Padding = padding
|
self.Padding = padding
|
||||||
|
self.UseEmissionsOnOff = false
|
||||||
|
|
||||||
|
self.CallBack = nil
|
||||||
|
self.UseCallBack = false
|
||||||
|
|
||||||
self:HandleEvent( EVENTS.Shot, self.HandleEventShot )
|
self:HandleEvent( EVENTS.Shot, self.HandleEventShot )
|
||||||
|
|
||||||
self:I("*** SEAD - Started Version 0.3.1")
|
self:I("*** SEAD - Started Version 0.3.2")
|
||||||
return self
|
return self
|
||||||
end
|
end
|
||||||
|
|
||||||
@@ -167,6 +173,30 @@ function SEAD:SetPadding(Padding)
|
|||||||
return self
|
return self
|
||||||
end
|
end
|
||||||
|
|
||||||
|
--- Set SEAD to use emissions on/off in addition to alarm state.
|
||||||
|
-- @param #SEAD self
|
||||||
|
-- @param #boolean Switch True for on, false for off.
|
||||||
|
-- @return #SEAD self
|
||||||
|
function SEAD:SwitchEmissions(Switch)
|
||||||
|
self:T({Switch})
|
||||||
|
self.UseEmissionsOnOff = Switch
|
||||||
|
return self
|
||||||
|
end
|
||||||
|
|
||||||
|
--- Add an object to call back when going evasive.
|
||||||
|
-- @param #SEAD self
|
||||||
|
-- @param #table Object The object to call. Needs to have object functions as follows:
|
||||||
|
-- `:SeadSuppressionPlanned(Group, Name, SuppressionStartTime, SuppressionEndTime)`
|
||||||
|
-- `:SeadSuppressionStart(Group, Name)`,
|
||||||
|
-- `:SeadSuppressionEnd(Group, Name)`,
|
||||||
|
-- @return #SEAD self
|
||||||
|
function SEAD:AddCallBack(Object)
|
||||||
|
self:T({Class=Object.ClassName})
|
||||||
|
self.CallBack = Object
|
||||||
|
self.UseCallBack = true
|
||||||
|
return self
|
||||||
|
end
|
||||||
|
|
||||||
--- Check if a known HARM was fired
|
--- Check if a known HARM was fired
|
||||||
-- @param #SEAD self
|
-- @param #SEAD self
|
||||||
-- @param #string WeaponName
|
-- @param #string WeaponName
|
||||||
@@ -293,16 +323,34 @@ function SEAD:HandleEventShot( EventData )
|
|||||||
local function SuppressionStart(args)
|
local function SuppressionStart(args)
|
||||||
self:T(string.format("*** SEAD - %s Radar Off & Relocating",args[2]))
|
self:T(string.format("*** SEAD - %s Radar Off & Relocating",args[2]))
|
||||||
local grp = args[1] -- Wrapper.Group#GROUP
|
local grp = args[1] -- Wrapper.Group#GROUP
|
||||||
|
local name = args[2] -- #string Group Name
|
||||||
|
if self.UseEmissionsOnOff then
|
||||||
|
grp:EnableEmission(false)
|
||||||
|
else
|
||||||
grp:OptionAlarmStateGreen()
|
grp:OptionAlarmStateGreen()
|
||||||
|
end
|
||||||
grp:RelocateGroundRandomInRadius(20,300,false,false,"Diamond")
|
grp:RelocateGroundRandomInRadius(20,300,false,false,"Diamond")
|
||||||
|
if self.UseCallBack then
|
||||||
|
local object = self.CallBack
|
||||||
|
object:SeadSuppressionStart(grp,name)
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
local function SuppressionStop(args)
|
local function SuppressionStop(args)
|
||||||
self:T(string.format("*** SEAD - %s Radar On",args[2]))
|
self:T(string.format("*** SEAD - %s Radar On",args[2]))
|
||||||
local grp = args[1] -- Wrapper.Group#GROUP
|
local grp = args[1] -- Wrapper.Group#GROUP
|
||||||
|
local name = args[2] -- #string Group Nam
|
||||||
|
if self.UseEmissionsOnOff then
|
||||||
|
grp:EnableEmission(true)
|
||||||
|
else
|
||||||
grp:OptionAlarmStateRed()
|
grp:OptionAlarmStateRed()
|
||||||
|
end
|
||||||
grp:OptionEngageRange(self.EngagementRange)
|
grp:OptionEngageRange(self.EngagementRange)
|
||||||
self.SuppressedGroups[args[2]] = false
|
self.SuppressedGroups[name] = false
|
||||||
|
if self.UseCallBack then
|
||||||
|
local object = self.CallBack
|
||||||
|
object:SeadSuppressionEnd(grp,name)
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
-- randomize switch-on time
|
-- randomize switch-on time
|
||||||
@@ -318,6 +366,10 @@ function SEAD:HandleEventShot( EventData )
|
|||||||
timer.scheduleFunction(SuppressionStart,{_targetgroup,_targetgroupname},SuppressionStartTime)
|
timer.scheduleFunction(SuppressionStart,{_targetgroup,_targetgroupname},SuppressionStartTime)
|
||||||
timer.scheduleFunction(SuppressionStop,{_targetgroup,_targetgroupname},SuppressionEndTime)
|
timer.scheduleFunction(SuppressionStop,{_targetgroup,_targetgroupname},SuppressionEndTime)
|
||||||
self.SuppressedGroups[_targetgroupname] = true
|
self.SuppressedGroups[_targetgroupname] = true
|
||||||
|
if self.UseCallBack then
|
||||||
|
local object = self.CallBack
|
||||||
|
object:SeadSuppressionPlanned(_targetgroup,_targetgroupname,SuppressionStartTime,SuppressionEndTime)
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|||||||
Reference in New Issue
Block a user