Module StateMachine

This module contains the STATEMACHINE class.

This development is based on a state machine implementation made by Conroy Kyle. The state machine can be found here: https://github.com/kyleconroy/lua-state-machine

I've taken the development and enhanced it to make the state machine hierarchical... It is a fantastic development, this module.


1) Workflow#STATEMACHINE class, extends Base#BASE

1.1) Add or remove objects from the STATEMACHINE

Global(s)

STATEMACHINE
STATEMACHINE_CONTROLLABLE
STATEMACHINE_PROCESS
STATEMACHINE_SET
STATEMACHINE_TASK

Type STATEMACHINE

STATEMACHINE.ClassName
STATEMACHINE:LoadCallBacks(CallBackTable)
STATEMACHINE:New(options)

Creates a new STATEMACHINE object.

STATEMACHINE:_add_to_map(map, event)
STATEMACHINE:_call_handler(handler, params)
STATEMACHINE:_create_transition(EventName)
STATEMACHINE:_delayed_transition(EventName)
STATEMACHINE:_gosub(parentstate, parentevent)
STATEMACHINE:_handler(EventName, ...)
STATEMACHINE:_isendstate(state)
STATEMACHINE:_submap(subs, sub, name)
STATEMACHINE:can(e)
STATEMACHINE:cannot(e)
STATEMACHINE:is(state)
STATEMACHINE:todot(filename)

Type STATEMACHINE_CONTROLLABLE

STATEMACHINE_CONTROLLABLE.ClassName
STATEMACHINE_CONTROLLABLE.Controllable
STATEMACHINE_CONTROLLABLE:GetControllable()

Gets the CONTROLLABLE object that the STATEMACHINE_CONTROLLABLE governs.

STATEMACHINE_CONTROLLABLE:New(FSMT, Controllable)

Creates a new STATEMACHINE_CONTROLLABLE object.

STATEMACHINE_CONTROLLABLE:SetControllable(Controllable, FSMControllable)

Sets the CONTROLLABLE object that the STATEMACHINE_CONTROLLABLE governs.

STATEMACHINE_CONTROLLABLE:_call_handler(handler, params)

Type STATEMACHINE_PROCESS

STATEMACHINE_PROCESS.ClassName
STATEMACHINE_PROCESS:New(FSMT)

Creates a new STATEMACHINE_PROCESS object.

STATEMACHINE_PROCESS.Process
STATEMACHINE_PROCESS:_call_handler(handler, params)

Type STATEMACHINE_SET

STATEMACHINE_SET.ClassName
STATEMACHINE_SET:Get()

Gets the SETBASE object that the STATEMACHINESET governs.

STATEMACHINE_SET:New(FSMT, Set_SET_BASE, FSMSet)

Creates a new STATEMACHINE_SET object.

STATEMACHINE_SET.Set
STATEMACHINE_SET:_call_handler(handler, params)

Type STATEMACHINE_TASK

STATEMACHINE_TASK.ClassName
STATEMACHINE_TASK:New(FSMT, Task, TaskUnit)

Creates a new STATEMACHINE_TASK object.

STATEMACHINE_TASK.Task
STATEMACHINE_TASK:_call_handler(handler, params)

Global(s)

#STATEMACHINE STATEMACHINE
#STATEMACHINE_CONTROLLABLE STATEMACHINE_CONTROLLABLE
#STATEMACHINE_PROCESS STATEMACHINE_PROCESS
#STATEMACHINE_SET STATEMACHINE_SET
#STATEMACHINE_TASK STATEMACHINE_TASK

Type StateMachine

Type STATEMACHINE

STATEMACHINE class

Field(s)

#string STATEMACHINE.ClassName
STATEMACHINE:LoadCallBacks(CallBackTable)

Parameter

  • CallBackTable :

STATEMACHINE:New(options)

Creates a new STATEMACHINE object.

Parameter

  • options :

Return value

#STATEMACHINE:

STATEMACHINE:_add_to_map(map, event)

Parameters

  • map :

  • event :

