started implementing score system
This commit is contained in:
14
game/game.go
14
game/game.go
@@ -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)
|
||||
|
||||
@@ -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) {
|
||||
|
||||
@@ -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()
|
||||
|
||||
Reference in New Issue
Block a user