mirror of
https://github.com/FlightControl-Master/MOOSE.git
synced 2025-08-15 10:47:21 +00:00
#AWACS
* Align CallSign Generation
This commit is contained in:
parent
55f0f5271d
commit
f281e5aa95
@ -91,6 +91,8 @@ do
|
|||||||
-- @field #boolean PlayerGuidance if true additional callouts to guide/warn players
|
-- @field #boolean PlayerGuidance if true additional callouts to guide/warn players
|
||||||
-- @field #boolean ModernEra if true we get more intel on targets, and EPLR on the AIC
|
-- @field #boolean ModernEra if true we get more intel on targets, and EPLR on the AIC
|
||||||
-- @field #boolean callsignshort if true use short (group) callsigns, e.g. "Ghost 1", else "Ghost 1 1"
|
-- @field #boolean callsignshort if true use short (group) callsigns, e.g. "Ghost 1", else "Ghost 1 1"
|
||||||
|
-- @field #boolean keepnumber if true, use the full string after # for a player custom callsign
|
||||||
|
-- @field #table callsignTranslations optional translations for callsigns
|
||||||
-- @field #number MeldDistance 25nm - distance for "Meld" Call , usually shortly before the actual engagement
|
-- @field #number MeldDistance 25nm - distance for "Meld" Call , usually shortly before the actual engagement
|
||||||
-- @field #number TacDistance 30nm - distance for "TAC" Call
|
-- @field #number TacDistance 30nm - distance for "TAC" Call
|
||||||
-- @field #number ThreatDistance 15nm - distance to declare untargeted (new) threats
|
-- @field #number ThreatDistance 15nm - distance to declare untargeted (new) threats
|
||||||
@ -561,6 +563,8 @@ AWACS = {
|
|||||||
PlayerGuidance = true,
|
PlayerGuidance = true,
|
||||||
ModernEra = true,
|
ModernEra = true,
|
||||||
callsignshort = true,
|
callsignshort = true,
|
||||||
|
keepnumber = true,
|
||||||
|
callsignTranslations = nil,
|
||||||
TacDistance = 45,
|
TacDistance = 45,
|
||||||
MeldDistance = 35,
|
MeldDistance = 35,
|
||||||
ThreatDistance = 25,
|
ThreatDistance = 25,
|
||||||
@ -2222,39 +2226,29 @@ function AWACS:_GetCallSign(Group,GID, IsPlayer)
|
|||||||
|
|
||||||
local callsign = "Ghost 1"
|
local callsign = "Ghost 1"
|
||||||
if Group and Group:IsAlive() then
|
if Group and Group:IsAlive() then
|
||||||
local shortcallsign = Group:GetCallsign() or "unknown11"-- e.g.Uzi11, but we want Uzi 1 1
|
callsign = Group:GetCustomCallSign(self.callsignshort,self.keepnumber,self.callsignTranslations)
|
||||||
local callsignroot = string.match(shortcallsign, '(%a+)')
|
|
||||||
self:I("CallSign = " .. callsignroot)
|
|
||||||
local groupname = Group:GetName()
|
|
||||||
local callnumber = string.match(shortcallsign, "(%d+)$" ) or "unknown11"
|
|
||||||
local callnumbermajor = string.char(string.byte(callnumber,1))
|
|
||||||
local callnumberminor = string.char(string.byte(callnumber,2))
|
|
||||||
local personalized = false
|
|
||||||
if IsPlayer and string.find(groupname,"#") then
|
|
||||||
-- personalized flight name in group naming
|
|
||||||
shortcallsign = string.match(groupname,"#([%a]+)")
|
|
||||||
personalized = true
|
|
||||||
end
|
|
||||||
if IsPlayer and string.find(Group:GetPlayerName(),"|") then
|
|
||||||
-- personalized flight name in group naming
|
|
||||||
shortcallsign = string.match(Group:GetPlayerName(),"| ([%a]+)")
|
|
||||||
personalized = true
|
|
||||||
end
|
|
||||||
if (not personalized) and self.callsignTranslations and self.callsignTranslations[callsignroot] then
|
|
||||||
shortcallsign = string.gsub(shortcallsign, callsignroot, self.callsignTranslations[callsignroot])
|
|
||||||
end
|
|
||||||
|
|
||||||
if self.callsignshort then
|
|
||||||
callsign = string.gsub(shortcallsign,callnumber,"").." "..callnumbermajor
|
|
||||||
else
|
|
||||||
callsign = string.gsub(shortcallsign,callnumber,"").." "..callnumbermajor.." "..callnumberminor
|
|
||||||
end
|
|
||||||
self:T("Generated Callsign for TTS = " .. callsign)
|
|
||||||
end
|
end
|
||||||
|
|
||||||
return callsign
|
return callsign
|
||||||
end
|
end
|
||||||
|
|
||||||
|
--- [User] Set player callsign options for TTS output. See @{Wrapper.Group#GROUP.GetCustomCallSign}() on how to set customized callsigns.
|
||||||
|
-- @param #AWACS self
|
||||||
|
-- @param #boolean ShortCallsign If true, only call out the major flight number
|
||||||
|
-- @param #boolean Keepnumber If true, keep the **customized callsign** in the #GROUP name as-is, no amendments or numbers.
|
||||||
|
-- @param #table CallsignTranslations (optional) Table to translate between DCS standard callsigns and bespoke ones. Does not apply if using customized
|
||||||
|
-- callsigns from playername or group name.
|
||||||
|
-- @return #AWACS self
|
||||||
|
function AWACS:SetCallSignOptions(ShortCallsign,Keepnumber,CallsignTranslations)
|
||||||
|
if not ShortCallsign or ShortCallsign == false then
|
||||||
|
self.callsignshort = false
|
||||||
|
else
|
||||||
|
self.callsignshort = true
|
||||||
|
end
|
||||||
|
self.keepnumber = Keepnumber or false
|
||||||
|
self.callsignTranslations = CallsignTranslations
|
||||||
|
return self
|
||||||
|
end
|
||||||
|
|
||||||
--- [Internal] Update contact from cluster data
|
--- [Internal] Update contact from cluster data
|
||||||
-- @param #AWACS self
|
-- @param #AWACS self
|
||||||
-- @param #number CID Contact ID
|
-- @param #number CID Contact ID
|
||||||
@ -4304,54 +4298,6 @@ function AWACS:_ReadAssignedGroupFromTID(TaskID)
|
|||||||
return nil
|
return nil
|
||||||
end
|
end
|
||||||
|
|
||||||
--- [Internal] Create new idle task from contact to pick up later
|
|
||||||
-- @param #AWACS self
|
|
||||||
-- @param #string Description Task Type
|
|
||||||
-- @param #table Object Object of TARGET
|
|
||||||
-- @param Ops.Intelligence#INTEL.Contact Contact
|
|
||||||
-- @return #AWACS self
|
|
||||||
function AWACS:_CreateIdleTaskForContact(Description,Object,Contact)
|
|
||||||
self:T(self.lid.."_CreateIdleTaskForContact "..Description)
|
|
||||||
local task = {} -- #AWACS.ManagedTask
|
|
||||||
self.ManagedTaskID = self.ManagedTaskID + 1
|
|
||||||
task.TID = self.ManagedTaskID
|
|
||||||
task.AssignedGroupID = 0
|
|
||||||
task.Status = AWACS.TaskStatus.IDLE
|
|
||||||
task.ToDo = Description
|
|
||||||
task.Target = TARGET:New(Object)
|
|
||||||
task.Contact = Contact
|
|
||||||
task.ScreenText = Description
|
|
||||||
if Description == AWACS.TaskDescription.ANCHOR or Description == AWACS.TaskDescription.REANCHOR then
|
|
||||||
task.Target.Type = TARGET.ObjectType.ZONE
|
|
||||||
end
|
|
||||||
self.ManagedTasks:Push(task,task.TID)
|
|
||||||
return self
|
|
||||||
end
|
|
||||||
|
|
||||||
--- [Internal] Create new idle task from cluster to pick up later
|
|
||||||
-- @param #AWACS self
|
|
||||||
-- @param #string Description Task Type
|
|
||||||
-- @param #table Object Object of TARGET
|
|
||||||
-- @param Ops.Intelligence#INTEL.Cluster Cluster
|
|
||||||
-- @return #AWACS self
|
|
||||||
function AWACS:_CreateIdleTaskForCluster(Description,Object,Cluster)
|
|
||||||
self:T(self.lid.."_CreateIdleTaskForCluster "..Description)
|
|
||||||
local task = {} -- #AWACS.ManagedTask
|
|
||||||
self.ManagedTaskID = self.ManagedTaskID + 1
|
|
||||||
task.TID = self.ManagedTaskID
|
|
||||||
task.AssignedGroupID = 0
|
|
||||||
task.Status = AWACS.TaskStatus.IDLE
|
|
||||||
task.ToDo = Description
|
|
||||||
task.Target = TARGET:New(self.intel:GetClusterCoordinate(Cluster))
|
|
||||||
task.Cluster = Cluster
|
|
||||||
task.ScreenText = Description
|
|
||||||
if Description == AWACS.TaskDescription.ANCHOR or Description == AWACS.TaskDescription.REANCHOR then
|
|
||||||
task.Target.Type = TARGET.ObjectType.ZONE
|
|
||||||
end
|
|
||||||
self.ManagedTasks:Push(task,task.TID)
|
|
||||||
return self
|
|
||||||
end
|
|
||||||
|
|
||||||
--- [Internal] Create radio entry to tell players that CAP is on station in Anchor
|
--- [Internal] Create radio entry to tell players that CAP is on station in Anchor
|
||||||
-- @param #AWACS self
|
-- @param #AWACS self
|
||||||
-- @param #number GID Group ID
|
-- @param #number GID Group ID
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user