25 lines
698 B
Go
25 lines
698 B
Go
package game
|
|
|
|
type (
|
|
FSMStateEnterHandle[Data any] func(data Data)
|
|
FSMStateUpdateHandle[Data any] func(data Data)
|
|
FSMStateExitHandle[Data any] func(data Data)
|
|
)
|
|
|
|
// FSMState 有限状态机状态接口定义
|
|
// - 描述了 FSM 中的状态行为
|
|
//
|
|
// 需要一个可比较的状态类型及相应的数据类型,数据类型在无需使用时支持传入 nil
|
|
// - 内置实现:builtin.FSMState
|
|
// - 构建函数:builtin.NewFSMState
|
|
type FSMState[State comparable, Data any] interface {
|
|
// GetState 获取当前状态
|
|
GetState() State
|
|
// Enter 状态开始行为
|
|
Enter(data Data)
|
|
// Update 当前状态行为
|
|
Update(data Data)
|
|
// Exit 状态退出行为
|
|
Exit(data Data)
|
|
}
|