fix: 状态机 State 名称修复

This commit is contained in:
kercylan98 2023-07-29 18:09:06 +08:00
parent 87c66954a3
commit de76411726
1 changed files with 11 additions and 11 deletions

View File

@ -5,44 +5,44 @@ import (
) )
// NewFSM 创建一个新的状态机 // NewFSM 创建一个新的状态机
func NewFSM[State comparable, Data any](data Data) *FSM[State, Data] { func NewFSM[S comparable, Data any](data Data) *FSM[S, Data] {
return &FSM[State, Data]{ return &FSM[S, Data]{
states: map[State]*State[State, Data]{}, states: map[S]*State[S, Data]{},
data: data, data: data,
} }
} }
// FSM 状态机 // FSM 状态机
type FSM[State comparable, Data any] struct { type FSM[S comparable, Data any] struct {
current State current S
data Data data Data
states map[State]*State[State, Data] states map[S]*State[S, Data]
} }
// Update 触发当前状态 // Update 触发当前状态
func (slf *FSM[State, Data]) Update() { func (slf *FSM[S, Data]) Update() {
state := slf.states[slf.current] state := slf.states[slf.current]
state.Update(slf.data) state.Update(slf.data)
} }
// Register 注册状态 // Register 注册状态
func (slf *FSM[State, Data]) Register(state *State[State, Data]) { func (slf *FSM[S, Data]) Register(state *State[S, Data]) {
slf.states[state.GetState()] = state slf.states[state.GetState()] = state
} }
// Unregister 反注册状态 // Unregister 反注册状态
func (slf *FSM[State, Data]) Unregister(state State) { func (slf *FSM[S, Data]) Unregister(state S) {
delete(slf.states, state) delete(slf.states, state)
} }
// HasState 检查状态机是否存在特定状态 // HasState 检查状态机是否存在特定状态
func (slf *FSM[State, Data]) HasState(state State) bool { func (slf *FSM[S, Data]) HasState(state S) bool {
_, has := slf.states[state] _, has := slf.states[state]
return has return has
} }
// Change 改变状态机状态到新的状态 // Change 改变状态机状态到新的状态
func (slf *FSM[State, Data]) Change(state State) { func (slf *FSM[S, Data]) Change(state S) {
current := slf.states[slf.current] current := slf.states[slf.current]
current.Exit(slf.data) current.Exit(slf.data)