openquell/observers/game_observer.go

32 lines
731 B
Go

package observers
import (
"github.com/mlange-42/arche/ecs"
"github.com/mlange-42/arche/generic"
)
// Used for global game state
type GameObserver struct {
CurrentLevel, Width, Height, Cellsize, Score int
}
func NewGameObserver(world *ecs.World, startlevel, width, height, cellsize int) *GameObserver {
observer := &GameObserver{
CurrentLevel: startlevel,
Width: width,
Height: height,
Cellsize: cellsize,
}
resmanger := generic.NewResource[GameObserver](world)
resmanger.Add(observer)
return observer
}
func GetGameObserver(world *ecs.World) *GameObserver {
observerID := ecs.ResourceID[GameObserver](world)
observer := world.Resources().Get(observerID).(*GameObserver)
return observer
}