fixed last level oos bug, added more levels and entities
This commit is contained in:
parent
1d9164d140
commit
2084150456
12
Makefile
12
Makefile
@ -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
|
all: clean build
|
||||||
@echo ok
|
@echo ok
|
||||||
|
|
||||||
@ -5,8 +13,8 @@ clean:
|
|||||||
rm -f openquell
|
rm -f openquell
|
||||||
|
|
||||||
build:
|
build:
|
||||||
go build
|
go build -ldflags "-X 'openquell/config.VERSION=$(VERSION)'"
|
||||||
|
|
||||||
|
|
||||||
test:
|
test:
|
||||||
@echo 1
|
@echo $(VERSION)
|
||||||
|
|||||||
2
TODO.md
2
TODO.md
@ -22,7 +22,7 @@
|
|||||||
slog.Debug("get observer", "minmoves", observer.LevelScore,
|
slog.Debug("get observer", "minmoves", observer.LevelScore,
|
||||||
"file", source.File, "line", source.Line)
|
"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]
|
## Collider Rework [abandoned: see branch collider-system, fails]
|
||||||
|
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@ -203,8 +203,8 @@ func InitTiles() TileRegistry {
|
|||||||
"particle-ring-5",
|
"particle-ring-5",
|
||||||
"particle-ring-6",
|
"particle-ring-6",
|
||||||
}),
|
}),
|
||||||
"transient": NewTileTranswall([]string{"transwall", "block-orange-32"}),
|
"Transient": NewTileTranswall([]string{"transwall", "block-orange-32"}),
|
||||||
"hiddendoor": NewTileHiddenDoor([]string{"block-greycolored", "block-greycolored-damaged"}),
|
"HiddenDoor": NewTileHiddenDoor([]string{"block-greycolored", "block-greycolored-damaged"}),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -14,3 +14,6 @@ const (
|
|||||||
const PLAYERSPEED int = 5
|
const PLAYERSPEED int = 5
|
||||||
const PARTICLE_LOOPWAIT time.Duration = 250 * time.Millisecond
|
const PARTICLE_LOOPWAIT time.Duration = 250 * time.Millisecond
|
||||||
const LEVEL_END_WAIT time.Duration = 500 * time.Millisecond
|
const LEVEL_END_WAIT time.Duration = 500 * time.Millisecond
|
||||||
|
const version string = "1.1.0"
|
||||||
|
|
||||||
|
var VERSION string // maintained by -x
|
||||||
|
|||||||
@ -4,6 +4,7 @@ import (
|
|||||||
"image/color"
|
"image/color"
|
||||||
"log/slog"
|
"log/slog"
|
||||||
"openquell/assets"
|
"openquell/assets"
|
||||||
|
"openquell/config"
|
||||||
"openquell/gameui"
|
"openquell/gameui"
|
||||||
|
|
||||||
"github.com/ebitenui/ebitenui"
|
"github.com/ebitenui/ebitenui"
|
||||||
@ -27,7 +28,8 @@ Thomas von Dein <tom@vondein.org>.
|
|||||||
Download it on repo.daemon.de/openquell/.
|
Download it on repo.daemon.de/openquell/.
|
||||||
|
|
||||||
Copyright (c) 2024 by Thomas von Dein.
|
Copyright (c) 2024 by Thomas von Dein.
|
||||||
`
|
|
||||||
|
Version: `
|
||||||
|
|
||||||
func NewAboutScene(game *Game) Scene {
|
func NewAboutScene(game *Game) Scene {
|
||||||
scene := &AboutScene{Whoami: About, Game: game, Next: About}
|
scene := &AboutScene{Whoami: About, Game: game, Next: About}
|
||||||
@ -81,7 +83,7 @@ func (scene *AboutScene) SetupUI() {
|
|||||||
)
|
)
|
||||||
|
|
||||||
about := widget.NewText(
|
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),
|
widget.TextOpts.Position(widget.TextPositionStart, widget.TextPositionCenter),
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|||||||
@ -8,6 +8,7 @@ import (
|
|||||||
"openquell/grid"
|
"openquell/grid"
|
||||||
"openquell/observers"
|
"openquell/observers"
|
||||||
"openquell/systems"
|
"openquell/systems"
|
||||||
|
"strings"
|
||||||
|
|
||||||
"github.com/hajimehoshi/ebiten/v2"
|
"github.com/hajimehoshi/ebiten/v2"
|
||||||
"github.com/mlange-42/arche/ecs"
|
"github.com/mlange-42/arche/ecs"
|
||||||
@ -64,7 +65,7 @@ func NewLevel(game *Game, cellsize int, plan *ldtkgo.Level) *Level {
|
|||||||
Width: game.ScreenWidth,
|
Width: game.ScreenWidth,
|
||||||
Height: game.ScreenHeight,
|
Height: game.ScreenHeight,
|
||||||
Description: plan.PropertyByIdentifier("description").AsString(),
|
Description: plan.PropertyByIdentifier("description").AsString(),
|
||||||
Name: plan.Identifier,
|
Name: strings.ReplaceAll(plan.Identifier, "_", " "),
|
||||||
GridContainer: gridcontainer,
|
GridContainer: gridcontainer,
|
||||||
Systems: systemlist,
|
Systems: systemlist,
|
||||||
}
|
}
|
||||||
|
|||||||
@ -77,7 +77,7 @@ func (scene *NextlevelScene) Draw(screen *ebiten.Image) {
|
|||||||
func (scene *NextlevelScene) SetupUI() {
|
func (scene *NextlevelScene) SetupUI() {
|
||||||
observer := observers.GetGameObserver(scene.Game.World)
|
observer := observers.GetGameObserver(scene.Game.World)
|
||||||
slog.Debug("levels", "max", observer.MaxLevels, "current", observer.CurrentLevel)
|
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()
|
scene.SetupUILast()
|
||||||
} else {
|
} else {
|
||||||
scene.SetupUIRetry()
|
scene.SetupUIRetry()
|
||||||
@ -120,9 +120,11 @@ func (scene *NextlevelScene) SetupUILast() {
|
|||||||
func (scene *NextlevelScene) SetupUIRetry() {
|
func (scene *NextlevelScene) SetupUIRetry() {
|
||||||
blue := color.RGBA{0, 255, 128, 255}
|
blue := color.RGBA{0, 255, 128, 255}
|
||||||
observer := observers.GetGameObserver(scene.Game.World)
|
observer := observers.GetGameObserver(scene.Game.World)
|
||||||
|
buttonNext := &widget.Button{}
|
||||||
|
|
||||||
rowContainer := gameui.NewRowContainer(false)
|
rowContainer := gameui.NewRowContainer(false)
|
||||||
labeltext := fmt.Sprintf("Great! (Score: %d)", observer.GetLevelScore())
|
labeltext := fmt.Sprintf("Great! (Score: %d)", observer.GetLevelScore())
|
||||||
|
islast := observer.MaxLevels == observer.CurrentLevel+1
|
||||||
|
|
||||||
switch observer.Lost {
|
switch observer.Lost {
|
||||||
case true:
|
case true:
|
||||||
@ -135,11 +137,13 @@ func (scene *NextlevelScene) SetupUIRetry() {
|
|||||||
observer.Retry = true
|
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) {
|
func(args *widget.ButtonClickedEventArgs) {
|
||||||
scene.SetNext(Play)
|
scene.SetNext(Play)
|
||||||
observer.Retry = false
|
observer.Retry = false
|
||||||
})
|
})
|
||||||
|
}
|
||||||
|
|
||||||
buttonAbort := gameui.NewMenuButton("Abort", *assets.FontRenderer.FontNormal,
|
buttonAbort := gameui.NewMenuButton("Abort", *assets.FontRenderer.FontNormal,
|
||||||
func(args *widget.ButtonClickedEventArgs) {
|
func(args *widget.ButtonClickedEventArgs) {
|
||||||
@ -152,7 +156,9 @@ func (scene *NextlevelScene) SetupUIRetry() {
|
|||||||
)
|
)
|
||||||
|
|
||||||
rowContainer.AddChild(label)
|
rowContainer.AddChild(label)
|
||||||
|
if !islast {
|
||||||
rowContainer.AddChild(buttonNext)
|
rowContainer.AddChild(buttonNext)
|
||||||
|
}
|
||||||
rowContainer.AddChild(buttonRetry)
|
rowContainer.AddChild(buttonRetry)
|
||||||
rowContainer.AddChild(buttonAbort)
|
rowContainer.AddChild(buttonAbort)
|
||||||
|
|
||||||
|
|||||||
@ -4,6 +4,8 @@ import (
|
|||||||
"math/rand"
|
"math/rand"
|
||||||
"openquell/components"
|
"openquell/components"
|
||||||
|
|
||||||
|
"log/slog"
|
||||||
|
|
||||||
"github.com/mlange-42/arche/ecs"
|
"github.com/mlange-42/arche/ecs"
|
||||||
"github.com/mlange-42/arche/ecs/event"
|
"github.com/mlange-42/arche/ecs/event"
|
||||||
"github.com/mlange-42/arche/generic"
|
"github.com/mlange-42/arche/generic"
|
||||||
@ -150,10 +152,18 @@ func (observer *GameObserver) AddScore() {
|
|||||||
level := observer.CurrentLevel
|
level := observer.CurrentLevel
|
||||||
moves := observer.Moves
|
moves := observer.Moves
|
||||||
|
|
||||||
|
slog.Debug("AddScore", "moves", observer.Moves)
|
||||||
|
|
||||||
if observer.Lost {
|
if observer.Lost {
|
||||||
observer.LevelScore[level].Score = 0
|
observer.LevelScore[level].Score = 0
|
||||||
|
slog.Debug("lost")
|
||||||
} else {
|
} else {
|
||||||
observer.LevelScore[level].Score = ((observer.LevelScore[level].Min * 100) / moves) / 30
|
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
|
observer.Moves = 0
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user