package observers import ( "openquell/components" "github.com/mlange-42/arche/ecs" "github.com/mlange-42/arche/generic" ) // Used for global game state type GameObserver struct { CurrentLevel, Width int Height, Cellsize, Score int StopTimer *components.Timer Lost bool // set to true if player is struck or something, by default: win! Retry bool NextlevelText string } func NewGameObserver(world *ecs.World, startlevel, width, height, cellsize int) *GameObserver { observer := &GameObserver{ CurrentLevel: startlevel, StopTimer: &components.Timer{}, 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 } func (observer *GameObserver) Gameover() { observer.Lost = true }