fixed last level oos bug, added more levels and entities

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

View File

@ -1,3 +1,11 @@
version = $(shell egrep "version string = " config/static.go | cut -d'"' -f 2)
BRANCH = $(shell git branch --show-current)
COMMIT = $(shell git rev-parse --short=8 HEAD)
BUILD = $(shell date +%Y.%m.%d.%H%M%S)
#VERSION := $(if $(filter $(BRANCH), development),$(version)-$(BRANCH)-$(COMMIT)-$(BUILD),$(version))
VERSION := $(version)-$(BRANCH)-$(COMMIT)-$(BUILD)
all: clean build
@echo ok
@ -5,8 +13,8 @@ clean:
rm -f openquell
build:
go build
go build -ldflags "-X 'openquell/config.VERSION=$(VERSION)'"
test:
@echo 1
@echo $(VERSION)

View File

@ -22,7 +22,7 @@
slog.Debug("get observer", "minmoves", observer.LevelScore,
"file", source.File, "line", source.Line)
- BUG: last level, when dying, you get a congrats message
- Bug: when pushing obstacles around edges, they vanish
## Collider Rework [abandoned: see branch collider-system, fails]

File diff suppressed because it is too large Load Diff

View File

@ -203,8 +203,8 @@ func InitTiles() TileRegistry {
"particle-ring-5",
"particle-ring-6",
}),
"transient": NewTileTranswall([]string{"transwall", "block-orange-32"}),
"hiddendoor": NewTileHiddenDoor([]string{"block-greycolored", "block-greycolored-damaged"}),
"Transient": NewTileTranswall([]string{"transwall", "block-orange-32"}),
"HiddenDoor": NewTileHiddenDoor([]string{"block-greycolored", "block-greycolored-damaged"}),
}
}

View File

@ -14,3 +14,6 @@ const (
const PLAYERSPEED int = 5
const PARTICLE_LOOPWAIT time.Duration = 250 * time.Millisecond
const LEVEL_END_WAIT time.Duration = 500 * time.Millisecond
const version string = "1.1.0"
var VERSION string // maintained by -x

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,
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)
if !islast {
rowContainer.AddChild(buttonNext)
}
rowContainer.AddChild(buttonRetry)
rowContainer.AddChild(buttonAbort)

View File

@ -4,6 +4,8 @@ import (
"math/rand"
"openquell/components"
"log/slog"
"github.com/mlange-42/arche/ecs"
"github.com/mlange-42/arche/ecs/event"
"github.com/mlange-42/arche/generic"
@ -150,10 +152,18 @@ func (observer *GameObserver) AddScore() {
level := observer.CurrentLevel
moves := observer.Moves
slog.Debug("AddScore", "moves", observer.Moves)
if observer.Lost {
observer.LevelScore[level].Score = 0
slog.Debug("lost")
} else {
observer.LevelScore[level].Score = ((observer.LevelScore[level].Min * 100) / moves) / 30
slog.Debug("won", "score", observer.LevelScore[level].Score,
"Min", observer.LevelScore[level].Min,
"Min-x-100", observer.LevelScore[level].Min*100,
"Min-x-100-moves", (observer.LevelScore[level].Min*100)/moves,
)
}
observer.Moves = 0