fixed last level oos bug, added more levels and entities
This commit is contained in:
@@ -4,6 +4,7 @@ import (
|
||||
"image/color"
|
||||
"log/slog"
|
||||
"openquell/assets"
|
||||
"openquell/config"
|
||||
"openquell/gameui"
|
||||
|
||||
"github.com/ebitenui/ebitenui"
|
||||
@@ -27,7 +28,8 @@ Thomas von Dein <tom@vondein.org>.
|
||||
Download it on repo.daemon.de/openquell/.
|
||||
|
||||
Copyright (c) 2024 by Thomas von Dein.
|
||||
`
|
||||
|
||||
Version: `
|
||||
|
||||
func NewAboutScene(game *Game) Scene {
|
||||
scene := &AboutScene{Whoami: About, Game: game, Next: About}
|
||||
@@ -81,7 +83,7 @@ func (scene *AboutScene) SetupUI() {
|
||||
)
|
||||
|
||||
about := widget.NewText(
|
||||
widget.TextOpts.Text(ABOUT, *assets.FontRenderer.FontNormal, blue),
|
||||
widget.TextOpts.Text(ABOUT+config.VERSION, *assets.FontRenderer.FontNormal, blue),
|
||||
widget.TextOpts.Position(widget.TextPositionStart, widget.TextPositionCenter),
|
||||
)
|
||||
|
||||
|
||||
@@ -8,6 +8,7 @@ import (
|
||||
"openquell/grid"
|
||||
"openquell/observers"
|
||||
"openquell/systems"
|
||||
"strings"
|
||||
|
||||
"github.com/hajimehoshi/ebiten/v2"
|
||||
"github.com/mlange-42/arche/ecs"
|
||||
@@ -64,7 +65,7 @@ func NewLevel(game *Game, cellsize int, plan *ldtkgo.Level) *Level {
|
||||
Width: game.ScreenWidth,
|
||||
Height: game.ScreenHeight,
|
||||
Description: plan.PropertyByIdentifier("description").AsString(),
|
||||
Name: plan.Identifier,
|
||||
Name: strings.ReplaceAll(plan.Identifier, "_", " "),
|
||||
GridContainer: gridcontainer,
|
||||
Systems: systemlist,
|
||||
}
|
||||
|
||||
@@ -77,7 +77,7 @@ 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 {
|
||||
if observer.MaxLevels == observer.CurrentLevel+1 && !observer.Lost {
|
||||
scene.SetupUILast()
|
||||
} else {
|
||||
scene.SetupUIRetry()
|
||||
@@ -120,9 +120,11 @@ func (scene *NextlevelScene) SetupUILast() {
|
||||
func (scene *NextlevelScene) SetupUIRetry() {
|
||||
blue := color.RGBA{0, 255, 128, 255}
|
||||
observer := observers.GetGameObserver(scene.Game.World)
|
||||
buttonNext := &widget.Button{}
|
||||
|
||||
rowContainer := gameui.NewRowContainer(false)
|
||||
labeltext := fmt.Sprintf("Great! (Score: %d)", observer.GetLevelScore())
|
||||
islast := observer.MaxLevels == observer.CurrentLevel+1
|
||||
|
||||
switch observer.Lost {
|
||||
case true:
|
||||
@@ -135,11 +137,13 @@ func (scene *NextlevelScene) SetupUIRetry() {
|
||||
observer.Retry = true
|
||||
})
|
||||
|
||||
buttonNext := gameui.NewMenuButton("Next Level", *assets.FontRenderer.FontNormal,
|
||||
func(args *widget.ButtonClickedEventArgs) {
|
||||
scene.SetNext(Play)
|
||||
observer.Retry = false
|
||||
})
|
||||
if !islast {
|
||||
buttonNext = gameui.NewMenuButton("Next Level", *assets.FontRenderer.FontNormal,
|
||||
func(args *widget.ButtonClickedEventArgs) {
|
||||
scene.SetNext(Play)
|
||||
observer.Retry = false
|
||||
})
|
||||
}
|
||||
|
||||
buttonAbort := gameui.NewMenuButton("Abort", *assets.FontRenderer.FontNormal,
|
||||
func(args *widget.ButtonClickedEventArgs) {
|
||||
@@ -152,7 +156,9 @@ func (scene *NextlevelScene) SetupUIRetry() {
|
||||
)
|
||||
|
||||
rowContainer.AddChild(label)
|
||||
rowContainer.AddChild(buttonNext)
|
||||
if !islast {
|
||||
rowContainer.AddChild(buttonNext)
|
||||
}
|
||||
rowContainer.AddChild(buttonRetry)
|
||||
rowContainer.AddChild(buttonAbort)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user