vRp.CD2g_test/utils/fsm
kercylan98 22449ff5c3 docs: 优化 README.md 可读性 2024-01-15 17:27:02 +08:00
..
README.md docs: 优化 README.md 可读性 2024-01-15 17:27:02 +08:00
fsm.go test: collection 包完善测试用例 2024-01-11 18:46:10 +08:00
options.go refactor: 将 fsm 包从 game 包中移动至 utils 包 2023-12-22 11:07:28 +08:00

README.md

Fsm

Go doc

暂无介绍...

目录导航

列出了该 package 下所有的函数及类型定义,可通过目录导航进行快捷跳转 ❤️

展开 / 折叠目录导航

包级函数定义

函数名称 描述
NewFSM 创建一个新的状态机
WithEnterBeforeEvent 设置状态进入前的回调
WithEnterAfterEvent 设置状态进入后的回调
WithUpdateEvent 设置状态内刷新的回调
WithExitBeforeEvent 设置状态退出前的回调
WithExitAfterEvent 设置状态退出后的回调

类型定义

类型 名称 描述
STRUCT FSM 状态机
STRUCT Option 暂无描述...

详情信息

func NewFSM[State comparable, Data any](data Data) *FSM[State, Data]

创建一个新的状态机


func WithEnterBeforeEvent[State comparable, Data any](fn func (state *FSM[State, Data])) Option[State, Data]

设置状态进入前的回调

  • 在首次设置状态时,状态机本身的当前状态为零值状态

func WithEnterAfterEvent[State comparable, Data any](fn func (state *FSM[State, Data])) Option[State, Data]

设置状态进入后的回调


func WithUpdateEvent[State comparable, Data any](fn func (state *FSM[State, Data])) Option[State, Data]

设置状态内刷新的回调


func WithExitBeforeEvent[State comparable, Data any](fn func (state *FSM[State, Data])) Option[State, Data]

设置状态退出前的回调

  • 该阶段状态机的状态为退出前的状态,而非新的状态

func WithExitAfterEvent[State comparable, Data any](fn func (state *FSM[State, Data])) Option[State, Data]

设置状态退出后的回调

  • 该阶段状态机的状态为新的状态,而非退出前的状态

FSM STRUCT

状态机

type FSM[State comparable, Data any] struct {
	prev                    *State
	current                 *State
	data                    Data
	states                  map[State]struct{}
	enterBeforeEventHandles map[State][]func(state *FSM[State, Data])
	enterAfterEventHandles  map[State][]func(state *FSM[State, Data])
	updateEventHandles      map[State][]func(state *FSM[State, Data])
	exitBeforeEventHandles  map[State][]func(state *FSM[State, Data])
	exitAfterEventHandles   map[State][]func(state *FSM[State, Data])
}

func (*FSM) Update()

触发当前状态


func (*FSM) Register(state State, options ...Option[State, Data])

注册状态


func (*FSM) Unregister(state State)

反注册状态


func (*FSM) HasState(state State) bool

检查状态机是否存在特定状态


func (*FSM) Change(state State)

改变状态机状态到新的状态


func (*FSM) Current() (state State)

获取当前状态


func (*FSM) GetData() Data

获取状态机数据


func (*FSM) IsZero() bool

检查状态机是否无状态


func (*FSM) PrevIsZero() bool

检查状态机上一个状态是否无状态


Option STRUCT

type Option[State comparable, Data any] func(fsm *FSM[State, Data], state State)