fixed observers, added GameObserver

This commit is contained in:
2024-02-11 14:24:30 +01:00
parent 72f0aa7691
commit 65ddec3fa4
18 changed files with 122 additions and 53 deletions

View 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
}

View File

@@ -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)
}