37 lines
		
	
	
		
			974 B
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			37 lines
		
	
	
		
			974 B
		
	
	
	
		
			Go
		
	
	
	
	
	
| 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, Height, Cellsize, Score int
 | |
| 	StopTimer                                    *components.Timer
 | |
| 	Lost                                         bool // set to true if player is struck or something, by default: win!
 | |
| }
 | |
| 
 | |
| 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
 | |
| }
 |