fixed last level oos bug, added more levels and entities

This commit is contained in:
2024-03-15 20:08:23 +01:00
parent 1d9164d140
commit 2084150456
9 changed files with 1662 additions and 62 deletions

View File

@@ -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),
)

View File

@@ -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,
}

View File

@@ -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)