diff --git a/game/builtin/fsm.go b/game/fms/fsm.go similarity index 98% rename from game/builtin/fsm.go rename to game/fms/fsm.go index 47a70f3..f8daf66 100644 --- a/game/builtin/fsm.go +++ b/game/fms/fsm.go @@ -1,4 +1,4 @@ -package builtin +package fms import ( "fmt" diff --git a/game/builtin/fsm_state.go b/game/fms/fsm_state.go similarity index 98% rename from game/builtin/fsm_state.go rename to game/fms/fsm_state.go index 34565b9..726b7f1 100644 --- a/game/builtin/fsm_state.go +++ b/game/fms/fsm_state.go @@ -1,4 +1,4 @@ -package builtin +package fms import "github.com/kercylan98/minotaur/game" diff --git a/game/fsm.go b/game/fsm.go deleted file mode 100644 index ddacc01..0000000 --- a/game/fsm.go +++ /dev/null @@ -1,26 +0,0 @@ -package game - -// FSM 有限状态机接口定义 -// - 有限状态机(Finite State Machine,简称FSM),它将系统看做一系列状态,而每个状态都有其对应的行为和转换条件 -// - 在游戏中,可以将各种游戏对象和游戏系统抽象为状态和转移,使用有限状态机来描述它们之间的关系,来实现游戏的逻辑和行为 -// -// 使用场景 -// - 角色行为控制:游戏角色的行为通常会根据不同状态来变化,例如走、跑、跳、攻击等。通过使用有限状态机来描述角色的状态和状态之间的转移,可以实现角色行为的流畅切换和控制 -// - NPC行为控制:游戏中的 NPC 通常需要有一定的 AI 行为,例如巡逻、追击、攻击等。通过使用有限状态机来描述 NPC 的行为状态和转移条件,可以实现 NPC 行为的智能控制 -// - 游戏流程控制:游戏的各个流程可以看做状态,例如登录、主界面、游戏场景等。通过使用有限状态机来描述游戏的流程状态和转移条件,可以实现游戏流程的控制和管理 -// -// 在服务端中使用 FSM 可以使游戏状态管理更加清晰和简单,清晰各状态职责 -// - 内置实现:builtin.FSM -// - 构建函数:builtin.NewFSM -type FSM[State comparable, Data comparable] interface { - // Update 执行当前状态行为 - Update() - // Register 注册一个状态到当前状态机中 - Register(state FSMState[State, Data]) - // Unregister 取消一个状态的注册 - Unregister(state State) - // HasState 检查是否某状态已注册 - HasState(state State) bool - // Change 改变当前状态为输入的状态 - Change(state State) -} diff --git a/game/fsm_state.go b/game/fsm_state.go deleted file mode 100644 index 9bc2c73..0000000 --- a/game/fsm_state.go +++ /dev/null @@ -1,24 +0,0 @@ -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) -}