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
+72
View File
@@ -0,0 +1,72 @@
package inc
import (
"strings"
inkwell "git.teletypegames.org/engines/inkwell"
)
var exitToSelector = inkwell.Exit{
To: SceneSelector,
Label: "the rest of the city",
Side: inkwell.ExitNear,
}
func init() {
SceneManager.Register(Scene{
Name: SceneSelector,
Title: "SAN FRANCISCO",
Background: BgSelector,
Actors: []inkwell.SceneActor{},
Walkboxes: []inkwell.Polygon{},
})
}
func fillSelectorPins() {
selector, ok := SceneManager.GetByName(SceneSelector)
if !ok {
return
}
var exits []inkwell.Exit
for _, entity := range SceneManager.GetAll() {
if !leadsToSelector(entity) {
continue
}
exits = append(exits, inkwell.Exit{
To: entity.Name,
Label: pinLabel(entity.Title),
Area: pin(len(exits)),
})
}
selector.Exits = exits
SceneManager.Register(selector)
}
func leadsToSelector(s Scene) bool {
for _, e := range s.Exits {
if e.To == SceneSelector {
return true
}
}
return false
}
const (
pinCols = 3
pinW = 192.0
pinH = 32.0
pinX = 16.0
pinY = 28.0
pinGapX = 204.0
pinGapY = 38.0
)
func pin(i int) inkwell.Shape {
col, row := i%pinCols, i/pinCols
return inkwell.Rect(pinX+float64(col)*pinGapX, pinY+float64(row)*pinGapY, pinW, pinH)
}
func pinLabel(title string) string {
name, _, _ := strings.Cut(title, " — ")
return name
}