This commit is contained in:
Applevangelist 2022-09-13 11:02:03 +02:00
parent 439f858a82
commit 4dbfef028e

View File

@ -684,10 +684,10 @@ do
------------------------------------------------------------------------------------------------------------------- -------------------------------------------------------------------------------------------------------------------
-- PLAYERTASKCONTROLLER -- PLAYERTASKCONTROLLER
-- TODO: PLAYERTASKCONTROLLER -- TODO: PLAYERTASKCONTROLLER
-- DONE Playername from after # -- DONE Playername customized
-- DONE Coalition-level screen info to SET based -- DONE Coalition-level screen info to SET based
-- DONE Flash directions -- DONE Flash directions
-- TODO less rebuilds menu, Task info menu available after join -- DONE less rebuilds menu, Task info menu available after join
-- DONE Limit menu entries -- DONE Limit menu entries
------------------------------------------------------------------------------------------------------------------- -------------------------------------------------------------------------------------------------------------------
@ -727,6 +727,9 @@ do
-- @field #number menuitemlimit -- @field #number menuitemlimit
-- @field #boolean activehasinfomenu -- @field #boolean activehasinfomenu
-- @field #number holdmenutime -- @field #number holdmenutime
-- @field #table customcallsigns
-- @field #boolean ShortCallsign
-- @field #boolean Keepnumber
-- @extends Core.Fsm#FSM -- @extends Core.Fsm#FSM
--- ---
@ -1021,6 +1024,9 @@ PLAYERTASKCONTROLLER = {
taskinfomenu = false, taskinfomenu = false,
activehasinfomenu = false, activehasinfomenu = false,
MarkerReadOnly = false, MarkerReadOnly = false,
customcallsigns = {},
ShortCallsign = true,
Keepnumber = false,
} }
--- ---
@ -1179,7 +1185,7 @@ PLAYERTASKCONTROLLER.Messages = {
--- PLAYERTASK class version. --- PLAYERTASK class version.
-- @field #string version -- @field #string version
PLAYERTASKCONTROLLER.version="0.1.32" PLAYERTASKCONTROLLER.version="0.1.33"
--- Constructor --- Constructor
-- @param #PLAYERTASKCONTROLLER self -- @param #PLAYERTASKCONTROLLER self
@ -1228,6 +1234,10 @@ function PLAYERTASKCONTROLLER:New(Name, Coalition, Type, ClientFilter)
self.repeatonfailed = true self.repeatonfailed = true
self.repeattimes = 5 self.repeattimes = 5
self.UseGroupNames = true self.UseGroupNames = true
self.customcallsigns = {}
self.ShortCallsign = true
self.Keepnumber = false
if ClientFilter then if ClientFilter then
self.ClientSet = SET_CLIENT:New():FilterCoalitions(string.lower(self.CoalitionName)):FilterActive(true):FilterPrefixes(ClientFilter):FilterStart() self.ClientSet = SET_CLIENT:New():FilterCoalitions(string.lower(self.CoalitionName)):FilterActive(true):FilterPrefixes(ClientFilter):FilterStart()
@ -1349,6 +1359,22 @@ function PLAYERTASKCONTROLLER:SetAllowFlashDirection(OnOff)
return self return self
end end
--- [User] Set callsign options for TTS output. See @{Wrapper.Group#GROUP.GetCustomCallSign}() on how to set customized callsigns.
-- @param #PLAYERTASKCONTROLLER 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.
-- @return #PLAYERTASKCONTROLLER self
function PLAYERTASKCONTROLLER:SetCallSignOptions(ShortCallsign,Keepnumber)
if not ShortCallsign or ShortCallsign == false then
self.ShortCallsign = false
else
self.ShortCallsign = true
end
self.Keepnumber = Keepnumber or false
return self
end
--- [User] Set repetition options for tasks --- [User] Set repetition options for tasks
-- @param #PLAYERTASKCONTROLLER self -- @param #PLAYERTASKCONTROLLER self
-- @param #boolean OnOff Set to `true` to switch on and `false` to switch off (defaults to true) -- @param #boolean OnOff Set to `true` to switch on and `false` to switch off (defaults to true)
@ -1470,16 +1496,13 @@ end
function PLAYERTASKCONTROLLER:_GetPlayerName(Client) function PLAYERTASKCONTROLLER:_GetPlayerName(Client)
self:T(self.lid.."DisablePrecisionBombing") self:T(self.lid.."DisablePrecisionBombing")
local playername = Client:GetPlayerName() local playername = Client:GetPlayerName()
local ttsplayername = playername local ttsplayername = nil
if string.find(playername,"|") then if not self.customcallsigns[playername] then
-- personalized flight name in player naming local playergroup = Client:GetGroup()
ttsplayername = string.match(playername,"| ([%a]+)") ttsplayername = playergroup:GetCustomCallSign(self.ShortCallsign,self.Keepnumber)
end self.customcallsigns[playername] = ttsplayername
local group = Client:GetGroup() else
local groupname = group:GetName() ttsplayername = self.customcallsigns[playername]
if string.find(groupname,"#") then
-- personalized flight name in player naming
ttsplayername = string.match(groupname,"#([%a]+)")
end end
return playername, ttsplayername return playername, ttsplayername
end end
@ -1593,10 +1616,13 @@ function PLAYERTASKCONTROLLER:_EventHandler(EventData)
modulation = UTILS.GetModulationName(modulation) modulation = UTILS.GetModulationName(modulation)
local switchtext = self.gettext:GetEntry("BROADCAST",self.locale) local switchtext = self.gettext:GetEntry("BROADCAST",self.locale)
local playername = EventData.IniPlayerName local playername = EventData.IniPlayerName
if string.find(playername,"|") then if EventData.IniGroup then
-- personalized flight name in player naming -- personalized flight name in player naming
playername = string.match(playername,"| ([%a]+)") if self.customcallsigns[playername] then
self.customcallsigns[playername] = nil
end
playername = EventData.IniGroup:GetCustomCallSign(self.ShortCallsign,self.Keepnumber)
end end
--local text = string.format("%s, %s, switch to %s for task assignment!",EventData.IniPlayerName,self.MenuName or self.Name,freqtext) --local text = string.format("%s, %s, switch to %s for task assignment!",EventData.IniPlayerName,self.MenuName or self.Name,freqtext)
local text = string.format(switchtext,self.MenuName or self.Name,playername,freqtext) local text = string.format(switchtext,self.MenuName or self.Name,playername,freqtext)
@ -1606,11 +1632,6 @@ function PLAYERTASKCONTROLLER:_EventHandler(EventData)
return self return self
end end
function PLAYERTASKCONTROLLER:_DummyMenu(group)
self:T(self.lid.."_DummyMenu")
return self
end
--- [User] Set locale for localization. Defaults to "en" --- [User] Set locale for localization. Defaults to "en"
-- @param #PLAYERTASKCONTROLLER self -- @param #PLAYERTASKCONTROLLER self
-- @param #string Locale The locale to use -- @param #string Locale The locale to use
@ -1862,8 +1883,12 @@ function PLAYERTASKCONTROLLER:_CheckPrecisionTasks()
local text = "" local text = ""
for _,playername in pairs(clients) do for _,playername in pairs(clients) do
local pointertext = self.gettext:GetEntry("POINTEROVERTARGET",self.locale) local pointertext = self.gettext:GetEntry("POINTEROVERTARGET",self.locale)
local ttsplayername = playername
if self.customcallsigns[playername] then
ttsplayername = self.customcallsigns[playername]
end
--text = string.format("%s, %s, pointer over target for task %03d, lasing!", playername, self.MenuName or self.Name, task.PlayerTaskNr) --text = string.format("%s, %s, pointer over target for task %03d, lasing!", playername, self.MenuName or self.Name, task.PlayerTaskNr)
text = string.format(pointertext, playername, self.MenuName or self.Name, task.PlayerTaskNr) text = string.format(pointertext, ttsplayername, self.MenuName or self.Name, task.PlayerTaskNr)
if not self.NoScreenOutput then if not self.NoScreenOutput then
local client = nil local client = nil
self.ClientSet:ForEachClient( self.ClientSet:ForEachClient(
@ -2344,9 +2369,10 @@ function PLAYERTASKCONTROLLER:_ActiveTaskInfo(Group, Client, Task)
local clienttxt = self.gettext:GetEntry("PILOTS",self.locale) local clienttxt = self.gettext:GetEntry("PILOTS",self.locale)
if clientcount > 0 then if clientcount > 0 then
for _,_name in pairs(clientlist) do for _,_name in pairs(clientlist) do
if string.find(_name,"|") then if self.customcallsigns[_name] then
-- personalized flight name in player naming -- personalized flight name in player naming
_name = string.match(_name,"| ([%a]+)") --_name = string.match(_name,"| ([%a]+)")
_name = self.customcallsigns[_name]
end end
clienttxt = clienttxt .. _name .. ", " clienttxt = clienttxt .. _name .. ", "
end end
@ -2581,7 +2607,7 @@ function PLAYERTASKCONTROLLER:_BuildMenus(Client,enforced)
if self:_CheckPlayerHasTask(playername) then playerhastask = true end if self:_CheckPlayerHasTask(playername) then playerhastask = true end
local topmenu = nil local topmenu = nil
self:I("Playerhastask = "..tostring(playerhastask).." Enforced = "..tostring(enforced).." Join or Abort = "..tostring(joinorabort)) self:T("Playerhastask = "..tostring(playerhastask).." Enforced = "..tostring(enforced).." Join or Abort = "..tostring(joinorabort))
-- Cases to rebuild menu -- Cases to rebuild menu
-- 1) new player -- 1) new player
@ -2599,7 +2625,7 @@ function PLAYERTASKCONTROLLER:_BuildMenus(Client,enforced)
-- 4) last build > 30 secs? -- 4) last build > 30 secs?
local T0 = timer.getAbsTime() local T0 = timer.getAbsTime()
local TDiff = T0-self.PlayerMenu[playername].MenuTag local TDiff = T0-self.PlayerMenu[playername].MenuTag
self:I("TDiff = "..TDiff) self:T("TDiff = "..TDiff)
if TDiff >= self.holdmenutime then if TDiff >= self.holdmenutime then
self.PlayerMenu[playername]:RemoveSubMenus() self.PlayerMenu[playername]:RemoveSubMenus()
self.PlayerMenu[playername]:SetTag(timer.getAbsTime()) self.PlayerMenu[playername]:SetTag(timer.getAbsTime())
@ -2965,7 +2991,7 @@ end
-- @param #string To -- @param #string To
-- @return #PLAYERTASKCONTROLLER self -- @return #PLAYERTASKCONTROLLER self
function PLAYERTASKCONTROLLER:onafterStatus(From, Event, To) function PLAYERTASKCONTROLLER:onafterStatus(From, Event, To)
self:I({From, Event, To}) self:T({From, Event, To})
self:_CheckTargetQueue() self:_CheckTargetQueue()
self:_CheckTaskQueue() self:_CheckTaskQueue()