screen to scene
ci/woodpecker/push/ebitengine Pipeline was successful

This commit is contained in:
2026-08-30 00:15:26 +02:00
parent 94649a38fe
commit da1410cb4a
62 changed files with 623 additions and 615 deletions
+46
View File
@@ -0,0 +1,46 @@
package inc
import (
inkwell "git.teletypegames.org/engines/inkwell"
"github.com/hajimehoshi/ebiten/v2"
"github.com/hajimehoshi/ebiten/v2/inpututil"
)
type sceneNav struct {
Name string
}
func (n *sceneNav) GetName() string { return n.Name }
func (n *sceneNav) Draw(dst *ebiten.Image, ctx *inkwell.UICtx) {}
func (n *sceneNav) Tick(ctx *inkwell.UICtx) {
if !World.HUDVisible() || World.Paused() {
return
}
step := 0
switch {
case inpututil.IsKeyJustPressed(ebiten.KeyArrowRight):
step = 1
case inpututil.IsKeyJustPressed(ebiten.KeyArrowLeft):
step = -1
default:
return
}
if next := n.neighbour(ctx.Game, step); next != "" {
World.Do(inkwell.GoTo(next))
}
}
func (n *sceneNav) neighbour(g *inkwell.Game, step int) string {
deck := g.SceneManager.Names()
if len(deck) < 2 {
return ""
}
for i, name := range deck {
if name == World.G.CurrentScene() {
return deck[((i+step)%len(deck)+len(deck))%len(deck)]
}
}
return deck[0]
}