mirror of
https://github.com/FlightControl-Master/MOOSE.git
synced 2025-10-29 16:58:06 +00:00
various
This commit is contained in:
parent
68c75a4e34
commit
619cc3c047
@ -82,6 +82,8 @@ do
|
|||||||
-- @field #boolean MonitoringOn
|
-- @field #boolean MonitoringOn
|
||||||
-- @field Core.Set#SET_GROUP clientset
|
-- @field Core.Set#SET_GROUP clientset
|
||||||
-- @field Utilities.FiFo#FIFO FlightGroups
|
-- @field Utilities.FiFo#FIFO FlightGroups
|
||||||
|
-- @field #number PictureInterval Interval in seconds for general picture
|
||||||
|
-- @field #number PictureTimeStamp Interval timestamp
|
||||||
-- @extends Core.Fsm#FSM
|
-- @extends Core.Fsm#FSM
|
||||||
|
|
||||||
---
|
---
|
||||||
@ -145,6 +147,8 @@ AWACS = {
|
|||||||
AwacsReady = false,
|
AwacsReady = false,
|
||||||
CatchAllMissions = {},
|
CatchAllMissions = {},
|
||||||
CatchAllFGs = {},
|
CatchAllFGs = {},
|
||||||
|
PictureInterval = 300,
|
||||||
|
PictureTimeStamp = 0,
|
||||||
}
|
}
|
||||||
|
|
||||||
---
|
---
|
||||||
@ -274,7 +278,12 @@ AWACS.THREATLEVEL = {
|
|||||||
-- @field Core.Menu#MENU_GROUP_COMMAND picture
|
-- @field Core.Menu#MENU_GROUP_COMMAND picture
|
||||||
-- @field Core.Menu#MENU_GROUP_COMMAND bogeydope
|
-- @field Core.Menu#MENU_GROUP_COMMAND bogeydope
|
||||||
-- @field Core.Menu#MENU_GROUP_COMMAND declare
|
-- @field Core.Menu#MENU_GROUP_COMMAND declare
|
||||||
|
-- @field Core.Menu#MENU_GROUP tasking
|
||||||
-- @field Core.Menu#MENU_GROUP_COMMAND showtask
|
-- @field Core.Menu#MENU_GROUP_COMMAND showtask
|
||||||
|
-- @field Core.Menu#MENU_GROUP_COMMAND judy
|
||||||
|
-- @field Core.Menu#MENU_GROUP_COMMAND unable
|
||||||
|
-- @field Core.Menu#MENU_GROUP_COMMAND abort
|
||||||
|
-- @field Core.Menu#MENU_GROUP_COMMAND commit
|
||||||
|
|
||||||
---
|
---
|
||||||
-- @type AWACS.ManagedGroup
|
-- @type AWACS.ManagedGroup
|
||||||
@ -481,6 +490,9 @@ function AWACS:New(Name,AirWing,Coalition,AirbaseName,AwacsOrbit,OpsZone,AnchorZ
|
|||||||
self.FlightGroups = FIFO:New() -- Utilities.FiFo#FIFO
|
self.FlightGroups = FIFO:New() -- Utilities.FiFo#FIFO
|
||||||
self.Countactcounter = 0
|
self.Countactcounter = 0
|
||||||
|
|
||||||
|
self.PictureInterval = 300 -- picture every 5 mins
|
||||||
|
self.PictureTimeStamp = 0 -- timestamp
|
||||||
|
|
||||||
local speed = 250
|
local speed = 250
|
||||||
self.SpeedBase = speed
|
self.SpeedBase = speed
|
||||||
self.Speed = UTILS.KnotsToAltKIAS(speed,self.AwacsAngels*1000)
|
self.Speed = UTILS.KnotsToAltKIAS(speed,self.AwacsAngels*1000)
|
||||||
@ -567,7 +579,7 @@ function AWACS:New(Name,AirWing,Coalition,AirbaseName,AwacsOrbit,OpsZone,AnchorZ
|
|||||||
MonitoringData.EscortsShiftChange = false
|
MonitoringData.EscortsShiftChange = false
|
||||||
MonitoringData.EscortsStateFG= "unknown"
|
MonitoringData.EscortsStateFG= "unknown"
|
||||||
MonitoringData.EscortsStateMission = "unknown"
|
MonitoringData.EscortsStateMission = "unknown"
|
||||||
self.MonitoringOn = true -- #boolean
|
self.MonitoringOn = false -- #boolean
|
||||||
self.MonitoringData = MonitoringData
|
self.MonitoringData = MonitoringData
|
||||||
|
|
||||||
self.CatchAllMissions = {}
|
self.CatchAllMissions = {}
|
||||||
@ -717,7 +729,7 @@ function AWACS:_StartEscorts(Shiftchange)
|
|||||||
|
|
||||||
local AwacsFG = self.AwacsFG -- Ops.FlightGroup#FLIGHTGROUP
|
local AwacsFG = self.AwacsFG -- Ops.FlightGroup#FLIGHTGROUP
|
||||||
local group = AwacsFG:GetGroup()
|
local group = AwacsFG:GetGroup()
|
||||||
local mission = AUFTRAG:NewESCORT(group,{x=-100, y=0, z=200},30,{"Air"})
|
local mission = AUFTRAG:NewESCORT(group,{x=-100, y=0, z=200},45,{"Air"})
|
||||||
self.CatchAllMissions[#self.CatchAllMissions+1] = mission
|
self.CatchAllMissions[#self.CatchAllMissions+1] = mission
|
||||||
|
|
||||||
mission:SetRequiredAssets(self.EscortNumber)
|
mission:SetRequiredAssets(self.EscortNumber)
|
||||||
@ -770,7 +782,7 @@ function AWACS:_StartSettings(FlightGroup,Mission)
|
|||||||
-- Non AWACS does not seem take AWACS CS in DCS Group
|
-- Non AWACS does not seem take AWACS CS in DCS Group
|
||||||
--group:CommandSetCallsign(CALLSIGN.Aircraft.Pig,self.CallSignNo,2)
|
--group:CommandSetCallsign(CALLSIGN.Aircraft.Pig,self.CallSignNo,2)
|
||||||
|
|
||||||
AwacsFG:SetSRS(self.PathToSRS,self.Gender,self.Culture,self.Voice,self.Port,nil)
|
AwacsFG:SetSRS(self.PathToSRS,self.Gender,self.Culture,self.Voice,self.Port,nil,"AWACS")
|
||||||
--self.callsigntxt = string.format("%s %d %d",AWACS.CallSignClear[self.CallSign],1,self.CallSignNo)
|
--self.callsigntxt = string.format("%s %d %d",AWACS.CallSignClear[self.CallSign],1,self.CallSignNo)
|
||||||
self.callsigntxt = string.format("%s",AWACS.CallSignClear[self.CallSign])
|
self.callsigntxt = string.format("%s",AWACS.CallSignClear[self.CallSign])
|
||||||
--local text = string.format("%s starting for AO %s control.",self.callsigntxt,self.OpsZone:GetName() or "AO")
|
--local text = string.format("%s starting for AO %s control.",self.callsigntxt,self.OpsZone:GetName() or "AO")
|
||||||
@ -790,6 +802,8 @@ function AWACS:_StartSettings(FlightGroup,Mission)
|
|||||||
|
|
||||||
self.AwacsTimeStamp = timer.getTime()
|
self.AwacsTimeStamp = timer.getTime()
|
||||||
self.EscortsTimeStamp = timer.getTime()
|
self.EscortsTimeStamp = timer.getTime()
|
||||||
|
|
||||||
|
self.PictureTimeStamp = timer.getTime()
|
||||||
|
|
||||||
self.AwacsReady = true
|
self.AwacsReady = true
|
||||||
-- set FSM to started
|
-- set FSM to started
|
||||||
@ -819,7 +833,7 @@ function AWACS:_StartSettings(FlightGroup,Mission)
|
|||||||
-- Non AWACS does not seem take AWACS CS in DCS Group
|
-- Non AWACS does not seem take AWACS CS in DCS Group
|
||||||
-- group:CommandSetCallsign(CALLSIGN.Aircraft.Pig,self.CallSignNo,2)
|
-- group:CommandSetCallsign(CALLSIGN.Aircraft.Pig,self.CallSignNo,2)
|
||||||
|
|
||||||
AwacsFG:SetSRS(self.PathToSRS,self.Gender,self.Culture,self.Voice,self.Port,nil)
|
AwacsFG:SetSRS(self.PathToSRS,self.Gender,self.Culture,self.Voice,self.Port,nil,"AWACS")
|
||||||
--self.callsigntxt = string.format("%s %d %d",AWACS.CallSignClear[self.CallSign],1,self.CallSignNo)
|
--self.callsigntxt = string.format("%s %d %d",AWACS.CallSignClear[self.CallSign],1,self.CallSignNo)
|
||||||
self.callsigntxt = string.format("%s",AWACS.CallSignClear[self.CallSign])
|
self.callsigntxt = string.format("%s",AWACS.CallSignClear[self.CallSign])
|
||||||
|
|
||||||
@ -861,7 +875,7 @@ function AWACS:ToStringBULLS( Coordinate )
|
|||||||
return string.format("Bullseye %03d, %03d",Bearing,Distance)
|
return string.format("Bullseye %03d, %03d",Bearing,Distance)
|
||||||
end
|
end
|
||||||
|
|
||||||
--- [Internal] Chnage Bullseye string to be TTS friendly, "Bullseye 021, 16" returns e.g. "Bulls eye 0-2-1, 1-6"
|
--- [Internal] Chnage Bullseye string to be TTS friendly, "Bullseye 021, 16" returns e.g. "Bulls eye 0 2 1. 1 6"
|
||||||
-- @param #AWACS self
|
-- @param #AWACS self
|
||||||
-- @param #string Text Input text
|
-- @param #string Text Input text
|
||||||
-- @return #string BullseyeBRTTS
|
-- @return #string BullseyeBRTTS
|
||||||
@ -869,7 +883,7 @@ function AWACS:ToStringBullsTTS(Text)
|
|||||||
local text = Text
|
local text = Text
|
||||||
text=string.gsub(text,"Bullseye","Bulls eye")
|
text=string.gsub(text,"Bullseye","Bulls eye")
|
||||||
text=string.gsub(text,"%d","%1 ")
|
text=string.gsub(text,"%d","%1 ")
|
||||||
text=string.gsub(text,"?," ,",")
|
text=string.gsub(text,"?," ,"\.")
|
||||||
text=string.gsub(text," $","")
|
text=string.gsub(text," $","")
|
||||||
return text
|
return text
|
||||||
end
|
end
|
||||||
@ -882,6 +896,10 @@ end
|
|||||||
-- @return #boolean CheckedIn
|
-- @return #boolean CheckedIn
|
||||||
-- @return #string CallSign
|
-- @return #string CallSign
|
||||||
function AWACS:_GetManagedGrpID(Group)
|
function AWACS:_GetManagedGrpID(Group)
|
||||||
|
if not Group or not Group:IsAlive() then
|
||||||
|
self:E(self.lid.."_GetManagedGrpID - Requested Group is not alive!")
|
||||||
|
return 0,false,""
|
||||||
|
end
|
||||||
self:T(self.lid.."_GetManagedGrpID for "..Group:GetName())
|
self:T(self.lid.."_GetManagedGrpID for "..Group:GetName())
|
||||||
local GID = 0
|
local GID = 0
|
||||||
local Outcome = false
|
local Outcome = false
|
||||||
@ -928,16 +946,32 @@ end
|
|||||||
-- @param #boolean AO If true this is for AO, else EWR
|
-- @param #boolean AO If true this is for AO, else EWR
|
||||||
-- @param #string Callsign Callsign to address
|
-- @param #string Callsign Callsign to address
|
||||||
-- @param #number GID GroupID for comms
|
-- @param #number GID GroupID for comms
|
||||||
|
-- @param #number MaxEntries Max entries to show
|
||||||
|
-- @param #boolean IsGeneral Is a general picture, address all stations
|
||||||
-- @return #AWACS self
|
-- @return #AWACS self
|
||||||
function AWACS:_CreatePicture(AO,Callsign,GID)
|
function AWACS:_CreatePicture(AO,Callsign,GID,MaxEntries,IsGeneral)
|
||||||
self:T(self.lid.."_CreatePicture AO="..tostring(AO).." for "..Callsign.." GID "..GID)
|
self:T(self.lid.."_CreatePicture AO="..tostring(AO).." for "..Callsign.." GID "..GID)
|
||||||
|
|
||||||
local managedgroup = self.ManagedGrps[GID] -- #AWACS.ManagedGroup
|
local managedgroup = nil
|
||||||
local group = managedgroup.Group -- Wrapper.Group#GROUP
|
local group = nil
|
||||||
local groupcoord = group:GetCoordinate()
|
local groupcoord = nil
|
||||||
|
|
||||||
|
if IsGeneral then
|
||||||
|
-- local managedgroup = self.ManagedGrps[GID] -- #AWACS.ManagedGroup
|
||||||
|
-- local group = managedgroup.Group -- Wrapper.Group#GROUP
|
||||||
|
-- local groupcoord = group:GetCoordinate()
|
||||||
|
else
|
||||||
|
managedgroup = self.ManagedGrps[GID] -- #AWACS.ManagedGroup
|
||||||
|
group = managedgroup.Group -- Wrapper.Group#GROUP
|
||||||
|
groupcoord = group:GetCoordinate()
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
local fifo = self.PictureAO -- Utilities.FiFo#FIFO
|
local fifo = self.PictureAO -- Utilities.FiFo#FIFO
|
||||||
local maxentries = self.maxspeakentries or 3
|
local maxentries = self.maxspeakentries or 3
|
||||||
|
if MaxEntries and MaxEntries>0 and MaxEntries <= 3 then
|
||||||
|
maxentries = MaxEntries
|
||||||
|
end
|
||||||
local counter = 0
|
local counter = 0
|
||||||
|
|
||||||
if not AO then
|
if not AO then
|
||||||
@ -958,9 +992,19 @@ function AWACS:_CreatePicture(AO,Callsign,GID)
|
|||||||
if cluster and cluster.coordinate then
|
if cluster and cluster.coordinate then
|
||||||
local clustercoord = cluster.coordinate -- Core.Point#COORDINATE
|
local clustercoord = cluster.coordinate -- Core.Point#COORDINATE
|
||||||
--local refBRAA = clustercoord:ToStringBRA(groupcoord)
|
--local refBRAA = clustercoord:ToStringBRA(groupcoord)
|
||||||
local refBRAA = clustercoord:ToStringBRAANATO(groupcoord,true)
|
local refBRAA = ""
|
||||||
text = text .. " "..refBRAA.."."
|
if IsGeneral then
|
||||||
textScreen = textScreen .." "..refBRAA..".\n"
|
-- bulls eye reference
|
||||||
|
refBRAA = self:ToStringBULLS(clustercoord)
|
||||||
|
refBRAA = self:ToStringBullsTTS(refBRAA)
|
||||||
|
text = text .. " "..refBRAA.."."
|
||||||
|
textScreen = textScreen .." "..refBRAA..".\n"
|
||||||
|
else
|
||||||
|
-- pilot reference
|
||||||
|
refBRAA = clustercoord:ToStringBRAANATO(groupcoord,true)
|
||||||
|
text = text .. " "..refBRAA
|
||||||
|
textScreen = textScreen .." "..refBRAA.."\n"
|
||||||
|
end
|
||||||
if counter < maxentries then
|
if counter < maxentries then
|
||||||
text = text .. " Group"
|
text = text .. " Group"
|
||||||
textScreen = textScreen .. text .. "\n"
|
textScreen = textScreen .. text .. "\n"
|
||||||
@ -976,8 +1020,13 @@ function AWACS:_CreatePicture(AO,Callsign,GID)
|
|||||||
RadioEntry.TextTTS = text
|
RadioEntry.TextTTS = text
|
||||||
RadioEntry.TextScreen = textScreen
|
RadioEntry.TextScreen = textScreen
|
||||||
RadioEntry.GroupID = GID
|
RadioEntry.GroupID = GID
|
||||||
RadioEntry.IsGroup = managedgroup.IsPlayer
|
if IsGeneral then
|
||||||
RadioEntry.ToScreen = managedgroup.IsPlayer
|
RadioEntry.IsGroup = false
|
||||||
|
RadioEntry.ToScreen = self.debug
|
||||||
|
else
|
||||||
|
RadioEntry.IsGroup = managedgroup.IsPlayer
|
||||||
|
RadioEntry.ToScreen = managedgroup.IsPlayer
|
||||||
|
end
|
||||||
RadioEntry.Duration = STTS.getSpeechTime(text,1.1,false) or 8
|
RadioEntry.Duration = STTS.getSpeechTime(text,1.1,false) or 8
|
||||||
|
|
||||||
self.RadioQueue:Push(RadioEntry)
|
self.RadioQueue:Push(RadioEntry)
|
||||||
@ -1028,13 +1077,20 @@ end
|
|||||||
--- [Internal] AWACS Menu for Picture
|
--- [Internal] AWACS Menu for Picture
|
||||||
-- @param #AWACS self
|
-- @param #AWACS self
|
||||||
-- @param Wrapper.Group#GROUP Group Group to use
|
-- @param Wrapper.Group#GROUP Group Group to use
|
||||||
|
-- @param #boolean IsGeneral General picture if true, address no-one specific
|
||||||
-- @return #AWACS self
|
-- @return #AWACS self
|
||||||
function AWACS:_Picture(Group)
|
function AWACS:_Picture(Group,IsGeneral)
|
||||||
self:T(self.lid.."_Picture")
|
self:T(self.lid.."_Picture")
|
||||||
local text = ""
|
local text = ""
|
||||||
local textScreen = text
|
local textScreen = text
|
||||||
local GID, Outcome = self:_GetManagedGrpID(Group)
|
local GID, Outcome = self:_GetManagedGrpID(Group)
|
||||||
local gcallsign = self:_GetCallSign(Group,GID) or "Ghost 1 1"
|
local gcallsign = ""
|
||||||
|
|
||||||
|
if IsGeneral then
|
||||||
|
gcallsign = "All Stations"
|
||||||
|
else
|
||||||
|
gcallsign = self:_GetCallSign(Group,GID) or "Ghost 1 1"
|
||||||
|
end
|
||||||
|
|
||||||
if not self.intel then
|
if not self.intel then
|
||||||
-- no intel yet!
|
-- no intel yet!
|
||||||
@ -1051,7 +1107,7 @@ function AWACS:_Picture(Group)
|
|||||||
return self
|
return self
|
||||||
end
|
end
|
||||||
|
|
||||||
if Outcome then
|
if Outcome or IsGeneral then
|
||||||
-- Pilot is checked in
|
-- Pilot is checked in
|
||||||
-- get clusters from Intel
|
-- get clusters from Intel
|
||||||
local clustertable = self.intel:GetClusterTable()
|
local clustertable = self.intel:GetClusterTable()
|
||||||
@ -1106,12 +1162,12 @@ function AWACS:_Picture(Group)
|
|||||||
RadioEntry.Duration = STTS.getSpeechTime(text,1.1,false) or 8
|
RadioEntry.Duration = STTS.getSpeechTime(text,1.1,false) or 8
|
||||||
self.RadioQueue:Push(RadioEntry)
|
self.RadioQueue:Push(RadioEntry)
|
||||||
|
|
||||||
self:_CreatePicture(true,gcallsign,GID)
|
self:_CreatePicture(true,gcallsign,GID,3,IsGeneral)
|
||||||
|
|
||||||
self.PictureAO:Clear()
|
self.PictureAO:Clear()
|
||||||
end
|
end
|
||||||
|
|
||||||
if clustersAO < 3 and clustersEWR > 0 then
|
if clustersAO == 0 and clustersEWR > 0 then
|
||||||
text = string.format("%s. %s. Picture Early Warning. ",gcallsign, self.callsigntxt)
|
text = string.format("%s. %s. Picture Early Warning. ",gcallsign, self.callsigntxt)
|
||||||
textScreen = string.format("%s. %s. Picture EWR. ",gcallsign, self.callsigntxt)
|
textScreen = string.format("%s. %s. Picture EWR. ",gcallsign, self.callsigntxt)
|
||||||
if clustersEWR == 1 then
|
if clustersEWR == 1 then
|
||||||
@ -1131,7 +1187,7 @@ function AWACS:_Picture(Group)
|
|||||||
RadioEntry.Duration = STTS.getSpeechTime(text,1.1,false) or 8
|
RadioEntry.Duration = STTS.getSpeechTime(text,1.1,false) or 8
|
||||||
self.RadioQueue:Push(RadioEntry)
|
self.RadioQueue:Push(RadioEntry)
|
||||||
|
|
||||||
--self:_CreatePicture(false,gcallsign,GID)
|
self:_CreatePicture(false,gcallsign,GID,3,IsGeneral)
|
||||||
|
|
||||||
self.PictureEWR:Clear()
|
self.PictureEWR:Clear()
|
||||||
end
|
end
|
||||||
@ -1369,6 +1425,38 @@ function AWACS:_Declare(Group)
|
|||||||
return self
|
return self
|
||||||
end
|
end
|
||||||
|
|
||||||
|
--- [Internal] AWACS Menu for Commit
|
||||||
|
-- @param #AWACS self
|
||||||
|
-- @param Wrapper.Group#GROUP Group Group to use
|
||||||
|
-- @return #AWACS self
|
||||||
|
function AWACS:_Commit(Group)
|
||||||
|
self:T(self.lid.."_Commit")
|
||||||
|
|
||||||
|
local GID, Outcome = self:_GetManagedGrpID(Group)
|
||||||
|
local text = "Commit Not yet implemented"
|
||||||
|
if Outcome then
|
||||||
|
--[[ yes, known
|
||||||
|
|
||||||
|
--]]
|
||||||
|
elseif self.AwacsFG then
|
||||||
|
-- no, unknown
|
||||||
|
text = string.format("%s. %s. Negative. You are not checked in.",self:_GetCallSign(Group,GID) or "Ghost 1 1", self.callsigntxt)
|
||||||
|
end
|
||||||
|
|
||||||
|
local RadioEntry = {} -- #AWACS.RadioEntry
|
||||||
|
RadioEntry.IsNew = true
|
||||||
|
RadioEntry.TextTTS = text
|
||||||
|
RadioEntry.TextScreen = text
|
||||||
|
RadioEntry.GroupID = GID
|
||||||
|
RadioEntry.IsGroup = Outcome
|
||||||
|
RadioEntry.ToScreen = true
|
||||||
|
RadioEntry.Duration = STTS.getSpeechTime(text,1.1,false) or 8
|
||||||
|
|
||||||
|
self.RadioQueue:Push(RadioEntry)
|
||||||
|
|
||||||
|
return self
|
||||||
|
end
|
||||||
|
|
||||||
--- [Internal] AWACS Menu for Judy
|
--- [Internal] AWACS Menu for Judy
|
||||||
-- @param #AWACS self
|
-- @param #AWACS self
|
||||||
-- @param Wrapper.Group#GROUP Group Group to use
|
-- @param Wrapper.Group#GROUP Group Group to use
|
||||||
@ -1558,7 +1646,7 @@ function AWACS:_CheckIn(Group)
|
|||||||
alphacheckbulls = self:ToStringBullsTTS(alphacheckbulls)-- make tts friendly
|
alphacheckbulls = self:ToStringBullsTTS(alphacheckbulls)-- make tts friendly
|
||||||
|
|
||||||
self.ManagedGrps[self.ManagedGrpID]=managedgroup
|
self.ManagedGrps[self.ManagedGrpID]=managedgroup
|
||||||
text = string.format("%s. %s. Alpha Check %s",managedgroup.CallSign,self.callsigntxt,alphacheckbulls)
|
text = string.format("%s. %s. Alpha Check. %s",managedgroup.CallSign,self.callsigntxt,alphacheckbulls)
|
||||||
|
|
||||||
self:__CheckedIn(1,managedgroup.GID)
|
self:__CheckedIn(1,managedgroup.GID)
|
||||||
self:__AssignAnchor(5,managedgroup.GID)
|
self:__AssignAnchor(5,managedgroup.GID)
|
||||||
@ -1637,7 +1725,7 @@ function AWACS:_CheckInAI(FlightGroup,Group,AuftragsNr)
|
|||||||
alphacheckbulls = self:ToStringBullsTTS(alphacheckbulls)-- make tts friendly
|
alphacheckbulls = self:ToStringBullsTTS(alphacheckbulls)-- make tts friendly
|
||||||
|
|
||||||
self.ManagedGrps[self.ManagedGrpID]=managedgroup
|
self.ManagedGrps[self.ManagedGrpID]=managedgroup
|
||||||
text = string.format("%s. %s. Alpha Check %s",managedgroup.CallSign,self.callsigntxt,alphacheckbulls)
|
text = string.format("%s. %s. Alpha Check. %s",managedgroup.CallSign,self.callsigntxt,alphacheckbulls)
|
||||||
self:__CheckedIn(1,managedgroup.GID)
|
self:__CheckedIn(1,managedgroup.GID)
|
||||||
self:__AssignAnchor(5,managedgroup.GID)
|
self:__AssignAnchor(5,managedgroup.GID)
|
||||||
else
|
else
|
||||||
@ -1723,11 +1811,14 @@ function AWACS:_SetClientMenus()
|
|||||||
local picture = MENU_GROUP_COMMAND:New(grp,"Picture",basemenu,self._Picture,self,grp)
|
local picture = MENU_GROUP_COMMAND:New(grp,"Picture",basemenu,self._Picture,self,grp)
|
||||||
local bogeydope = MENU_GROUP_COMMAND:New(grp,"Bogey Dope",basemenu,self._BogeyDope,self,grp)
|
local bogeydope = MENU_GROUP_COMMAND:New(grp,"Bogey Dope",basemenu,self._BogeyDope,self,grp)
|
||||||
local declare = MENU_GROUP_COMMAND:New(grp,"Declare",basemenu,self._Declare,self,grp)
|
local declare = MENU_GROUP_COMMAND:New(grp,"Declare",basemenu,self._Declare,self,grp)
|
||||||
|
|
||||||
local tasking = MENU_GROUP:New(grp,"Tasking",basemenu)
|
local tasking = MENU_GROUP:New(grp,"Tasking",basemenu)
|
||||||
local showtask = MENU_GROUP_COMMAND:New(grp,"Showtask",tasking,self._Showtask,self,grp)
|
local showtask = MENU_GROUP_COMMAND:New(grp,"Showtask",tasking,self._Showtask,self,grp)
|
||||||
local judy = MENU_GROUP_COMMAND:New(grp,"Judy",tasking,self._Judy,self,grp)
|
local commit = MENU_GROUP_COMMAND:New(grp,"Commit",tasking,self._Commit,self,grp)
|
||||||
local unable = MENU_GROUP_COMMAND:New(grp,"Unable",tasking,self._Unable,self,grp)
|
local unable = MENU_GROUP_COMMAND:New(grp,"Unable",tasking,self._Unable,self,grp)
|
||||||
local abort = MENU_GROUP_COMMAND:New(grp,"Abort",tasking,self._TaskAbort,self,grp)
|
local abort = MENU_GROUP_COMMAND:New(grp,"Abort",tasking,self._TaskAbort,self,grp)
|
||||||
|
local judy = MENU_GROUP_COMMAND:New(grp,"Judy",tasking,self._Judy,self,grp):Refresh()
|
||||||
|
|
||||||
local checkout = MENU_GROUP_COMMAND:New(grp,"Check Out",basemenu,self._CheckOut,self,grp):Refresh()
|
local checkout = MENU_GROUP_COMMAND:New(grp,"Check Out",basemenu,self._CheckOut,self,grp):Refresh()
|
||||||
clientmenus[grp:GetName()] = { -- #AWACS.MenuStructure
|
clientmenus[grp:GetName()] = { -- #AWACS.MenuStructure
|
||||||
groupname = grp:GetName(),
|
groupname = grp:GetName(),
|
||||||
@ -1737,10 +1828,12 @@ function AWACS:_SetClientMenus()
|
|||||||
picture = picture,
|
picture = picture,
|
||||||
bogeydope = bogeydope,
|
bogeydope = bogeydope,
|
||||||
declare = declare,
|
declare = declare,
|
||||||
|
tasking = tasking,
|
||||||
showtask = showtask,
|
showtask = showtask,
|
||||||
judy = judy,
|
judy = judy,
|
||||||
unable = unable,
|
unable = unable,
|
||||||
abort = abort,
|
abort = abort,
|
||||||
|
commit=commit,
|
||||||
}
|
}
|
||||||
elseif not clientmenus[grp:GetName()] then
|
elseif not clientmenus[grp:GetName()] then
|
||||||
-- check in only
|
-- check in only
|
||||||
@ -1762,11 +1855,14 @@ function AWACS:_SetClientMenus()
|
|||||||
local picture = MENU_COALITION_COMMAND:New(self.coalition,"Picture",basemenu,self._Picture,self,grp)
|
local picture = MENU_COALITION_COMMAND:New(self.coalition,"Picture",basemenu,self._Picture,self,grp)
|
||||||
local bogeydope = MENU_COALITION_COMMAND:New(self.coalition,"Bogey Dope",basemenu,self._BogeyDope,self,grp)
|
local bogeydope = MENU_COALITION_COMMAND:New(self.coalition,"Bogey Dope",basemenu,self._BogeyDope,self,grp)
|
||||||
local declare = MENU_COALITION_COMMAND:New(self.coalition,"Declare",basemenu,self._Declare,self,grp)
|
local declare = MENU_COALITION_COMMAND:New(self.coalition,"Declare",basemenu,self._Declare,self,grp)
|
||||||
|
|
||||||
local tasking = MENU_GROUP:New(grp,"Tasking",basemenu)
|
local tasking = MENU_GROUP:New(grp,"Tasking",basemenu)
|
||||||
local showtask = MENU_GROUP_COMMAND:New(grp,"Showtask",tasking,self._Showtask,self,grp)
|
local showtask = MENU_GROUP_COMMAND:New(grp,"Showtask",tasking,self._Showtask,self,grp)
|
||||||
local judy = MENU_GROUP_COMMAND:New(grp,"Judy",tasking,self._Judy,self,grp)
|
local commit = MENU_GROUP_COMMAND:New(grp,"Commit",tasking,self._Commit,self,grp)
|
||||||
local unable = MENU_GROUP_COMMAND:New(grp,"Unable",tasking,self._Unable,self,grp)
|
local unable = MENU_GROUP_COMMAND:New(grp,"Unable",tasking,self._Unable,self,grp)
|
||||||
local abort = MENU_GROUP_COMMAND:New(grp,"Abort",tasking,self._TaskAbort,self,grp)
|
local abort = MENU_GROUP_COMMAND:New(grp,"Abort",tasking,self._TaskAbort,self,grp)
|
||||||
|
local judy = MENU_GROUP_COMMAND:New(grp,"Judy",tasking,self._Judy,self,grp):Refresh()
|
||||||
|
|
||||||
local checkin = MENU_COALITION_COMMAND:New(self.coalition,"Check In",basemenu,self._CheckIn,self,grp)
|
local checkin = MENU_COALITION_COMMAND:New(self.coalition,"Check In",basemenu,self._CheckIn,self,grp)
|
||||||
local checkout = MENU_COALITION_COMMAND:New(self.coalition,"Check Out",basemenu,self._CheckOut,self,grp):Refresh()
|
local checkout = MENU_COALITION_COMMAND:New(self.coalition,"Check Out",basemenu,self._CheckOut,self,grp):Refresh()
|
||||||
clientmenus[grp:GetName()] = { -- #AWACS.MenuStructure
|
clientmenus[grp:GetName()] = { -- #AWACS.MenuStructure
|
||||||
@ -1779,9 +1875,11 @@ function AWACS:_SetClientMenus()
|
|||||||
bogeydope = bogeydope,
|
bogeydope = bogeydope,
|
||||||
declare = declare,
|
declare = declare,
|
||||||
showtask = showtask,
|
showtask = showtask,
|
||||||
|
tasking = tasking,
|
||||||
judy = judy,
|
judy = judy,
|
||||||
unable = unable,
|
unable = unable,
|
||||||
abort = abort,
|
abort = abort,
|
||||||
|
commit = commit,
|
||||||
}
|
}
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
@ -1949,7 +2047,8 @@ function AWACS:_StartIntel(awacs)
|
|||||||
|
|
||||||
local intel = INTEL:New(self.DetectionSet,self.coalition,self.callsigntxt)
|
local intel = INTEL:New(self.DetectionSet,self.coalition,self.callsigntxt)
|
||||||
--intel:SetVerbosity(2)
|
--intel:SetVerbosity(2)
|
||||||
intel:SetClusterAnalysis(true,self.debug)
|
intel:SetClusterAnalysis(true,false)
|
||||||
|
|
||||||
if self.NoHelos then
|
if self.NoHelos then
|
||||||
intel:SetFilterCategory({Unit.Category.AIRPLANE})
|
intel:SetFilterCategory({Unit.Category.AIRPLANE})
|
||||||
else
|
else
|
||||||
@ -2261,9 +2360,9 @@ function AWACS:_LogStatistics()
|
|||||||
local text = string.gsub(text,"{","\n")
|
local text = string.gsub(text,"{","\n")
|
||||||
local text = string.gsub(text,"}","")
|
local text = string.gsub(text,"}","")
|
||||||
local text = string.gsub(text,"="," = ")
|
local text = string.gsub(text,"="," = ")
|
||||||
self:T(text)
|
self:I(text)
|
||||||
if self.MonitoringOn then
|
if self.MonitoringOn then
|
||||||
MESSAGE:New(text,20,"AWACS",true):ToAll()
|
MESSAGE:New(text,20,"AWACS",false):ToAll()
|
||||||
end
|
end
|
||||||
return self
|
return self
|
||||||
end
|
end
|
||||||
@ -2404,7 +2503,7 @@ function AWACS:_AnnounceContact(Contact,IsNew,Group,IsBogeyDope,Tag,IsPopup,Repo
|
|||||||
|
|
||||||
if Tag and Tag ~= "" then
|
if Tag and Tag ~= "" then
|
||||||
BRAText = BRAText .. " "..Tag.."."
|
BRAText = BRAText .. " "..Tag.."."
|
||||||
BRAText = BRAText .. " "..Tag.."."
|
TextScreen = TextScreen .. " "..Tag.."."
|
||||||
end
|
end
|
||||||
|
|
||||||
BRAText = BRAText .. " "..threatsizetext..". "..BRAfromBulls
|
BRAText = BRAText .. " "..threatsizetext..". "..BRAfromBulls
|
||||||
@ -2413,11 +2512,12 @@ function AWACS:_AnnounceContact(Contact,IsNew,Group,IsBogeyDope,Tag,IsPopup,Repo
|
|||||||
if self.ModernEra then
|
if self.ModernEra then
|
||||||
-- Platform
|
-- Platform
|
||||||
if ReportingName and ReportingName ~= "Bogey" then
|
if ReportingName and ReportingName ~= "Bogey" then
|
||||||
BRAText = BRAText .. " "..ReportingName.."."
|
ReportingName = string.gsub(ReportingName,"_"," ")
|
||||||
TextScreen = TextScreen .. " "..ReportingName.."."
|
BRAText = BRAText .. ". "..ReportingName.."."
|
||||||
|
TextScreen = TextScreen .. ". "..ReportingName.."."
|
||||||
end
|
end
|
||||||
-- High - > 40k feet
|
-- High - > 40k feet
|
||||||
local height = contact.group:GetAltitude()
|
local height = contact.group:GetHeight()
|
||||||
local height = UTILS.Round(UTILS.MetersToFeet(height)/1000,0) -- e.g, 25
|
local height = UTILS.Round(UTILS.MetersToFeet(height)/1000,0) -- e.g, 25
|
||||||
if height >= 40 then
|
if height >= 40 then
|
||||||
BRAText = BRAText .. " High."
|
BRAText = BRAText .. " High."
|
||||||
@ -2970,7 +3070,7 @@ function AWACS:onafterStatus(From, Event, To)
|
|||||||
end
|
end
|
||||||
|
|
||||||
if self.debug then
|
if self.debug then
|
||||||
self:T(report:Text())
|
self:I(report:Text())
|
||||||
end
|
end
|
||||||
|
|
||||||
-- Check on AUFTRAG status for CAP AI
|
-- Check on AUFTRAG status for CAP AI
|
||||||
@ -2979,7 +3079,8 @@ function AWACS:onafterStatus(From, Event, To)
|
|||||||
end
|
end
|
||||||
|
|
||||||
else
|
else
|
||||||
-- do other stuff
|
-- do other stuff, AWACS dead?
|
||||||
|
-- TODO AWACS dead
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
||||||
@ -2989,15 +3090,15 @@ function AWACS:onafterStatus(From, Event, To)
|
|||||||
end
|
end
|
||||||
|
|
||||||
monitoringdata.AwacsShiftChange = self.ShiftChangeAwacsFlag
|
monitoringdata.AwacsShiftChange = self.ShiftChangeAwacsFlag
|
||||||
|
|
||||||
if self.AwacsFG then
|
if self.AwacsFG then
|
||||||
monitoringdata.AwacsStateFG = self.AwacsFG:GetState()
|
monitoringdata.AwacsStateFG = self.AwacsFG:GetState()
|
||||||
end
|
end
|
||||||
|
|
||||||
monitoringdata.AwacsStateMission = self.AwacsMission:GetState()
|
monitoringdata.AwacsStateMission = self.AwacsMission:GetState()
|
||||||
--monitoringdata.EscortsStateMission = self.Escor
|
|
||||||
monitoringdata.EscortsShiftChange = self.ShiftChangeEscortsFlag
|
monitoringdata.EscortsShiftChange = self.ShiftChangeEscortsFlag
|
||||||
monitoringdata.AICAPCurrent = self.AICAPMissions:Count()
|
monitoringdata.AICAPCurrent = self.AICAPMissions:Count()
|
||||||
monitoringdata.AICAPMax = self.MaxAIonCAP
|
monitoringdata.AICAPMax = self.MaxAIonCAP
|
||||||
--monitoringdata.Players = self.clientset:CountAlive()
|
|
||||||
monitoringdata.Airwings = self.CAPAirwings:Count()
|
monitoringdata.Airwings = self.CAPAirwings:Count()
|
||||||
|
|
||||||
self.MonitoringData = monitoringdata
|
self.MonitoringData = monitoringdata
|
||||||
@ -3006,6 +3107,14 @@ function AWACS:onafterStatus(From, Event, To)
|
|||||||
self:_LogStatistics()
|
self:_LogStatistics()
|
||||||
end
|
end
|
||||||
|
|
||||||
|
local picturetime = timer.getTime() - self.PictureTimeStamp
|
||||||
|
|
||||||
|
if self.AwacsInZone and picturetime > self.PictureInterval then
|
||||||
|
-- reset timer
|
||||||
|
self.PictureTimeStamp = timer.getTime()
|
||||||
|
self:_Picture(nil,true)
|
||||||
|
end
|
||||||
|
|
||||||
self:__Status(30)
|
self:__Status(30)
|
||||||
|
|
||||||
return self
|
return self
|
||||||
@ -3266,7 +3375,7 @@ function AWACS:onafterCheckRadioQueue(From,Event,To)
|
|||||||
|
|
||||||
if self:Is("Running") then
|
if self:Is("Running") then
|
||||||
-- exit if stopped
|
-- exit if stopped
|
||||||
self:__CheckRadioQueue(nextcall+3)
|
self:__CheckRadioQueue(nextcall+2)
|
||||||
end
|
end
|
||||||
return self
|
return self
|
||||||
end
|
end
|
||||||
@ -3417,7 +3526,7 @@ AwacsAW2:NewPayload("CAP 2-1",-1,{AUFTRAG.Type.ALERT5,AUFTRAG.Type.CAP, AUFTRAG.
|
|||||||
-- Get AWACS started
|
-- Get AWACS started
|
||||||
local testawacs = AWACS:New("AWACS North",AwacsAW,"blue",AIRBASE.Caucasus.Kutaisi,"Awacs Orbit",ZONE:FindByName("NW Zone"),"Anchor One",255,radio.modulation.AM )
|
local testawacs = AWACS:New("AWACS North",AwacsAW,"blue",AIRBASE.Caucasus.Kutaisi,"Awacs Orbit",ZONE:FindByName("NW Zone"),"Anchor One",255,radio.modulation.AM )
|
||||||
testawacs:SetEscort(2)
|
testawacs:SetEscort(2)
|
||||||
testawacs:SetAwacsDetails(CALLSIGN.AWACS.Darkstar,1,300,300,60,20)
|
testawacs:SetAwacsDetails(CALLSIGN.AWACS.Wizard,1,30,300,243,30)
|
||||||
testawacs:SetSRS("E:\\Program Files\\DCS-SimpleRadio-Standalone","female","en-GB",5010,nil)
|
testawacs:SetSRS("E:\\Program Files\\DCS-SimpleRadio-Standalone","female","en-GB",5010,nil)
|
||||||
testawacs:AddCAPAirWing(AwacsAW2)
|
testawacs:AddCAPAirWing(AwacsAW2)
|
||||||
testawacs:__Start(5)
|
testawacs:__Start(5)
|
||||||
|
|||||||
@ -92,9 +92,15 @@ OPSZONE.version="0.3.0"
|
|||||||
|
|
||||||
--- Create a new OPSZONE class object.
|
--- Create a new OPSZONE class object.
|
||||||
-- @param #OPSZONE self
|
-- @param #OPSZONE self
|
||||||
-- @param Core.Zone#ZONE Zone The zone.
|
-- @param Core.Zone#ZONE Zone The zone. Needs to be a ZONE\_RADIUS (round) zone. Can be passed as ZONE\_AIRBASE or simply as the name of the airbase.
|
||||||
-- @param #number CoalitionOwner Initial owner of the coaliton. Default `coalition.side.NEUTRAL`.
|
-- @param #number CoalitionOwner Initial owner of the coaliton. Default `coalition.side.NEUTRAL`.
|
||||||
-- @return #OPSZONE self
|
-- @return #OPSZONE self
|
||||||
|
-- @usage
|
||||||
|
-- myopszone = OPSZONE:New(ZONE:FindByName("OpsZoneOne"),coalition.side.RED) -- base zone from the mission editor
|
||||||
|
-- myopszone = OPSZONE:New(ZONE_RADIUS:New("OpsZoneTwo",mycoordinate:GetVec2(),5000),coalition.side.BLUE) -- radius zone of 5km at a coordinate
|
||||||
|
-- myopszone = OPSZONE:New(ZONE_RADIUS:New("Batumi")) -- airbase zone from Batumi Airbase, ca 2500m radius
|
||||||
|
-- myopszone = OPSZONE:New(ZONE_AIRBASE:New("Batumi",6000),coalition.side.BLUE) -- airbase zone from Batumi Airbase, but with a specific radius of 6km
|
||||||
|
--
|
||||||
function OPSZONE:New(Zone, CoalitionOwner)
|
function OPSZONE:New(Zone, CoalitionOwner)
|
||||||
|
|
||||||
-- Inherit everything from LEGION class.
|
-- Inherit everything from LEGION class.
|
||||||
|
|||||||
@ -1023,6 +1023,8 @@ function GROUP:GetCoordinate()
|
|||||||
|
|
||||||
if FirstUnit then
|
if FirstUnit then
|
||||||
local FirstUnitCoordinate = FirstUnit:GetCoordinate()
|
local FirstUnitCoordinate = FirstUnit:GetCoordinate()
|
||||||
|
local Heading = self:GetHeading()
|
||||||
|
FirstUnitCoordinate.Heading = Heading
|
||||||
return FirstUnitCoordinate
|
return FirstUnitCoordinate
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|||||||
@ -376,7 +376,8 @@ function POSITIONABLE:GetCoordinate()
|
|||||||
local PositionableVec3 = self:GetVec3()
|
local PositionableVec3 = self:GetVec3()
|
||||||
|
|
||||||
local coord=COORDINATE:NewFromVec3(PositionableVec3)
|
local coord=COORDINATE:NewFromVec3(PositionableVec3)
|
||||||
|
local heading = self:GetHeading()
|
||||||
|
coord.Heading = heading
|
||||||
-- Return a new coordiante object.
|
-- Return a new coordiante object.
|
||||||
return coord
|
return coord
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user