started implementing score system

This commit is contained in:
2024-02-28 13:15:45 +01:00
parent 707281212a
commit ebaeb51f68
6 changed files with 58 additions and 24 deletions

View File

@@ -18,7 +18,7 @@ type Game struct {
Scenes map[SceneName]Scene
CurrentScene SceneName
Observer *observers.GameObserver
Levels []*Level // needed to feed select_scene
//Levels []*Level // fed in LevelScene.GenerateLevels()
Config *config.Config
}
@@ -35,11 +35,6 @@ func NewGame(width, height, cellsize int, cfg *config.Config, startscene SceneNa
Config: cfg,
}
// observers.NewPlayerObserver(&world)
// observers.NewParticleObserver(&world)
// observers.NewObstacleObserver(&world)
game.Observer = observers.NewGameObserver(&world, cfg.Startlevel, width, height, cellsize)
game.Scenes[Welcome] = NewWelcomeScene(game)
game.Scenes[Menu] = NewMenuScene(game)
game.Scenes[About] = NewAboutScene(game)
@@ -49,6 +44,9 @@ func NewGame(width, height, cellsize int, cfg *config.Config, startscene SceneNa
game.CurrentScene = startscene
game.Observer = observers.NewGameObserver(
&world, cfg.Startlevel, len(game.Levels), width, height, cellsize)
fmt.Println(game.World.Stats().String())
return game
@@ -71,7 +69,9 @@ func (game *Game) Update() error {
slog.Debug("timer ready", "lost", gameobserver.Lost, "retry", gameobserver.Retry)
if !gameobserver.Lost {
gameobserver.Score++ // FIXME: use level.Score(), see TODO
level := // current level?
score := ((level.MinMoves * 100) / gameobserver.Moves) / 30
gameobserver.AddScore()
}
game.Scenes[Nextlevel] = NewNextlevelScene(game, gameobserver.Lost)

View File

@@ -3,6 +3,7 @@ package game
import (
"log/slog"
"openquell/assets"
"openquell/observers"
"github.com/hajimehoshi/ebiten/v2"
)
@@ -27,11 +28,15 @@ func NewLevelScene(game *Game, startlevel int) Scene {
}
func (scene *LevelScene) GenerateLevels(game *Game) {
min := []int{}
for _, level := range assets.Levels {
scene.Levels = append(scene.Levels, NewLevel(game, 32, &level))
min = append(min, level.MinMoves)
}
scene.Game.Levels = scene.Levels
observer := observers.GetGameObserver(scene.Game.World)
observer.SetupLevelScore(min)
//scene.Game.Levels = scene.Levels
}
func (scene *LevelScene) SetLevel(level int) {

View File

@@ -82,13 +82,6 @@ func (level *Level) Draw(screen *ebiten.Image) {
}
}
func (level *Level) Position2Point(position *components.Position) image.Point {
return image.Point{
int(position.X) / level.Cellsize,
int(position.Y) / level.Cellsize,
}
}
func (level *Level) RestoreMap() {
for point, tile := range level.BackupMapslice {
level.Mapslice[point] = tile.Clone()