VArious fixes

This commit is contained in:
Applevangelist 2022-09-11 14:23:48 +02:00
parent 2d2f901545
commit 93abef86dc

View File

@ -684,6 +684,11 @@ do
-------------------------------------------------------------------------------------------------------------------
-- PLAYERTASKCONTROLLER
-- TODO: PLAYERTASKCONTROLLER
-- DONE Playername from after #
-- DONE Coalition-level screen info to SET based
-- DONE Flash directions
-- TODO less rebuilds menu, Task info menu available after join
-- DONE Limit menu entries
-------------------------------------------------------------------------------------------------------------------
--- PLAYERTASKCONTROLLER class.
@ -715,8 +720,13 @@ do
-- @field #boolean precisionbombing
-- @field Ops.FlightGroup#FLIGHTGROUP LasingDrone
-- @field Core.MarkerOps_BASE#MARKEROPS_BASE MarkerOps
-- @field #boolean askinfomenu
-- @field #boolean taskinfomenu
-- @field #boolean MarkerReadOnly
-- @field #table FlashPlayer List of player who switched Flashing Direction Info on
-- @field #boolean AllowFlash Flashing directions for players allowed
-- @field #number menuitemlimit
-- @field #boolean activehasinfomenu
-- @field #number holdmenutime
-- @extends Core.Fsm#FSM
---
@ -893,6 +903,10 @@ do
-- POINTEROVERTARGET = "%s, %s, pointer in reach for task %03d, lasing!",
-- POINTERTARGETREPORT = "\nPointer in reach: %s\nLasing: %s",
-- POINTERTARGETLASINGTTS = ". Pointer in reach and lasing.",
-- TARGET = "Target",
-- FLASHON = "%s - Flashing directions is now ON!",
-- FLASHOFF = "%s - Flashing directions is now OFF!",
-- FLASHMENU = "Flash Directions Switch",
-- },
--
-- e.g.
@ -1004,7 +1018,8 @@ PLAYERTASKCONTROLLER = {
gettext = nil,
locale = "en",
precisionbombing = false,
taskinfomenu = true,
taskinfomenu = false,
activehasinfomenu = false,
MarkerReadOnly = false,
}
@ -1094,6 +1109,10 @@ PLAYERTASKCONTROLLER.Messages = {
POINTEROVERTARGET = "%s, %s, pointer in reach for task %03d, lasing!",
POINTERTARGETREPORT = "\nPointer in reach: %s\nLasing: %s",
POINTERTARGETLASINGTTS = ". Pointer in reach and lasing.",
TARGET = "Target",
FLASHON = "%s - Flashing directions is now ON!",
FLASHOFF = "%s - Flashing directions is now OFF!",
FLASHMENU = "Flash Directions Switch",
},
DE = {
TASKABORT = "Auftrag abgebrochen!",
@ -1151,12 +1170,16 @@ PLAYERTASKCONTROLLER.Messages = {
POINTEROVERTARGET = "%s, %s, Marker im Zielbereich für %03d, Laser an!",
POINTERTARGETREPORT = "\nMarker im Zielbereich: %s\nLaser an: %s",
POINTERTARGETLASINGTTS = ". Marker im Zielbereich, Laser is an.",
TARGET = "Ziel",
FLASHON = "%s - Richtungsangaben einblenden ist EIN!",
FLASHOFF = "%s - Richtungsangaben einblenden ist AUS!",
FLASHMENU = "Richtungsangaben Schalter",
},
}
--- PLAYERTASK class version.
-- @field #string version
PLAYERTASKCONTROLLER.version="0.1.30"
PLAYERTASKCONTROLLER.version="0.1.32"
--- Constructor
-- @param #PLAYERTASKCONTROLLER self
@ -1190,10 +1213,15 @@ function PLAYERTASKCONTROLLER:New(Name, Coalition, Type, ClientFilter)
self.TasksPerPlayer = FIFO:New() -- Utilities.FiFo#FIFO
self.PrecisionTasks = FIFO:New() -- Utilities.FiFo#FIFO
self.PlayerMenu = {} -- #table
self.FlashPlayer = {} -- #table
self.AllowFlash = false
self.lasttaskcount = 0
self.taskinfomenu = false
self.activehasinfomenu = false
self.MenuName = nil
self.menuitemlimit = 5
self.holdmenutime = 30
self.MarkerReadOnly = false
@ -1311,6 +1339,16 @@ function PLAYERTASKCONTROLLER:_InitLocalization()
return self
end
--- [User] Set flash directions option for player (player based info)
-- @param #PLAYERTASKCONTROLLER self
-- @param #boolean OnOff Set to `true` to switch on and `false` to switch off. Default is OFF.
-- @return #PLAYERTASKCONTROLLER self
function PLAYERTASKCONTROLLER:SetAllowFlashDirection(OnOff)
self:T(self.lid.."SetAllowFlashDirection")
self.AllowFlash = OnOff
return self
end
--- [User] Set repetition options for tasks
-- @param #PLAYERTASKCONTROLLER self
-- @param #boolean OnOff Set to `true` to switch on and `false` to switch off (defaults to true)
@ -1329,6 +1367,22 @@ function PLAYERTASKCONTROLLER:SetTaskRepetition(OnOff, Repeats)
return self
end
--- [Internal] Send message to SET_CLIENT of players
-- @param #PLAYERTASKCONTROLLER self
-- @param #string Text the text to be send
-- @param #number Seconds (optional) Seconds to show, default 10
-- @return #PLAYERTASKCONTROLLER self
function PLAYERTASKCONTROLLER:_SendMessageToClients(Text,Seconds)
self:T(self.lid.."_SendMessageToClients")
local seconds = Seconds or 10
self.ClientSet:ForEachClient(
function (Client)
local m = MESSAGE:New(Text,seconds,"Tasking"):ToClient(Client)
end
)
return self
end
--- [User] Allow precision laser-guided bombing on statics and "high-value" ground units (MBT etc)
-- @param #PLAYERTASKCONTROLLER self
-- @param Ops.FlightGroup#FLIGHTGROUP FlightGroup The FlightGroup (e.g. drone) to be used for lasing (one unit in one group only).
@ -1421,9 +1475,11 @@ function PLAYERTASKCONTROLLER:_GetPlayerName(Client)
-- personalized flight name in player naming
ttsplayername = string.match(playername,"| ([%a]+)")
end
if string.find(playername,"#") then
local group = Client:GetGroup()
local groupname = group:GetName()
if string.find(groupname,"#") then
-- personalized flight name in player naming
ttsplayername = string.match(playername,"# ([%a]+)")
ttsplayername = string.match(groupname,"#([%a]+)")
end
return playername, ttsplayername
end
@ -1456,6 +1512,24 @@ function PLAYERTASKCONTROLLER:DisableTaskInfoMenu()
return self
end
--- [User] Set menu build fine-tuning options
-- @param #PLAYERTASKCONTROLLER self
-- @param #boolean InfoMenu If `true` this option will allow to show the Task Info-Menu also when a player has an active task.
-- Since the menu isn't refreshed if a player holds an active task, the info in there might be stale.
-- @param #number ItemLimit Number of items per task type to show, default 5.
-- @param #number HoldTime Minimum number of seconds between menu refreshes (called every 30 secs) if a player has **no active task**.
-- @return #PLAYERTASKCONTROLLER self
function PLAYERTASKCONTROLLER:SetMenuOptions(InfoMenu,ItemLimit,HoldTime)
self:T(self.lid.."SetMenuOptions")
self.activehasinfomenu = InfoMenu or false
if self.activehasinfomenu then
self:EnableTaskInfoMenu()
end
self.menuitemlimit = ItemLimit or 5
self.holdmenutime = HoldTime or 30
return self
end
--- [User] Forbid F10 markers to be deleted by pilots. Note: Marker will auto-delete when the undelying task is done.
-- @param #PLAYERTASKCONTROLLER self
-- @return #PLAYERTASKCONTROLLER self
@ -1639,7 +1713,6 @@ function PLAYERTASKCONTROLLER:_GetTasksPerType()
table.sort(threattable, function (k1, k2) return k1.threat > k2.threat end )
for _id,_data in pairs(threattable) do
local threat=_data.threat
local task = _data.task -- Ops.PlayerTask#PLAYERTASK
@ -2135,7 +2208,7 @@ function PLAYERTASKCONTROLLER:_JoinTask(Group, Client, Task)
-- Player already has a task
if not self.NoScreenOutput then
local text = self.gettext:GetEntry("HAVEACTIVETASK",self.locale)
local m=MESSAGE:New(text,"10","Tasking"):ToGroup(Group)
local m=MESSAGE:New(text,"10","Tasking"):ToClient(Client)
end
return self
end
@ -2151,7 +2224,8 @@ function PLAYERTASKCONTROLLER:_JoinTask(Group, Client, Task)
local text = string.format(joined,ttsplayername, self.MenuName or self.Name, Task.TTSType, Task.PlayerTaskNr)
self:T(self.lid..text)
if not self.NoScreenOutput then
local m=MESSAGE:New(text,"10","Tasking"):ToAll()
self:_SendMessageToClients(text)
--local m=MESSAGE:New(text,"10","Tasking"):ToAll()
end
if self.UseSRS then
self.SRSQueue:NewTransmission(text,nil,self.SRS,nil,2)
@ -2168,6 +2242,55 @@ function PLAYERTASKCONTROLLER:_JoinTask(Group, Client, Task)
return self
end
--- [Internal] Switch flashing info for a client
-- @param #PLAYERTASKCONTROLLER self
-- @param Wrapper.Group#GROUP Group
-- @param Wrapper.Client#CLIENT Client
-- @return #PLAYERTASKCONTROLLER self
function PLAYERTASKCONTROLLER:_SwitchFlashing(Group, Client)
self:T(self.lid.."_SwitchFlashing")
local playername, ttsplayername = self:_GetPlayerName(Client)
if (not self.FlashPlayer[playername]) or (self.FlashPlayer[playername] == false) then
-- Switch on
self.FlashPlayer[playername] = Client
local flashtext = self.gettext:GetEntry("FLASHON",self.locale)
local text = string.format(flashtext,ttsplayername)
local m = MESSAGE:New(text,10,"Tasking"):ToClient(Client)
else
-- Switch off
self.FlashPlayer[playername] = false
local flashtext = self.gettext:GetEntry("FLASHOFF",self.locale)
local text = string.format(flashtext,ttsplayername)
local m = MESSAGE:New(text,10,"Tasking"):ToClient(Client)
end
return self
end
--- [Internal] Flashing directional info for a client
-- @param #PLAYERTASKCONTROLLER self
-- @return #PLAYERTASKCONTROLLER self
function PLAYERTASKCONTROLLER:_FlashInfo()
self:T(self.lid.."_FlashInfo")
for _playername,_client in pairs(self.FlashPlayer) do
if _client and _client:IsAlive() then
if self.TasksPerPlayer:HasUniqueID(_playername) then
local task = self.TasksPerPlayer:ReadByID(_playername) -- Ops.PlayerTask#PLAYERTASK
local Coordinate = task.Target:GetCoordinate()
local CoordText = ""
if self.Type ~= PLAYERTASKCONTROLLER.Type.A2A then
CoordText = Coordinate:ToStringA2G(_client)
else
c = Coordinate:ToStringA2A(_client)
end
local targettxt = self.gettext:GetEntry("TARGET",self.locale)
local text = "Target: "..CoordText
local m = MESSAGE:New(text,10,"Tasking"):ToClient(_client)
end
end
end
return self
end
--- [Internal] Show active task info
-- @param #PLAYERTASKCONTROLLER self
-- @param Wrapper.Group#GROUP Group
@ -2252,7 +2375,7 @@ function PLAYERTASKCONTROLLER:_ActiveTaskInfo(Group, Client, Task)
text = self.gettext:GetEntry("NOACTIVETASK",self.locale)
end
if not self.NoScreenOutput then
local m=MESSAGE:New(text,15,"Tasking"):ToGroup(Group)
local m=MESSAGE:New(text,15,"Tasking"):ToClient(Client)
end
return self
end
@ -2281,7 +2404,7 @@ function PLAYERTASKCONTROLLER:_MarkTask(Group, Client)
text = self.gettext:GetEntry("NOACTIVETASK",self.locale)
end
if not self.NoScreenOutput then
local m=MESSAGE:New(text,"10","Tasking"):ToGroup(Group)
local m=MESSAGE:New(text,"10","Tasking"):ToClient(Client)
end
return self
end
@ -2309,7 +2432,7 @@ function PLAYERTASKCONTROLLER:_SmokeTask(Group, Client)
text = self.gettext:GetEntry("NOACTIVETASK",self.locale)
end
if not self.NoScreenOutput then
local m=MESSAGE:New(text,15,"Tasking"):ToGroup(Group)
local m=MESSAGE:New(text,15,"Tasking"):ToClient(Client)
end
return self
end
@ -2337,7 +2460,7 @@ function PLAYERTASKCONTROLLER:_FlareTask(Group, Client)
text = self.gettext:GetEntry("NOACTIVETASK",self.locale)
end
if not self.NoScreenOutput then
local m=MESSAGE:New(text,15,"Tasking"):ToGroup(Group)
local m=MESSAGE:New(text,15,"Tasking"):ToClient(Client)
end
return self
end
@ -2366,12 +2489,62 @@ function PLAYERTASKCONTROLLER:_AbortTask(Group, Client)
text = self.gettext:GetEntry("NOACTIVETASK",self.locale)
end
if not self.NoScreenOutput then
local m=MESSAGE:New(text,15,"Tasking"):ToGroup(Group)
local m=MESSAGE:New(text,15,"Tasking"):ToClient(Client)
end
self:_BuildMenus(Client,true)
return self
end
--- [Internal] Build Task Info Menu
-- @param #PLAYERTASKCONTROLLER self
-- @param Wrapper.Group#GROUP group
-- @param Wrapper.Client#CLIENT client
-- @param #string playername
-- @param Core.Menu#MENU_BASE topmenu
-- @param #table tasktypes
-- @param #table taskpertype
-- @return #PLAYERTASKCONTROLLER self
function PLAYERTASKCONTROLLER:_BuildTaskInfoMenu(group,client,playername,topmenu,tasktypes,taskpertype)
if self.taskinfomenu then
local menutaskinfo = self.gettext:GetEntry("MENUTASKINFO",self.locale)
local ittypes = {}
local itaskmenu = {}
local taskinfomenu = MENU_GROUP_DELAYED:New(group,menutaskinfo,topmenu)
for _tasktype,_data in pairs(tasktypes) do
ittypes[_tasktype] = MENU_GROUP_DELAYED:New(group,_tasktype,taskinfomenu)
local tasks = taskpertype[_tasktype] or {}
local n = 0
for _,_task in pairs(tasks) do
_task = _task -- Ops.PlayerTask#PLAYERTASK
local pilotcount = _task:CountClients()
local newtext = "]"
local tnow = timer.getTime()
-- marker for new tasks
if tnow - _task.timestamp < 60 then
newtext = "*]"
end
local menutaskno = self.gettext:GetEntry("MENUTASKNO",self.locale)
local text = string.format("%s %03d [%d%s",menutaskno,_task.PlayerTaskNr,pilotcount,newtext)
if self.UseGroupNames then
local name = _task.Target:GetName()
if name ~= "Unknown" then
text = string.format("%s (%03d) [%d%s",name,_task.PlayerTaskNr,pilotcount,newtext)
end
end
local taskentry = MENU_GROUP_COMMAND_DELAYED:New(group,text,ittypes[_tasktype],self._ActiveTaskInfo,self,group,client,_task)
--taskentry:SetTag(playername)
itaskmenu[#itaskmenu+1] = taskentry
-- keep max items limit
n = n + 1
if n >= self.menuitemlimit then
break
end
end
end
end
return self
end
--- [Internal] Build client menus
-- @param #PLAYERTASKCONTROLLER self
-- @param Wrapper.Client#CLIENT Client (optional) build for this client name only
@ -2381,10 +2554,13 @@ function PLAYERTASKCONTROLLER:_BuildMenus(Client,enforced)
self:T(self.lid.."_BuildMenus")
local clients = self.ClientSet:GetAliveSet()
local joinorabort = false
if Client then
-- client + enforced -- join task or abort
clients = {Client}
enforced = true
joinorabort = true
end
for _,_client in pairs(clients) do
@ -2394,11 +2570,6 @@ function PLAYERTASKCONTROLLER:_BuildMenus(Client,enforced)
local unknown = self.gettext:GetEntry("UNKNOWN",self.locale)
local playername = client:GetPlayerName() or unknown
if group and client then
---
-- Conditions for menu rebuild
-- 1) Player has no menu
-- 2) Player has no running task
-- 3) enforced
---
-- TOPMENU
---
@ -2410,17 +2581,62 @@ function PLAYERTASKCONTROLLER:_BuildMenus(Client,enforced)
if self:_CheckPlayerHasTask(playername) then playerhastask = true end
local topmenu = nil
self:T("Playerhastask = "..tostring(playerhastask).." Enforced = "..tostring(enforced))
self:I("Playerhastask = "..tostring(playerhastask).." Enforced = "..tostring(enforced).." Join or Abort = "..tostring(joinorabort))
-- Cases to rebuild menu
-- 1) new player
-- 2) player joined a task, joinorabort = true
-- 3) player left a task, joinorabort = true
-- 4) player has no task, but number of tasks changed, and last build > 30 secs ago
if self.PlayerMenu[playername] then
if enforced or not playerhastask then
-- NOT a new player
-- 2)+3) Join or abort?
if joinorabort then
self.PlayerMenu[playername]:RemoveSubMenus()
self.PlayerMenu[playername]:SetTag(timer.getAbsTime())
topmenu = self.PlayerMenu[playername]
elseif (not playerhastask) and enforced then
-- 4) last build > 30 secs?
local T0 = timer.getAbsTime()
local TDiff = T0-self.PlayerMenu[playername].MenuTag
self:I("TDiff = "..TDiff)
if TDiff >= self.holdmenutime then
self.PlayerMenu[playername]:RemoveSubMenus()
self.PlayerMenu[playername]:SetTag(timer.getAbsTime())
end
topmenu = self.PlayerMenu[playername]
end
else
-- 1) new player#
topmenu = MENU_GROUP_DELAYED:New(group,menuname,nil)
self.PlayerMenu[playername] = topmenu
self.PlayerMenu[playername]:SetTag(timer.getAbsTime())
end
--[[
if self.PlayerMenu[playername] then
if enforced and not playerhastask then
if self.PlayerMenu[playername].MenuTag then
-- don't build if < 30 secs ago
local T0 = timer.getAbsTime()
local TDiff = T0-self.PlayerMenu[playername].MenuTag
if TDiff > 30 then
-- allow rebuild
self.PlayerMenu[playername]:RemoveSubMenus()
self.PlayerMenu[playername]:SetTag(timer.getAbsTime())
end
else
self.PlayerMenu[playername]:RemoveSubMenus()
self.PlayerMenu[playername]:SetTag(timer.getAbsTime())
end
end
topmenu = self.PlayerMenu[playername]
else
topmenu = MENU_GROUP_DELAYED:New(group,menuname,nil)
self.PlayerMenu[playername] = topmenu
self.PlayerMenu[playername]:SetTag(timer.getAbsTime())
end
--]]
---
-- ACTIVE TASK MENU
@ -2443,7 +2659,13 @@ function PLAYERTASKCONTROLLER:_BuildMenus(Client,enforced)
local flare = MENU_GROUP_COMMAND_DELAYED:New(group,menuflare,active,self._FlareTask,self,group,client)
end
local abort = MENU_GROUP_COMMAND_DELAYED:New(group,menuabort,active,self._AbortTask,self,group,client)
if self.activehasinfomenu and self.taskinfomenu then
local tasktypes = self:_GetAvailableTaskTypes()
local taskpertype = self:_GetTasksPerType()
self:_BuildTaskInfoMenu(group,client,playername,topmenu,tasktypes,taskpertype)
end
elseif (self.TaskQueue:Count() > 0 and enforced) or (not playerhastask) then
---
-- JOIN TASK MENU
@ -2451,16 +2673,14 @@ function PLAYERTASKCONTROLLER:_BuildMenus(Client,enforced)
local tasktypes = self:_GetAvailableTaskTypes()
local taskpertype = self:_GetTasksPerType()
local menujoin = self.gettext:GetEntry("MENUJOIN",self.locale)
local menutaskinfo = self.gettext:GetEntry("MENUTASKINFO",self.locale)
local joinmenu = MENU_GROUP_DELAYED:New(group,menujoin,topmenu)
local ttypes = {}
local taskmenu = {}
local ittypes = {}
local itaskmenu = {}
for _tasktype,_data in pairs(tasktypes) do
ttypes[_tasktype] = MENU_GROUP_DELAYED:New(group,_tasktype,joinmenu)
local tasks = taskpertype[_tasktype] or {}
local n = 0
for _,_task in pairs(tasks) do
_task = _task -- Ops.PlayerTask#PLAYERTASK
local pilotcount = _task:CountClients()
@ -2478,45 +2698,17 @@ function PLAYERTASKCONTROLLER:_BuildMenus(Client,enforced)
text = string.format("%s (%03d) [%d%s",name,_task.PlayerTaskNr,pilotcount,newtext)
end
end
--if _task:GetState() == "Planned" or (not _task:HasPlayerName(playername)) then
local taskentry = MENU_GROUP_COMMAND_DELAYED:New(group,text,ttypes[_tasktype],self._JoinTask,self,group,client,_task)
taskentry:SetTag(playername)
--taskentry:SetTag(playername)
taskmenu[#taskmenu+1] = taskentry
--end
n = n + 1
if n >= self.menuitemlimit then
break
end
end
end
--joinmenu:Set()
if self.taskinfomenu then
local taskinfomenu = MENU_GROUP_DELAYED:New(group,menutaskinfo,topmenu)
for _tasktype,_data in pairs(tasktypes) do
ittypes[_tasktype] = MENU_GROUP_DELAYED:New(group,_tasktype,taskinfomenu)
local tasks = taskpertype[_tasktype] or {}
for _,_task in pairs(tasks) do
_task = _task -- Ops.PlayerTask#PLAYERTASK
local pilotcount = _task:CountClients()
local newtext = "]"
local tnow = timer.getTime()
-- marker for new tasks
if tnow - _task.timestamp < 60 then
newtext = "*]"
end
local menutaskno = self.gettext:GetEntry("MENUTASKNO",self.locale)
local text = string.format("%s %03d [%d%s",menutaskno,_task.PlayerTaskNr,pilotcount,newtext)
if self.UseGroupNames then
local name = _task.Target:GetName()
if name ~= "Unknown" then
text = string.format("%s (%03d) [%d%s",name,_task.PlayerTaskNr,pilotcount,newtext)
end
end
--if _task:GetState() == "Planned" or (not _task:HasPlayerName(playername)) then
local taskentry = MENU_GROUP_COMMAND_DELAYED:New(group,text,ittypes[_tasktype],self._ActiveTaskInfo,self,group,client,_task)
taskentry:SetTag(playername)
itaskmenu[#itaskmenu+1] = taskentry
--end
end
end
--taskinfomenu:Set()
self:_BuildTaskInfoMenu(group,client,playername,topmenu,tasktypes,taskpertype)
end
elseif self.TaskQueue:Count() == 0 then
-- no tasks (yet)
@ -2525,7 +2717,11 @@ function PLAYERTASKCONTROLLER:_BuildMenus(Client,enforced)
end
---
-- REFRESH MENU
---
---
if self.AllowFlash then
local flashtext = self.gettext:GetEntry("FLASHMENU",self.locale)
local flashmenu = MENU_GROUP_COMMAND_DELAYED:New(group,flashtext,self.PlayerMenu[playername],self._SwitchFlashing,self,group,client)
end
self.PlayerMenu[playername]:Set()
end
end
@ -2774,6 +2970,9 @@ function PLAYERTASKCONTROLLER:onafterStatus(From, Event, To)
self:_CheckTargetQueue()
self:_CheckTaskQueue()
self:_CheckPrecisionTasks()
if self.AllowFlash then
self:_FlashInfo()
end
local targetcount = self.TargetQueue:Count()
local taskcount = self.TaskQueue:Count()
@ -2826,7 +3025,8 @@ function PLAYERTASKCONTROLLER:onafterTaskCancelled(From, Event, To, Task)
local canceltxttts = self.gettext:GetEntry("TASKCANCELLEDTTS",self.locale)
local taskname = string.format(canceltxt, Task.PlayerTaskNr, tostring(Task.Type))
if not self.NoScreenOutput then
local m = MESSAGE:New(taskname,15,"Tasking"):ToCoalition(self.Coalition)
self:_SendMessageToClients(taskname,15)
--local m = MESSAGE:New(taskname,15,"Tasking"):ToCoalition(self.Coalition)
end
if self.UseSRS then
taskname = string.format(canceltxttts, self.MenuName or self.Name, Task.PlayerTaskNr, tostring(Task.TTSType))
@ -2849,7 +3049,8 @@ function PLAYERTASKCONTROLLER:onafterTaskSuccess(From, Event, To, Task)
local succtxttts = self.gettext:GetEntry("TASKSUCCESSTTS",self.locale)
local taskname = string.format(succtxt, Task.PlayerTaskNr, tostring(Task.Type))
if not self.NoScreenOutput then
local m = MESSAGE:New(taskname,15,"Tasking"):ToCoalition(self.Coalition)
self:_SendMessageToClients(taskname,15)
--local m = MESSAGE:New(taskname,15,"Tasking"):ToCoalition(self.Coalition)
end
if self.UseSRS then
taskname = string.format(succtxttts, self.MenuName or self.Name, Task.PlayerTaskNr, tostring(Task.TTSType))
@ -2872,7 +3073,8 @@ function PLAYERTASKCONTROLLER:onafterTaskFailed(From, Event, To, Task)
local failtxttts = self.gettext:GetEntry("TASKFAILEDTTS",self.locale)
local taskname = string.format(failtxt, Task.PlayerTaskNr, tostring(Task.Type))
if not self.NoScreenOutput then
local m = MESSAGE:New(taskname,15,"Tasking"):ToCoalition(self.Coalition)
self:_SendMessageToClients(taskname,15)
--local m = MESSAGE:New(taskname,15,"Tasking"):ToCoalition(self.Coalition)
end
if self.UseSRS then
taskname = string.format(failtxttts, self.MenuName or self.Name, Task.PlayerTaskNr, tostring(Task.TTSType))
@ -2895,7 +3097,8 @@ function PLAYERTASKCONTROLLER:onafterTaskRepeatOnFailed(From, Event, To, Task)
local repfailtxttts = self.gettext:GetEntry("TASKFAILEDREPLANTTS",self.locale)
local taskname = string.format(repfailtxt, Task.PlayerTaskNr, tostring(Task.Type))
if not self.NoScreenOutput then
local m = MESSAGE:New(taskname,15,"Tasking"):ToCoalition(self.Coalition)
self:_SendMessageToClients(taskname,15)
--local m = MESSAGE:New(taskname,15,"Tasking"):ToCoalition(self.Coalition)
end
if self.UseSRS then
taskname = string.format(repfailtxttts, self.MenuName or self.Name, Task.PlayerTaskNr, tostring(Task.TTSType))
@ -2917,7 +3120,8 @@ function PLAYERTASKCONTROLLER:onafterTaskAdded(From, Event, To, Task)
local addtxt = self.gettext:GetEntry("TASKADDED",self.locale)
local taskname = string.format(addtxt, self.MenuName or self.Name, tostring(Task.Type))
if not self.NoScreenOutput then
local m = MESSAGE:New(taskname,15,"Tasking"):ToCoalition(self.Coalition)
self:_SendMessageToClients(taskname,15)
--local m = MESSAGE:New(taskname,15,"Tasking"):ToCoalition(self.Coalition)
end
if self.UseSRS then
taskname = string.format(addtxt, self.MenuName or self.Name, tostring(Task.TTSType))