added final menu after last level

This commit is contained in:
2024-03-01 14:08:35 +01:00
parent 6f85a90b58
commit ae8058e052
4 changed files with 52 additions and 7 deletions

View File

@@ -34,6 +34,7 @@ func (scene *LevelScene) GenerateLevels(game *Game) {
}
scene.Game.Observer.SetupLevelScore(min)
scene.Game.Observer.SetupMaxLevels(len(min))
scene.Game.Levels = scene.Levels
}

View File

@@ -75,6 +75,49 @@ func (scene *NextlevelScene) Draw(screen *ebiten.Image) {
}
func (scene *NextlevelScene) SetupUI() {
observer := observers.GetGameObserver(scene.Game.World)
slog.Debug("levels", "max", observer.MaxLevels, "current", observer.CurrentLevel)
if observer.MaxLevels == observer.CurrentLevel+1 {
scene.SetupUILast()
} else {
scene.SetupUIRetry()
}
}
func (scene *NextlevelScene) SetupUILast() {
blue := color.RGBA{0, 255, 128, 255}
observer := observers.GetGameObserver(scene.Game.World)
rowContainer := gameui.NewRowContainer(false)
label1text := "Last level, congratulations!"
label2text := fmt.Sprintf("Your final score: %d", observer.GetLevelScore())
buttonMenu := gameui.NewMenuButton("Menu", *assets.FontRenderer.FontNormal,
func(args *widget.ButtonClickedEventArgs) {
scene.SetNext(Menu)
})
label1 := widget.NewText(
widget.TextOpts.Text(label1text, *assets.FontRenderer.FontNormal, blue),
widget.TextOpts.Position(widget.TextPositionCenter, widget.TextPositionCenter),
)
label2 := widget.NewText(
widget.TextOpts.Text(label2text, *assets.FontRenderer.FontNormal, blue),
widget.TextOpts.Position(widget.TextPositionCenter, widget.TextPositionCenter),
)
rowContainer.AddChild(label1)
rowContainer.AddChild(label2)
rowContainer.AddChild(buttonMenu)
scene.Ui = &ebitenui.UI{
Container: rowContainer.Container(),
}
}
func (scene *NextlevelScene) SetupUIRetry() {
blue := color.RGBA{0, 255, 128, 255}
observer := observers.GetGameObserver(scene.Game.World)