mirror of
https://github.com/iTracerFacer/DCS_MissionDev.git
synced 2025-12-03 04:14:46 +00:00
123 lines
3.6 KiB
Lua
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 )
|
|
|