diff --git a/Moose Development/Moose/Tasking/Mission.lua b/Moose Development/Moose/Tasking/Mission.lua index 832dd9d6c..d50ec823b 100644 --- a/Moose Development/Moose/Tasking/Mission.lua +++ b/Moose Development/Moose/Tasking/Mission.lua @@ -882,7 +882,7 @@ function MISSION:ReportOverview( ReportGroup, TaskStatus ) -- Determine how many tasks are remaining. local TasksRemaining = 0 - for TaskID, Task in pairs( self:GetTasks() ) do + for TaskID, Task in UTILS.spairs( self:GetTasks(), function( t, a, b ) return t[a]:ReportOrder( ReportGroup ) < t[b]:ReportOrder( ReportGroup ) end ) do local Task = Task -- Tasking.Task#TASK if Task:Is( TaskStatus ) then Report:Add( " - " .. Task:ReportOverview( ReportGroup ) ) diff --git a/Moose Development/Moose/Tasking/Task_A2A.lua b/Moose Development/Moose/Tasking/Task_A2A.lua index 4d58b9432..8586eb6cf 100644 --- a/Moose Development/Moose/Tasking/Task_A2A.lua +++ b/Moose Development/Moose/Tasking/Task_A2A.lua @@ -330,14 +330,24 @@ do -- TASK_A2A_INTERCEPT local TargetCoordinate = TargetSetUnit:GetFirst():GetCoordinate() self:SetInfo( "Coordinates", TargetCoordinate, 10 ) - + self:SetInfo( "Threat", "[" .. string.rep( "■", TargetSetUnit:CalculateThreatLevelA2G() ) .. "]", 11 ) local DetectedItemsCount = TargetSetUnit:Count() local DetectedItemsTypes = TargetSetUnit:GetTypeNames() self:SetInfo( "Targets", string.format( "%d of %s", DetectedItemsCount, DetectedItemsTypes ), 0 ) return self - end + end + + --- @param #TASK_A2A_INTERCEPT self + -- @param Wrapper.Group#GROUP ReportGroup + function TASK_A2A_INTERCEPT:ReportOrder( ReportGroup ) + self:F( { TaskInfo = self.TaskInfo } ) + local Coordinate = self.TaskInfo.Coordinates.TaskInfoText + local Distance = ReportGroup:GetCoordinate():Get2DDistance( Coordinate ) + + return Distance + end --- @param #TASK_A2A_INTERCEPT self @@ -462,6 +472,13 @@ do -- TASK_A2A_SWEEP return self end + function TASK_A2A_SWEEP:ReportOrder( ReportGroup ) + local Coordinate = self.TaskInfo.Coordinates.TaskInfoText + local Distance = ReportGroup:GetCoordinate():Get2DDistance( Coordinate ) + + return Distance + end + --- @param #TASK_A2A_SWEEP self function TASK_A2A_SWEEP:onafterGoal( TaskUnit, From, Event, To ) local TargetSetUnit = self.TargetSetUnit -- Core.Set#SET_UNIT @@ -581,6 +598,13 @@ do -- TASK_A2A_ENGAGE return self end + function TASK_A2A_ENGAGE:ReportOrder( ReportGroup ) + local Coordinate = self.TaskInfo.Coordinates.TaskInfoText + local Distance = ReportGroup:GetCoordinate():Get2DDistance( Coordinate ) + + return Distance + end + --- @param #TASK_A2A_ENGAGE self function TASK_A2A_ENGAGE:onafterGoal( TaskUnit, From, Event, To ) local TargetSetUnit = self.TargetSetUnit -- Core.Set#SET_UNIT diff --git a/Moose Development/Moose/Tasking/Task_A2G.lua b/Moose Development/Moose/Tasking/Task_A2G.lua index ade6da690..d7514b466 100644 --- a/Moose Development/Moose/Tasking/Task_A2G.lua +++ b/Moose Development/Moose/Tasking/Task_A2G.lua @@ -329,7 +329,15 @@ do -- TASK_A2G_SEAD return self end - + + function TASK_A2G_SEAD:ReportOrder( ReportGroup ) + local Coordinate = self.TaskInfo.Coordinates.TaskInfoText + local Distance = ReportGroup:GetCoordinate():Get2DDistance( Coordinate ) + + return Distance + end + + --- @param #TASK_A2G_SEAD self function TASK_A2G_SEAD:onafterGoal( TaskUnit, From, Event, To ) local TargetSetUnit = self.TargetSetUnit -- Core.Set#SET_UNIT @@ -341,7 +349,7 @@ do -- TASK_A2G_SEAD self:__Goal( -10 ) end - --- Set a score when a target in scope of the A2A attack, has been destroyed . + --- Set a score when a target in scope of the A2G attack, has been destroyed . -- @param #TASK_A2G_SEAD self -- @param #string PlayerName The name of the player. -- @param #number Score The score in points to be granted when task process has been achieved. @@ -357,7 +365,7 @@ do -- TASK_A2G_SEAD return self end - --- Set a score when all the targets in scope of the A2A attack, have been destroyed. + --- Set a score when all the targets in scope of the A2G attack, have been destroyed. -- @param #TASK_A2G_SEAD self -- @param #string PlayerName The name of the player. -- @param #number Score The score in points. @@ -373,7 +381,7 @@ do -- TASK_A2G_SEAD return self end - --- Set a penalty when the A2A attack has failed. + --- Set a penalty when the A2G attack has failed. -- @param #TASK_A2G_SEAD self -- @param #string PlayerName The name of the player. -- @param #number Penalty The penalty in points, must be a negative value! @@ -443,6 +451,15 @@ do -- TASK_A2G_BAI return self end + + function TASK_A2G_BAI:ReportOrder( ReportGroup ) + local Coordinate = self.TaskInfo.Coordinates.TaskInfoText + local Distance = ReportGroup:GetCoordinate():Get2DDistance( Coordinate ) + + return Distance + end + + --- @param #TASK_A2G_BAI self function TASK_A2G_BAI:onafterGoal( TaskUnit, From, Event, To ) local TargetSetUnit = self.TargetSetUnit -- Core.Set#SET_UNIT @@ -454,7 +471,7 @@ do -- TASK_A2G_BAI self:__Goal( -10 ) end - --- Set a score when a target in scope of the A2A attack, has been destroyed . + --- Set a score when a target in scope of the A2G attack, has been destroyed . -- @param #TASK_A2G_BAI self -- @param #string PlayerName The name of the player. -- @param #number Score The score in points to be granted when task process has been achieved. @@ -470,7 +487,7 @@ do -- TASK_A2G_BAI return self end - --- Set a score when all the targets in scope of the A2A attack, have been destroyed. + --- Set a score when all the targets in scope of the A2G attack, have been destroyed. -- @param #TASK_A2G_BAI self -- @param #string PlayerName The name of the player. -- @param #number Score The score in points. @@ -486,7 +503,7 @@ do -- TASK_A2G_BAI return self end - --- Set a penalty when the A2A attack has failed. + --- Set a penalty when the A2G attack has failed. -- @param #TASK_A2G_BAI self -- @param #string PlayerName The name of the player. -- @param #number Penalty The penalty in points, must be a negative value! @@ -556,6 +573,14 @@ do -- TASK_A2G_CAS return self end + function TASK_A2G_CAS:ReportOrder( ReportGroup ) + local Coordinate = self.TaskInfo.Coordinates.TaskInfoText + local Distance = ReportGroup:GetCoordinate():Get2DDistance( Coordinate ) + + return Distance + end + + --- @param #TASK_A2G_CAS self function TASK_A2G_CAS:onafterGoal( TaskUnit, From, Event, To ) local TargetSetUnit = self.TargetSetUnit -- Core.Set#SET_UNIT @@ -567,7 +592,7 @@ do -- TASK_A2G_CAS self:__Goal( -10 ) end - --- Set a score when a target in scope of the A2A attack, has been destroyed . + --- Set a score when a target in scope of the A2G attack, has been destroyed . -- @param #TASK_A2G_CAS self -- @param #string PlayerName The name of the player. -- @param #number Score The score in points to be granted when task process has been achieved. @@ -583,7 +608,7 @@ do -- TASK_A2G_CAS return self end - --- Set a score when all the targets in scope of the A2A attack, have been destroyed. + --- Set a score when all the targets in scope of the A2G attack, have been destroyed. -- @param #TASK_A2G_CAS self -- @param #string PlayerName The name of the player. -- @param #number Score The score in points. @@ -599,7 +624,7 @@ do -- TASK_A2G_CAS return self end - --- Set a penalty when the A2A attack has failed. + --- Set a penalty when the A2G attack has failed. -- @param #TASK_A2G_CAS self -- @param #string PlayerName The name of the player. -- @param #number Penalty The penalty in points, must be a negative value! diff --git a/Moose Development/Moose/Tasking/Task_CARGO.lua b/Moose Development/Moose/Tasking/Task_CARGO.lua index 189eb5353..cefbcbbef 100644 --- a/Moose Development/Moose/Tasking/Task_CARGO.lua +++ b/Moose Development/Moose/Tasking/Task_CARGO.lua @@ -251,7 +251,9 @@ do -- TASK_CARGO end end if NotInDeployZones then - MENU_GROUP_COMMAND:New( TaskUnit:GetGroup(), "Board cargo " .. Cargo.Name, TaskUnit.Menu, self.MenuBoardCargo, self, Cargo ):SetTime(MenuTime) + if not TaskUnit:InAir() then + MENU_GROUP_COMMAND:New( TaskUnit:GetGroup(), "Board cargo " .. Cargo.Name, TaskUnit.Menu, self.MenuBoardCargo, self, Cargo ):SetTime(MenuTime) + end end else MENU_GROUP_COMMAND:New( TaskUnit:GetGroup(), "Route to Pickup cargo " .. Cargo.Name, TaskUnit.Menu, self.MenuRouteToPickup, self, Cargo ):SetTime(MenuTime) @@ -260,9 +262,9 @@ do -- TASK_CARGO end if Cargo:IsLoaded() then - - MENU_GROUP_COMMAND:New( TaskUnit:GetGroup(), "Unboard cargo " .. Cargo.Name, TaskUnit.Menu, self.MenuUnBoardCargo, self, Cargo ):SetTime(MenuTime) - + if not TaskUnit:InAir() then + MENU_GROUP_COMMAND:New( TaskUnit:GetGroup(), "Unboard cargo " .. Cargo.Name, TaskUnit.Menu, self.MenuUnBoardCargo, self, Cargo ):SetTime(MenuTime) + end -- Deployzones are optional zones that can be selected to request routing information. for DeployZoneName, DeployZone in pairs( Task.DeployZones ) do if not Cargo:IsInZone( DeployZone ) then @@ -607,6 +609,7 @@ do -- TASK_CARGO end + --- Set a limit on the amount of cargo items that can be loaded into the Carriers. -- @param #TASK_CARGO self -- @param CargoLimit Specifies a number of cargo items that can be loaded in the helicopter. @@ -922,6 +925,12 @@ do -- TASK_CARGO_TRANSPORT return self end + + function TASK_CARGO_TRANSPORT:ReportOrder( ReportGroup ) + + return true + end + --- -- @param #TASK_CARGO_TRANSPORT self