* Added PlayerName to `OnAfterPilotRescued(From,Event,To,PilotName)` if available
This commit is contained in:
Applevangelist 2023-02-16 18:22:06 +01:00
parent dbd7634f0e
commit 6ec43b72ce

View File

@ -52,6 +52,7 @@
-- @field Core.Set#SET_CLIENT playerset Track if alive heli pilots are available.
-- @field #boolean limithelos limit available number of helos going on mission (defaults to true)
-- @field #number helonumber number of helos available (default: 3)
-- @field Utilities.FiFo#FIFO PilotStore
-- @extends Core.Fsm#FSM
@ -186,7 +187,7 @@
-- @field #AICSAR
AICSAR = {
ClassName = "AICSAR",
version = "0.1.9",
version = "0.1.10",
lid = "",
coalition = coalition.side.BLUE,
template = "",
@ -226,6 +227,7 @@ AICSAR = {
SRSPilotVoice = false,
SRSOperator = nil,
SRSOperatorVoice = false,
PilotStore = nil,
}
-- TODO Messages
@ -369,6 +371,9 @@ function AICSAR:New(Alias,Coalition,Pilottemplate,Helotemplate,FARP,MASHZone)
-- Set some string id for output to DCS.log file.
self.lid=string.format("%s (%s) | ", self.alias, self.coalition and UTILS.GetCoalitionName(self.coalition) or "unknown")
--Pilot Store
self.PilotStore = FIFO:New()
-- Start State.
self:SetStartState("Stopped")
@ -385,6 +390,7 @@ function AICSAR:New(Alias,Coalition,Pilottemplate,Helotemplate,FARP,MASHZone)
self:AddTransition("*", "Stop", "Stopped") -- Stop FSM.
self:HandleEvent(EVENTS.LandingAfterEjection)
self:HandleEvent(EVENTS.Ejection)
self:__Start(math.random(2,5))
@ -439,6 +445,7 @@ function AICSAR:New(Alias,Coalition,Pilottemplate,Helotemplate,FARP,MASHZone)
-- @param #string From From state.
-- @param #string Event Event.
-- @param #string To To state.
-- @param #string PilotName
--- On after "PilotUnloaded" event.
-- @function [parent=#AICSAR] OnAfterPilotUnloaded
@ -648,6 +655,19 @@ function AICSAR:DCSRadioBroadcast(Soundfile,Duration,Subtitle)
return self
end
--- [Internal] Catch the ejection and save the pilot name
-- @param #AICSAR self
-- @param Core.Event#EVENTDATA EventData
-- @return #AICSAR self
function AICSAR:OnEventEjection(EventData)
local _event = EventData -- Core.Event#EVENTDATA
if _event.IniPlayerName then
self.PilotStore:Push(_event.IniPlayerName)
self:T(self.lid.."Pilot Ejected: ".._event.IniPlayerName)
end
return self
end
--- [Internal] Catch the landing after ejection and spawn a pilot in situ.
-- @param #AICSAR self
-- @param Core.Event#EVENTDATA EventData
@ -858,6 +878,7 @@ function AICSAR:_CheckQueue(OpsGroup)
for _index, _pilot in pairs(self.pilotqueue) do
local classname = _pilot.ClassName and _pilot.ClassName or "NONE"
local name = _pilot.GroupName and _pilot.GroupName or "NONE"
local playername = "John Doe"
local helocount = self:_CountHelos()
--self:T("Looking at " .. classname .. " " .. name)
-- find one w/o mission
@ -873,7 +894,10 @@ function AICSAR:_CheckQueue(OpsGroup)
end
self.pilotqueue[_index] = nil
self.rescued[_index] = true
self:__PilotRescued(2)
if self.PilotStore:Count() > 0 then
playername = self.PilotStore:Pull()
end
self:__PilotRescued(2,playername)
if flightgroup then
flightgroup.AICSARReserved = false
end
@ -1095,8 +1119,9 @@ end
-- @param #string From
-- @param #string Event
-- @param #string To
-- @param #string PilotName
-- @return #AICSAR self
function AICSAR:onafterPilotRescued(From, Event, To)
function AICSAR:onafterPilotRescued(From, Event, To, PilotName)
self:T({From, Event, To})
local text,Soundfile,Soundlength,Subtitle = self.gettext:GetEntry("PILOTRESCUED",self.locale)
if self.verbose then