Documentation ¶
Index ¶
- type State
- type StateBlend
- type StateInstance
- type StateMachine
- func (sm *StateMachine[Subject, Data, Input]) AddState(id int, state State[Data, Input])
- func (sm *StateMachine[Subject, Data, Input]) AddTransition(transition StateTransitions[Input])
- func (sm *StateMachine[Subject, Data, Input]) For(subject *Subject, input *Input, initialStates []int) *StateMachineInstance[Subject, Data, Input]
- type StateMachineInstance
- type StateMachineLogic
- type StateMachineState
- type StateTransitions
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type State ¶
type State[Data any, Input any] func(input *Input) StateBlend[Data]
type StateBlend ¶
type StateInstance ¶
type StateInstance[Data any, Input any] struct { StateBlend StateBlend[Data] State *StateMachineState[Data, Input] }
type StateMachine ¶
type StateMachine[Subject any, Data any, Input any] struct { Logic StateMachineLogic[Subject, Data, Input] States map[int]StateMachineState[Data, Input] Transitions []*StateTransitions[Input] }
func NewStateMachine ¶
func NewStateMachine[Subject any, Data any, Input any](logic StateMachineLogic[Subject, Data, Input]) *StateMachine[Subject, Data, Input]
func (*StateMachine[Subject, Data, Input]) AddState ¶
func (sm *StateMachine[Subject, Data, Input]) AddState(id int, state State[Data, Input])
func (*StateMachine[Subject, Data, Input]) AddTransition ¶
func (sm *StateMachine[Subject, Data, Input]) AddTransition(transition StateTransitions[Input])
func (*StateMachine[Subject, Data, Input]) For ¶
func (sm *StateMachine[Subject, Data, Input]) For(subject *Subject, input *Input, initialStates []int) *StateMachineInstance[Subject, Data, Input]
type StateMachineInstance ¶
type StateMachineInstance[Subject any, Data any, Input any] struct { Machine *StateMachine[Subject, Data, Input] Subject *Subject Input *Input States map[int]StateInstance[Data, Input] }
func (StateMachineInstance[Subject, Data, Input]) Apply ¶
func (inst StateMachineInstance[Subject, Data, Input]) Apply()
func (StateMachineInstance[Subject, Data, Input]) GetActive ¶
func (inst StateMachineInstance[Subject, Data, Input]) GetActive() []StateBlend[Data]
func (StateMachineInstance[Subject, Data, Input]) Update ¶
func (inst StateMachineInstance[Subject, Data, Input]) Update()
type StateMachineLogic ¶
type StateMachineLogic[Subject any, Data any, Input any] struct { IsDone func(subject *Subject, state StateBlend[Data]) bool Start func(subject *Subject, state StateBlend[Data]) Apply func(subject *Subject, blends []StateBlend[Data]) bool }
type StateMachineState ¶
type StateMachineState[Data any, Input any] struct { ID int State State[Data, Input] Transitions []*StateTransitions[Input] }
Click to show internal directories.
Click to hide internal directories.