From a24717e30e5e25fd198e64fb798401f83d520a38 Mon Sep 17 00:00:00 2001 From: FlightControl Date: Tue, 14 Feb 2017 10:53:46 +0100 Subject: [PATCH] Fix for delayed __Event( DelaySeconds ) trigger DelaySeconds must ALWAYS be given! --- Moose Development/Moose/Core/Fsm.lua | 18 ++++++++++------- .../l10n/DEFAULT/Moose.lua | 20 +++++++++++-------- Moose Mission Setup/Moose.lua | 20 +++++++++++-------- 3 files changed, 35 insertions(+), 23 deletions(-) diff --git a/Moose Development/Moose/Core/Fsm.lua b/Moose Development/Moose/Core/Fsm.lua index b14634496..809dcfdb1 100644 --- a/Moose Development/Moose/Core/Fsm.lua +++ b/Moose Development/Moose/Core/Fsm.lua @@ -617,16 +617,20 @@ do -- FSM return function( self, DelaySeconds, ... ) self:T2( "Delayed Event: " .. EventName ) local CallID = 0 - if DelaySeconds < 0 then -- Only call the event ONCE! - DelaySeconds = math.abs( DelaySeconds ) - if not self._EventSchedules[EventName] then - CallID = self.CallScheduler:Schedule( self, self._handler, { EventName, ... }, DelaySeconds or 1 ) - self._EventSchedules[EventName] = CallID + if DelaySeconds ~= nil then + if DelaySeconds < 0 then -- Only call the event ONCE! + DelaySeconds = math.abs( DelaySeconds ) + if not self._EventSchedules[EventName] then + CallID = self.CallScheduler:Schedule( self, self._handler, { EventName, ... }, DelaySeconds or 1 ) + self._EventSchedules[EventName] = CallID + else + -- reschedule + end else - -- reschedule + CallID = self.CallScheduler:Schedule( self, self._handler, { EventName, ... }, DelaySeconds or 1 ) end else - CallID = self.CallScheduler:Schedule( self, self._handler, { EventName, ... }, DelaySeconds or 1 ) + error( "FSM: An asynchronous event trigger requires a DelaySeconds parameter!!! This can be positive or negative! Sorry, but will not process this." ) end self:T2( { CallID = CallID } ) end diff --git a/Moose Mission Setup/Moose Mission Update/l10n/DEFAULT/Moose.lua b/Moose Mission Setup/Moose Mission Update/l10n/DEFAULT/Moose.lua index e1a2550e0..03f3fe9d8 100644 --- a/Moose Mission Setup/Moose Mission Update/l10n/DEFAULT/Moose.lua +++ b/Moose Mission Setup/Moose Mission Update/l10n/DEFAULT/Moose.lua @@ -1,5 +1,5 @@ env.info( '*** MOOSE STATIC INCLUDE START *** ' ) -env.info( 'Moose Generation Timestamp: 20170208_1506' ) +env.info( 'Moose Generation Timestamp: 20170214_1049' ) local base = _G Include = {} @@ -11566,16 +11566,20 @@ do -- FSM return function( self, DelaySeconds, ... ) self:T2( "Delayed Event: " .. EventName ) local CallID = 0 - if DelaySeconds < 0 then -- Only call the event ONCE! - DelaySeconds = math.abs( DelaySeconds ) - if not self._EventSchedules[EventName] then - CallID = self.CallScheduler:Schedule( self, self._handler, { EventName, ... }, DelaySeconds or 1 ) - self._EventSchedules[EventName] = CallID + if DelaySeconds ~= nil then + if DelaySeconds < 0 then -- Only call the event ONCE! + DelaySeconds = math.abs( DelaySeconds ) + if not self._EventSchedules[EventName] then + CallID = self.CallScheduler:Schedule( self, self._handler, { EventName, ... }, DelaySeconds or 1 ) + self._EventSchedules[EventName] = CallID + else + -- reschedule + end else - -- reschedule + CallID = self.CallScheduler:Schedule( self, self._handler, { EventName, ... }, DelaySeconds or 1 ) end else - CallID = self.CallScheduler:Schedule( self, self._handler, { EventName, ... }, DelaySeconds or 1 ) + error( "FSM: An asynchronous event trigger requires a DelaySeconds parameter!!! This can be positive or negative! Sorry, but will not process this." ) end self:T2( { CallID = CallID } ) end diff --git a/Moose Mission Setup/Moose.lua b/Moose Mission Setup/Moose.lua index e1a2550e0..03f3fe9d8 100644 --- a/Moose Mission Setup/Moose.lua +++ b/Moose Mission Setup/Moose.lua @@ -1,5 +1,5 @@ env.info( '*** MOOSE STATIC INCLUDE START *** ' ) -env.info( 'Moose Generation Timestamp: 20170208_1506' ) +env.info( 'Moose Generation Timestamp: 20170214_1049' ) local base = _G Include = {} @@ -11566,16 +11566,20 @@ do -- FSM return function( self, DelaySeconds, ... ) self:T2( "Delayed Event: " .. EventName ) local CallID = 0 - if DelaySeconds < 0 then -- Only call the event ONCE! - DelaySeconds = math.abs( DelaySeconds ) - if not self._EventSchedules[EventName] then - CallID = self.CallScheduler:Schedule( self, self._handler, { EventName, ... }, DelaySeconds or 1 ) - self._EventSchedules[EventName] = CallID + if DelaySeconds ~= nil then + if DelaySeconds < 0 then -- Only call the event ONCE! + DelaySeconds = math.abs( DelaySeconds ) + if not self._EventSchedules[EventName] then + CallID = self.CallScheduler:Schedule( self, self._handler, { EventName, ... }, DelaySeconds or 1 ) + self._EventSchedules[EventName] = CallID + else + -- reschedule + end else - -- reschedule + CallID = self.CallScheduler:Schedule( self, self._handler, { EventName, ... }, DelaySeconds or 1 ) end else - CallID = self.CallScheduler:Schedule( self, self._handler, { EventName, ... }, DelaySeconds or 1 ) + error( "FSM: An asynchronous event trigger requires a DelaySeconds parameter!!! This can be positive or negative! Sorry, but will not process this." ) end self:T2( { CallID = CallID } ) end