This commit is contained in:
Frank
2024-03-24 22:51:11 +01:00
parent 801475e146
commit 2205100942
2 changed files with 206 additions and 165 deletions
+14
View File
@@ -1157,6 +1157,20 @@ function BASE:_Serialize(Arguments)
return text return text
end end
--- (Internal) Serialize arguments
-- @param #BASE self
-- @param #table Arguments
-- @return #string Text
function BASE:_Serialize(Arguments)
local text=UTILS.BasicSerialize(Arguments)
-- local text = UTILS.PrintTableToLog({Arguments}, 0, true)
-- text = string.gsub(text,"\n","")
-- text = string.gsub(text,"%(%(","%(")
-- text = string.gsub(text,"%)%)","%)")
-- text = string.gsub(text,"(%s+)","")
return text
end
--- Trace a function call. This function is private. --- Trace a function call. This function is private.
-- @param #BASE self -- @param #BASE self
-- @param Arguments A #table or any field. -- @param Arguments A #table or any field.
+34 -7
View File
@@ -2121,7 +2121,7 @@ end
-- @param #number _nrespawn Number of already performed respawn attempts (e.g. spawning on runway bug). -- @param #number _nrespawn Number of already performed respawn attempts (e.g. spawning on runway bug).
-- @param #table parkingdata Explicitly specify the parking spots when spawning at an airport. -- @param #table parkingdata Explicitly specify the parking spots when spawning at an airport.
-- @return #number Spawn index. -- @return #number Spawn index.
function RAT:_SpawnWithRoute(_departure, _destination, _takeoff, _landing, _livery, _waypoint, _lastpos, _nrespawn, parkingdata) function RAT:_SpawnWithRoute(_departure, _destination, _takeoff, _landing, _livery, _waypoint, _lastpos, _nrespawn, parkingdata, index)
self:F({rat=RAT.id, departure=_departure, destination=_destination, takeoff=_takeoff, landing=_landing, livery=_livery, waypoint=_waypoint, lastpos=_lastpos, nrespawn=_nrespawn}) self:F({rat=RAT.id, departure=_departure, destination=_destination, takeoff=_takeoff, landing=_landing, livery=_livery, waypoint=_waypoint, lastpos=_lastpos, nrespawn=_nrespawn})
-- Set takeoff type. -- Set takeoff type.
@@ -2313,8 +2313,13 @@ end
-- @param #number delay Delay before respawn -- @param #number delay Delay before respawn
function RAT:_Respawn(index, lastpos, delay) function RAT:_Respawn(index, lastpos, delay)
-- Get the spawn index from group if delay and delay>0 then
--local index=self:GetSpawnIndexFromGroup(group)
self:ScheduleOnce(delay, RAT._Respawn, self, index, lastpos, 0)
else
local ratcraft=self.ratcraft[index] --#RAT.RatCraft
-- Get departure and destination from previous journey. -- Get departure and destination from previous journey.
local departure=self.ratcraft[index].departure local departure=self.ratcraft[index].departure
@@ -2323,7 +2328,26 @@ function RAT:_Respawn(index, lastpos, delay)
local landing=self.ratcraft[index].landing local landing=self.ratcraft[index].landing
local livery=self.ratcraft[index].livery local livery=self.ratcraft[index].livery
local lastwp=self.ratcraft[index].waypoints[#self.ratcraft[index].waypoints] local lastwp=self.ratcraft[index].waypoints[#self.ratcraft[index].waypoints]
--local lastpos=group:GetCoordinate()
local flightgroup=ratcraft.flightgroup
local parkingdata=nil
env.info("Respawning ratcraft")
for _,_element in pairs(flightgroup.elements) do
local element=_element --Ops.OpsGroup#OPSGROUP.Element
env.info(string.format("element %s", element.name))
if element.parking then
if parkingdata==nil then
parkingdata={}
end
env.info(string.format("element %s at spot id=%d", element.name, element.parking.TerminalID))
table.insert(parkingdata, element.parking)
else
env.info(string.format("element %s not SPOT", element.name))
end
end
local _departure=nil local _departure=nil
local _destination=nil local _destination=nil
@@ -2482,16 +2506,19 @@ function RAT:_Respawn(index, lastpos, delay)
arg.livery=_livery arg.livery=_livery
arg.lastwp=_lastwp arg.lastwp=_lastwp
arg.lastpos=_lastpos arg.lastpos=_lastpos
arg.parkingdata=parkingdata
self:T(RAT.id..string.format("%s delayed respawn in %.1f seconds.", self.alias, respawndelay)) self:T(RAT.id..string.format("%s delayed respawn in %.1f seconds.", self.alias, respawndelay))
SCHEDULER:New(nil, self._SpawnWithRouteTimer, {arg}, respawndelay) SCHEDULER:New(nil, self._SpawnWithRouteTimer, {arg}, respawndelay)
end
end end
--- Delayed spawn function called by scheduler. --- Delayed spawn function called by scheduler.
-- @param #RAT self -- @param #RAT self
-- @param #table arg Parameters: arg.self, arg.departure, arg.destination, arg.takeoff, arg.landing, arg.livery, arg.lastwp, arg.lastpos -- @param #table arg Parameters: arg.self, arg.departure, arg.destination, arg.takeoff, arg.landing, arg.livery, arg.lastwp, arg.lastpos, arg.parkingdata
function RAT._SpawnWithRouteTimer(arg) function RAT._SpawnWithRouteTimer(arg)
RAT._SpawnWithRoute(arg.self, arg.departure, arg.destination, arg.takeoff, arg.landing, arg.livery, arg.lastwp, arg.lastpos) RAT._SpawnWithRoute(arg.self, arg.departure, arg.destination, arg.takeoff, arg.landing, arg.livery, arg.lastwp, arg.lastpos, nil, arg.parkingdata)
end end
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
@@ -4093,7 +4120,7 @@ function RAT:_OnEngineShutdown(EventData)
-- Respawn group. -- Respawn group.
local idx=self:GetSpawnIndexFromGroup(SpawnGroup) local idx=self:GetSpawnIndexFromGroup(SpawnGroup)
local coord=SpawnGroup:GetCoordinate() local coord=SpawnGroup:GetCoordinate()
self:_Respawn(idx, coord) self:_Respawn(idx, coord, 3)
end end
-- Despawn group. -- Despawn group.