Files
Programming-Game-AI-by-Exam…/chapter-2-state-driven-agent-design/westworldwithwoman/state_miner_global_state.go
T

44 lines
1.3 KiB
Go

package westworldwithwoman
import "sync"
// minerGlobalState is the Go version of the (not yet pasted)
// singleton class MinerGlobalState from the book. Same pattern as
// enterMineAndDigForNugget: unexported type, one shared instance,
// reached only through the function below. This is the state whose
// Execute runs on every single tick, regardless of whatever else
// the miner is currently doing (see StateMachine.Update).
type minerGlobalState struct{}
var (
minerGlobalStateInstance *minerGlobalState
minerGlobalStateOnce sync.Once
)
// MinerGlobalState is the Go stand-in for
// "MinerGlobalState::Instance()".
func MinerGlobalState() *minerGlobalState {
minerGlobalStateOnce.Do(func() {
minerGlobalStateInstance = &minerGlobalState{}
})
return minerGlobalStateInstance
}
var _ State[Miner] = (*minerGlobalState)(nil)
// Enter, Execute and Exit are placeholders - the book hasn't shown
// us this state's real methods yet. This stub exists only so
// NewMiner can set it as the miner's global state and compile.
func (s *minerGlobalState) Enter(m *Miner) {
// TODO: fill in once the book shows this method's body.
}
func (s *minerGlobalState) Execute(m *Miner) {
// TODO: fill in once the book shows this method's body.
}
func (s *minerGlobalState) Exit(m *Miner) {
// TODO: fill in once the book shows this method's body.
}