From 4edc8363e1655ba6783da380659953b0cbfd5792 Mon Sep 17 00:00:00 2001 From: FlightControl_Master Date: Mon, 18 Sep 2017 06:10:45 +0200 Subject: [PATCH] Urgent fixes * DESIGNATE: Messages not appearing correctly and crashing the logic is fixed. (due to a stupid typo). * TASK_A2G: Tasking is fixed. Status menus are now displayed properly. Also when the task is planned. * MENU_COMMAND: I found now why DCS is displayer "error in error handler" sometimes when a menu was selected. The error handler is DCS is bugged, so made my own one. --- Moose Development/Moose/Core/Menu.lua | 15 ++++++++++++++- Moose Development/Moose/Tasking/Mission.lua | 2 ++ Moose Development/Moose/Tasking/Task_A2G.lua | 16 ++++++++++------ .../Moose/Tasking/Task_A2G_Dispatcher.lua | 1 + Moose Development/Moose/Wrapper/Positionable.lua | 2 +- 5 files changed, 28 insertions(+), 8 deletions(-) diff --git a/Moose Development/Moose/Core/Menu.lua b/Moose Development/Moose/Core/Menu.lua index 20705583f..4faaa5507 100644 --- a/Moose Development/Moose/Core/Menu.lua +++ b/Moose Development/Moose/Core/Menu.lua @@ -139,11 +139,24 @@ do -- MENU_COMMAND_BASE function MENU_COMMAND_BASE:New( MenuText, ParentMenu, CommandMenuFunction, CommandMenuArguments ) local self = BASE:Inherit( self, MENU_BASE:New( MenuText, ParentMenu ) ) -- #MENU_COMMAND_BASE + + -- When a menu function goes into error, DCS displays an obscure menu message. + -- This error handler catches the menu error and displays the full call stack. + local ErrorHandler = function( errmsg ) + env.info( "MOOSE error in MENU COMMAND function: " .. errmsg ) + if debug ~= nil then + env.info( debug.traceback() ) + end + return errmsg + end self:SetCommandMenuFunction( CommandMenuFunction ) self:SetCommandMenuArguments( CommandMenuArguments ) self.MenuCallHandler = function() - self.CommandMenuFunction( unpack( self.CommandMenuArguments ) ) + local function MenuFunction() + return self.CommandMenuFunction( unpack( self.CommandMenuArguments ) ) + end + local Status, Result = xpcall( MenuFunction, ErrorHandler ) end return self diff --git a/Moose Development/Moose/Tasking/Mission.lua b/Moose Development/Moose/Tasking/Mission.lua index 57b52983e..86117230c 100644 --- a/Moose Development/Moose/Tasking/Mission.lua +++ b/Moose Development/Moose/Tasking/Mission.lua @@ -888,6 +888,8 @@ end -- @return #string function MISSION:ReportOverview( ReportGroup, TaskStatus ) + self:F( { TaskStatus = TaskStatus } ) + local Report = REPORT:New() -- List the name of the mission. diff --git a/Moose Development/Moose/Tasking/Task_A2G.lua b/Moose Development/Moose/Tasking/Task_A2G.lua index 5b00b1b0d..cc4a21797 100644 --- a/Moose Development/Moose/Tasking/Task_A2G.lua +++ b/Moose Development/Moose/Tasking/Task_A2G.lua @@ -366,7 +366,8 @@ do -- TASK_A2G_SEAD end function TASK_A2G_SEAD:ReportOrder( ReportGroup ) - local Coordinate = self.TaskInfo.Coordinates.TaskInfoText + local Coordinate = self:GetInfo( "Coordinates" ) + --local Coordinate = self.TaskInfo.Coordinates.TaskInfoText local Distance = ReportGroup:GetCoordinate():Get2DDistance( Coordinate ) return Distance @@ -515,7 +516,8 @@ do -- TASK_A2G_BAI function TASK_A2G_BAI:ReportOrder( ReportGroup ) - local Coordinate = self.TaskInfo.Coordinates.TaskInfoText + local Coordinate = self:GetInfo( "Coordinates" ) + --local Coordinate = self.TaskInfo.Coordinates.TaskInfoText local Distance = ReportGroup:GetCoordinate():Get2DDistance( Coordinate ) return Distance @@ -630,9 +632,9 @@ do -- TASK_A2G_CAS function TASK_A2G_CAS:UpdateTaskInfo() - local TargetCoordinate = self.Detection and self.Detection:GetDetectedItemCoordinate( self.DetectedItemIndex ) or self.TargetSetUnit:GetFirst():GetCoordinate() + local TargetCoordinate = ( self.Detection and self.Detection:GetDetectedItemCoordinate( self.DetectedItemIndex ) ) or self.TargetSetUnit:GetFirst():GetCoordinate() self:SetInfo( "Coordinates", TargetCoordinate, 0 ) - + local ThreatLevel, ThreatText if self.Detection then ThreatLevel, ThreatText = self.Detection:GetDetectedItemThreatLevel( self.DetectedItemIndex ) @@ -661,8 +663,10 @@ do -- TASK_A2G_CAS end - function TASK_A2G_CAS:ReportOrder( ReportGroup ) - local Coordinate = self.TaskInfo.Coordinates.TaskInfoText + --- @param #TASK_A2G_CAS self + function TASK_A2G_CAS:ReportOrder( ReportGroup ) + + local Coordinate = self:GetInfo( "Coordinates" ) local Distance = ReportGroup:GetCoordinate():Get2DDistance( Coordinate ) return Distance diff --git a/Moose Development/Moose/Tasking/Task_A2G_Dispatcher.lua b/Moose Development/Moose/Tasking/Task_A2G_Dispatcher.lua index 8857bb4ce..7613d7cad 100644 --- a/Moose Development/Moose/Tasking/Task_A2G_Dispatcher.lua +++ b/Moose Development/Moose/Tasking/Task_A2G_Dispatcher.lua @@ -372,6 +372,7 @@ do -- TASK_A2G_DISPATCHER self.Tasks[TaskIndex] = Task Task:SetTargetZone( DetectedZone ) Task:SetDispatcher( self ) + Task:UpdateTaskInfo() Mission:AddTask( Task ) TaskReport:Add( Task:GetName() ) diff --git a/Moose Development/Moose/Wrapper/Positionable.lua b/Moose Development/Moose/Wrapper/Positionable.lua index ec24b47ed..592508733 100644 --- a/Moose Development/Moose/Wrapper/Positionable.lua +++ b/Moose Development/Moose/Wrapper/Positionable.lua @@ -635,7 +635,7 @@ function POSITIONABLE:MessageToSetGroup( Message, Duration, MessageSetGroup, Nam if DCSObject:isExist() then MessageSetGroup:ForEachGroup( function( MessageGroup ) - self:GetMessageType( Message, Duration, Name ):ToGroup( MessageGroup ) + self:GetMessage( Message, Duration, Name ):ToGroup( MessageGroup ) end ) end