2024-11-12 14:18:28 -06:00

123 lines
3.6 KiB
Lua

--- Transition Explanation
--
-- ===
--
-- Name: Transition Explanation
-- Author: FlightControl
-- Date Created: 05 Jan 2017
--
-- # Situation:
--
-- Create a simple FSM.
-- Add 2 transitions that will switch state from "Green" to "Red" upon event "Switch".
--
-- # Test cases:
--
-- # Status: TESTED 05 Jan 2017
local FsmDemo = FSM:New() -- #FsmDemo
local FsmUnit = UNIT:FindByName( "FlareUnit" )
FsmDemo:SetStartState( "Green" )
do FsmDemo:AddTransition( "Green", "Switch", "Red" ) -- FSM Transition for type #FsmDemo.
--- OnLeave State Transition for Green.
-- @function [parent=#FsmDemo] OnLeaveGreen
-- @param #FsmDemo self
-- @param #string From The From State string.
-- @param #string Event The Event string.
-- @param #string To The To State string.
-- @return #boolean Return false to cancel Transition.
--- OnEnter State Transition for Red.
-- @function [parent=#FsmDemo] OnEnterRed
-- @param #FsmDemo self
-- @param #string From The From State string.
-- @param #string Event The Event string.
-- @param #string To The To State string.
--- OnBefore State Transition for Switch.
-- @function [parent=#FsmDemo] OnBeforeSwitch
-- @param #FsmDemo self
-- @param #string From The From State string.
-- @param #string Event The Event string.
-- @param #string To The To State string.
-- @return #boolean Return false to cancel Transition.
--- OnAfter State Transition for Switch.
-- @function [parent=#FsmDemo] OnAfterSwitch
-- @param #FsmDemo self
-- @param #string From The From State string.
-- @param #string Event The Event string.
-- @param #string To The To State string.
--- Embedded Event Trigger for Switch.
-- @function [parent=#FsmDemo] Switch
-- @param #FsmDemo self
--- Delayed Event Trigger for Switch
-- @function [parent=#FsmDemo] __Switch
-- @param #FsmDemo self
-- @param #number Delay The delay in seconds.
end -- FsmDemo
do FsmDemo:AddTransition( "Red", "Switch", "Green" ) -- FSM Transition for type #FsmDemo.
--- OnLeave State Transition for Red.
-- @function [parent=#FsmDemo] OnLeaveRed
-- @param #FsmDemo self
-- @param #string From The From State string.
-- @param #string Event The Event string.
-- @param #string To The To State string.
-- @return #boolean Return false to cancel Transition.
--- OnEnter State Transition for Green.
-- @function [parent=#FsmDemo] OnEnterGreen
-- @param #FsmDemo self
-- @param #string From The From State string.
-- @param #string Event The Event string.
-- @param #string To The To State string.
--- OnBefore State Transition for Switch.
-- @function [parent=#FsmDemo] OnBeforeSwitch
-- @param #FsmDemo self
-- @param #string From The From State string.
-- @param #string Event The Event string.
-- @param #string To The To State string.
-- @return #boolean Return false to cancel Transition.
--- OnAfter State Transition for Switch.
-- @function [parent=#FsmDemo] OnAfterSwitch
-- @param #FsmDemo self
-- @param #string From The From State string.
-- @param #string Event The Event string.
-- @param #string To The To State string.
--- Embedded Event Trigger for Switch.
-- @function [parent=#FsmDemo] Switch
-- @param #FsmDemo self
--- Delayed Event Trigger for Switch
-- @function [parent=#FsmDemo] __Switch
-- @param #FsmDemo self
-- @param #number Delay The delay in seconds.
end -- FsmDemo
function FsmDemo:OnAfterSwitch( From, Event, To, FsmUnit )
self:E( { From, Event, To, FsmUnit } )
if From == "Green" then
FsmUnit:Flare(FLARECOLOR.Green)
else
if From == "Red" then
FsmUnit:Flare(FLARECOLOR.Red)
end
end
FsmDemo:__Switch( 5, FsmUnit )
end
FsmDemo:__Switch( 5, FsmUnit )