added final menu after last level
This commit is contained in:
@@ -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
|
||||
}
|
||||
|
||||
|
||||
@@ -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)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user