fixed observers, added GameObserver
This commit is contained in:
31
observers/game_observer.go
Normal file
31
observers/game_observer.go
Normal file
@@ -0,0 +1,31 @@
|
||||
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
|
||||
}
|
||||
@@ -50,3 +50,7 @@ func (observer *PlayerObserver) AddEntity(entity ecs.Entity) {
|
||||
func (observer *PlayerObserver) RemoveEntity(entity ecs.Entity) {
|
||||
delete(observer.Entities, entity)
|
||||
}
|
||||
|
||||
func (observer *PlayerObserver) RemoveEntities() {
|
||||
observer.Entities = make(map[ecs.Entity]int)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user