32 lines
731 B
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
|
||
|
|
}
|