fix: fms 包迁移问题处理

This commit is contained in:
kercylan98 2023-07-27 17:40:09 +08:00
parent 688a86bf3c
commit 996f5af8bd
2 changed files with 12 additions and 9 deletions

View File

@ -2,12 +2,11 @@ package fms
import ( import (
"fmt" "fmt"
"github.com/kercylan98/minotaur/game"
) )
func NewFSM[State comparable, Data any](data Data) *FSM[State, Data] { func NewFSM[State comparable, Data any](data Data) *FSM[State, Data] {
return &FSM[State, Data]{ return &FSM[State, Data]{
states: map[State]game.FSMState[State, Data]{}, states: map[State]*FSMState[State, Data]{},
data: data, data: data,
} }
} }
@ -15,7 +14,7 @@ func NewFSM[State comparable, Data any](data Data) *FSM[State, Data] {
type FSM[State comparable, Data any] struct { type FSM[State comparable, Data any] struct {
current State current State
data Data data Data
states map[State]game.FSMState[State, Data] states map[State]*FSMState[State, Data]
} }
func (slf *FSM[State, Data]) Update() { func (slf *FSM[State, Data]) Update() {
@ -23,7 +22,7 @@ func (slf *FSM[State, Data]) Update() {
state.Update(slf.data) state.Update(slf.data)
} }
func (slf *FSM[State, Data]) Register(state game.FSMState[State, Data]) { func (slf *FSM[State, Data]) Register(state *FSMState[State, Data]) {
slf.states[state.GetState()] = state slf.states[state.GetState()] = state
} }

View File

@ -1,8 +1,12 @@
package fms package fms
import "github.com/kercylan98/minotaur/game" type (
FSMStateEnterHandle[Data any] func(data Data)
FSMStateUpdateHandle[Data any] func(data Data)
FSMStateExitHandle[Data any] func(data Data)
)
func NewFSMState[State comparable, Data any](state State, enter game.FSMStateEnterHandle[Data], update game.FSMStateUpdateHandle[Data], exit game.FSMStateExitHandle[Data]) *FSMState[State, Data] { func NewFSMState[State comparable, Data any](state State, enter FSMStateEnterHandle[Data], update FSMStateUpdateHandle[Data], exit FSMStateExitHandle[Data]) *FSMState[State, Data] {
return &FSMState[State, Data]{ return &FSMState[State, Data]{
enter: enter, enter: enter,
update: update, update: update,
@ -12,9 +16,9 @@ func NewFSMState[State comparable, Data any](state State, enter game.FSMStateEnt
type FSMState[State comparable, Data any] struct { type FSMState[State comparable, Data any] struct {
state State state State
enter game.FSMStateEnterHandle[Data] enter FSMStateEnterHandle[Data]
update game.FSMStateUpdateHandle[Data] update FSMStateUpdateHandle[Data]
exit game.FSMStateExitHandle[Data] exit FSMStateExitHandle[Data]
} }
func (slf *FSMState[State, Data]) GetState() State { func (slf *FSMState[State, Data]) GetState() State {