diff --git a/game/fms/fsm.go b/game/fms/fsm.go index f8daf66..c281f12 100644 --- a/game/fms/fsm.go +++ b/game/fms/fsm.go @@ -2,12 +2,11 @@ package fms import ( "fmt" - "github.com/kercylan98/minotaur/game" ) func NewFSM[State comparable, Data any](data Data) *FSM[State, Data] { return &FSM[State, Data]{ - states: map[State]game.FSMState[State, Data]{}, + states: map[State]*FSMState[State, 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 { current State data Data - states map[State]game.FSMState[State, Data] + states map[State]*FSMState[State, Data] } func (slf *FSM[State, Data]) Update() { @@ -23,7 +22,7 @@ func (slf *FSM[State, Data]) Update() { 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 } diff --git a/game/fms/fsm_state.go b/game/fms/fsm_state.go index 726b7f1..15441c7 100644 --- a/game/fms/fsm_state.go +++ b/game/fms/fsm_state.go @@ -1,8 +1,12 @@ 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]{ enter: enter, update: update, @@ -12,9 +16,9 @@ func NewFSMState[State comparable, Data any](state State, enter game.FSMStateEnt type FSMState[State comparable, Data any] struct { state State - enter game.FSMStateEnterHandle[Data] - update game.FSMStateUpdateHandle[Data] - exit game.FSMStateExitHandle[Data] + enter FSMStateEnterHandle[Data] + update FSMStateUpdateHandle[Data] + exit FSMStateExitHandle[Data] } func (slf *FSMState[State, Data]) GetState() State {