M1: rörelse, kollision, kamera, scener, tileset, skärmdumpar, CI
Some checks failed
release / build-release (push) Failing after 27s

- internal/sim: rutbaserad Mover (4 riktningar, riktningsbyte vid rutgräns,
  bildrute-exakt ankomst) och Camera (följer, klampar, centrerar små kartor),
  med tester
- internal/game: scener meny -> bana -> resultat, tangentbord + gamepad,
  tileset och spelaranimation, HUD, skriptläge (-script) för deterministiska
  skärmdumpar och tester
- tools/genart genererar placeholder-grafik (tiles.png, player.png);
  tools/shots tar doc/img/*.png som README och wiki visar
- bana 002-shinjuku (33x21) för kamerascroll; level.List/LoadFile/TrainAt
- .gitea/workflows/release.yaml: vet + test + linux/windows-zippar till
  rullande latest på brasse-linux01-runnern (linux-amd64)
- docs: roadmap M1 klar, tester, plan, README med bilder och styrning

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
This commit is contained in:
2026-10-23 19:16:53 +02:00
parent ae50d444a4
commit 4ae7dba291
34 changed files with 1730 additions and 124 deletions

View File

@@ -14,9 +14,10 @@ import (
)
func main() {
levelID := flag.String("level", "001-flygplatsen", "bana att starta (id = filnamn utan .json)")
levelID := flag.String("level", "", "hoppa direkt in i en bana (id = filnamn utan .json); tom = meny")
scale := flag.Int("scale", 4, "fönsterskala (intern upplösning 320x180 × skala)")
smoke := flag.Int("smoke", 0, "avsluta automatiskt efter N bildrutor (smoke-test)")
script := flag.String("script", "", "skriptade steg för skärmdumpar/tester, t.ex. \"wait 10; shot menu.png; quit\" (se internal/game/script.go)")
version := flag.Bool("version", false, "skriv ut version och avsluta")
flag.Parse()
@@ -25,7 +26,7 @@ func main() {
return
}
g, err := game.New(game.Options{LevelID: *levelID, SmokeFrames: *smoke})
g, err := game.New(game.Options{LevelID: *levelID, SmokeFrames: *smoke, Script: *script})
if err != nil {
log.Fatalf("kunde inte starta: %v", err)
}