STATEMACHINE:_call_handler(handler, params)

Parameters

  • handler :

  • params :

STATEMACHINE:_create_transition(EventName)

Parameter

  • EventName :

STATEMACHINE:_delayed_transition(EventName)

Parameter

  • EventName :

STATEMACHINE:_gosub(parentstate, parentevent)

Parameters

  • parentstate :

  • parentevent :

STATEMACHINE:_handler(EventName, ...)

Parameters

  • EventName :

  • ... :

STATEMACHINE:_isendstate(state)

Parameter

  • state :

STATEMACHINE:_submap(subs, sub, name)

Parameters

  • subs :

  • sub :

  • name :

STATEMACHINE:can(e)

Parameter

  • e :

STATEMACHINE:cannot(e)

Parameter

  • e :

STATEMACHINE:is(state)

Parameter

  • state :

STATEMACHINE:todot(filename)

Parameter

  • filename :

Type STATEMACHINE_CONTROLLABLE

STATEMACHINE_CONTROLLABLE class

Field(s)

#string STATEMACHINE_CONTROLLABLE.ClassName
Controllable#CONTROLLABLE STATEMACHINE_CONTROLLABLE.Controllable
STATEMACHINE_CONTROLLABLE:GetControllable()

Gets the CONTROLLABLE object that the STATEMACHINE_CONTROLLABLE governs.

Return value

Controllable#CONTROLLABLE:

STATEMACHINE_CONTROLLABLE:New(FSMT, Controllable)

Creates a new STATEMACHINE_CONTROLLABLE object.

Parameters

  • #table FSMT : Finite State Machine Table

  • Controllable#CONTROLLABLE Controllable : (optional) The CONTROLLABLE object that the STATEMACHINE_CONTROLLABLE governs.

Return value

#STATEMACHINE_CONTROLLABLE:

STATEMACHINE_CONTROLLABLE:SetControllable(Controllable, FSMControllable)

Sets the CONTROLLABLE object that the STATEMACHINE_CONTROLLABLE governs.

Parameters

Return value

#STATEMACHINE_CONTROLLABLE:

STATEMACHINE_CONTROLLABLE:_call_handler(handler, params)

Parameters

  • handler :

  • params :

Type STATEMACHINE_PROCESS

STATEMACHINE_PROCESS class

Field(s)

#string STATEMACHINE_PROCESS.ClassName
STATEMACHINE_PROCESS:New(FSMT)

Creates a new STATEMACHINE_PROCESS object.

Parameter

  • FSMT :

Return value

#STATEMACHINE_PROCESS:

Process#PROCESS STATEMACHINE_PROCESS.Process
STATEMACHINE_PROCESS:_call_handler(handler, params)

Parameters

  • handler :

  • params :

Type STATEMACHINE_SET

STATEMACHINE_SET class

Field(s)

#string STATEMACHINE_SET.ClassName
STATEMACHINE_SET:Get()

Gets the SETBASE object that the STATEMACHINESET governs.

Return value

Set#SET_BASE:

STATEMACHINE_SET:New(FSMT, Set_SET_BASE, FSMSet)

Creates a new STATEMACHINE_SET object.

Parameters

  • #table FSMT : Finite State Machine Table

  • SetSETBASE : FSMSet (optional) The Set object that the STATEMACHINE_SET governs.

  • FSMSet :

Return value

#STATEMACHINE_SET:

Set#SET_BASE STATEMACHINE_SET.Set
STATEMACHINE_SET:_call_handler(handler, params)

Parameters

  • handler :

  • params :

Type STATEMACHINE_TASK

STATEMACHINE_TASK class

Field(s)

#string STATEMACHINE_TASK.ClassName
STATEMACHINE_TASK:New(FSMT, Task, TaskUnit)

Creates a new STATEMACHINE_TASK object.

Parameters

Return value

#STATEMACHINE_TASK:

Task#TASK_BASE STATEMACHINE_TASK.Task
STATEMACHINE_TASK:_call_handler(handler, params)

Parameters

  • handler :

  • params :