added hud system, turned all observers into one central observer

This commit is contained in:
2024-02-27 14:45:23 +01:00
parent 451b66a53d
commit 18be0ebe38
13 changed files with 160 additions and 206 deletions

View File

@@ -35,9 +35,9 @@ func NewGame(width, height, cellsize int, cfg *config.Config, startscene SceneNa
Config: cfg,
}
observers.NewPlayerObserver(&world)
observers.NewParticleObserver(&world)
observers.NewObstacleObserver(&world)
// observers.NewPlayerObserver(&world)
// observers.NewParticleObserver(&world)
// observers.NewObstacleObserver(&world)
game.Observer = observers.NewGameObserver(&world, cfg.Startlevel, width, height, cellsize)
game.Scenes[Welcome] = NewWelcomeScene(game)

View File

@@ -1,12 +1,10 @@
package game
import (
"fmt"
"log/slog"
"openquell/assets"
"github.com/hajimehoshi/ebiten/v2"
"github.com/hajimehoshi/ebiten/v2/ebitenutil"
)
type LevelScene struct {
@@ -81,13 +79,4 @@ func (scene *LevelScene) Draw(screen *ebiten.Image) {
screen.Clear()
scene.Levels[scene.CurrentLevel].Draw(screen)
// FIXME: put into hud_system
op := &ebiten.DrawImageOptions{}
screen.DrawImage(assets.Assets["hud"], op)
ebitenutil.DebugPrintAt(screen, fmt.Sprintf(
"FPS: %02.f TPS: %02.f",
ebiten.ActualFPS(),
ebiten.ActualTPS(),
), 10, 10)
}

View File

@@ -52,6 +52,8 @@ func NewLevel(game *Game, cellsize int, plan *assets.RawLevel) *Level {
systemlist = append(systemlist, systems.NewDestroyableSystem(game.World, gridcontainer))
systemlist = append(systemlist, systems.NewHudSystem(game.World, plan))
mapslice, backupmap := LevelToSlice(game, plan, cellsize)
return &Level{
@@ -105,8 +107,8 @@ func (level *Level) SetupGrid(game *Game) {
level.World.Batch().RemoveEntities(selector)
// get rid of any players on PlayerObserver. FIXME: remove them in grid.NewGrid()?
playerobserver := observers.GetPlayerObserver(level.World)
playerobserver.RemoveEntities()
observer := observers.GetGameObserver(level.World)
observer.RemoveEntities()
// get rid of possibly manipulated map
level.RestoreMap()