From a4d3089fdb6e204d9fd4a49d91dd852835854c88 Mon Sep 17 00:00:00 2001 From: FlightControl_Master Date: Sat, 31 Mar 2018 09:10:11 +0200 Subject: [PATCH] Updates Csar --- Moose Development/Moose/Cargo/Cargo.lua | 11 ++++ .../Moose/Tasking/Task_CARGO.lua | 5 +- .../Moose/Tasking/Task_Cargo_Dispatcher.lua | 54 ++++++++++++++++--- .../Moose/Tasking/Task_Manager.lua | 2 +- 4 files changed, 61 insertions(+), 11 deletions(-) diff --git a/Moose Development/Moose/Cargo/Cargo.lua b/Moose Development/Moose/Cargo/Cargo.lua index e6b3bde6e..07ee37a6d 100644 --- a/Moose Development/Moose/Cargo/Cargo.lua +++ b/Moose Development/Moose/Cargo/Cargo.lua @@ -277,6 +277,17 @@ do -- CARGO return self end + + --- Find a CARGO in the _DATABASE. + -- @param #CARGO self + -- @param #string CargoName The Cargo Name. + -- @return #CARGO self + function CARGO:FindByName( CargoName ) + + local CargoFound = _DATABASE:FindCargo( CargoName ) + return CargoFound + end + --- Destroy the cargo. -- @param #CARGO self function CARGO:Destroy() diff --git a/Moose Development/Moose/Tasking/Task_CARGO.lua b/Moose Development/Moose/Tasking/Task_CARGO.lua index c9127d3fe..d59473047 100644 --- a/Moose Development/Moose/Tasking/Task_CARGO.lua +++ b/Moose Development/Moose/Tasking/Task_CARGO.lua @@ -727,10 +727,11 @@ do -- TASK_CARGO --- @param #TASK_CARGO self -- @param #list DeployZones + -- @param Wrapper.Unit#UNIT TaskUnit -- @return #TASK_CARGO - function TASK_CARGO:SetDeployZones( DeployZones ) + function TASK_CARGO:SetDeployZones( DeployZones, TaskUnit ) - for DeployZoneID, DeployZone in pairs( DeployZones ) do + for DeployZoneID, DeployZone in pairs( DeployZones or {} ) do self.DeployZones[DeployZone:GetName()] = DeployZone end diff --git a/Moose Development/Moose/Tasking/Task_Cargo_Dispatcher.lua b/Moose Development/Moose/Tasking/Task_Cargo_Dispatcher.lua index 3b22c9e01..7e07deb90 100644 --- a/Moose Development/Moose/Tasking/Task_Cargo_Dispatcher.lua +++ b/Moose Development/Moose/Tasking/Task_Cargo_Dispatcher.lua @@ -205,7 +205,7 @@ do -- TASK_CARGO_DISPATCHER -- @param #string PlayerName self:SetCSARRadius() - self:__Start( 5 ) + self:__StartTasks( 5 ) -- For CSAR missions, we process the event when a pilot ejects. @@ -221,14 +221,52 @@ do -- TASK_CARGO_DISPATCHER function TASK_CARGO_DISPATCHER:OnEventEjection( EventData ) self:E( { EventData = EventData } ) - - local PilotUnit = EventData.IniUnit + + local PlaneUnit = EventData.IniUnit local CSARName = EventData.IniUnitName - self.CSAR[CSARName] = {} - self.CSAR[CSARName].PilotUnit = PilotUnit - self.CSAR[CSARName].Task = nil + local PilotUnit = nil + + self:ScheduleOnce( 1, + function() + + -- Search for the ejected pilot + + local PlaneCoord = PlaneUnit:GetCoordinate() + + local SphereSearch = { + id = world.VolumeType.SPHERE, + params = { + point = PlaneCoord:GetVec3(), + radius = 100, + } + + } + + --- @param Dcs.DCSWrapper.Unit#Unit FoundDCSUnit + -- @param Wrapper.Group#GROUP ReportGroup + -- @param Set#SET_GROUP ReportSetGroup + local FindEjectedPilot = function( FoundDCSUnit ) + + local UnitName = FoundDCSUnit:getName() + + self:E( { "Units near Plane:", UnitName } ) + + PilotUnit = UNIT:Register( UnitName ) + + return true + end + + world.searchObjects( { Object.Category.UNIT, Object.Category.STATIC, Object.Category.SCENERY, Object.Category.WEAPON }, SphereSearch, FindEjectedPilot ) + + self.CSAR[CSARName] = {} + self.CSAR[CSARName].PilotUnit = PlaneUnit + self.CSAR[CSARName].Task = nil + end + ) + + return self end @@ -247,7 +285,7 @@ do -- TASK_CARGO_DISPATCHER -- function TASK_CARGO_DISPATCHER:SetCSARRadius( CSARRadius ) - self.Detection:SetFriendliesRange( CSARRadius or 50000 ) + self.CSARRadius = CSARRadius or 50000 return self end @@ -336,7 +374,7 @@ do -- TASK_CARGO_DISPATCHER -- New CSAR Task local SetCargo = self:EvaluateCSAR( CSARData.PilotUnit ) local CSARTask = TASK_CARGO_CSAR:New( Mission, self.SetGroup, "Rescue Pilot", SetCargo ) - CSARTask:SetDeployZones( { self.CSARDeployZones } ) + CSARTask:SetDeployZones( self.CSARDeployZones or {} ) Mission:AddTask( CSARTask ) TaskReport:Add( CSARTask:GetName() ) end diff --git a/Moose Development/Moose/Tasking/Task_Manager.lua b/Moose Development/Moose/Tasking/Task_Manager.lua index 2bf10fea6..340fd8233 100644 --- a/Moose Development/Moose/Tasking/Task_Manager.lua +++ b/Moose Development/Moose/Tasking/Task_Manager.lua @@ -117,7 +117,7 @@ do -- TASK_MANAGER end function TASK_MANAGER:onafterStartTasks( From, Event, To ) - self:Report() + self:Manage() end function TASK_MANAGER:onafterManage( From, Event, To )