Commit Graph
20 Commits
Author SHA1 Message Date
mr.zeroandClaude Opus 5 39af65f3c9 Wire the audio player in Run, not in NewGame
ci/woodpecker/push/woodpecker Pipeline was successful
AudioPlayer keeps the *AssetManager it is handed, so attaching it during
construction quietly pinned it to the manager NewGame happened to make. A
domain that assigns its own registry onto the Game — legal, the fields are
plain *Manager values — got a working image path and a silent audio one.

Run attaches instead, once the Game is final.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-30 10:36:13 +02:00
mr.zeroandClaude Opus 5 08f15a7e3d Manager.Set and Manager.All
ci/woodpecker/push/woodpecker Pipeline was successful
Set is the deliberate overwrite: it replaces a registered entry in place,
keeping its position in the insertion order, and falls back to Register
when the name is new. Register keeps panicking on duplicates.

All returns every entry in insertion order; orderedWidgets is now just
that call, and reversedWidgets builds on it.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-30 09:50:28 +02:00
mr.zeroandClaude Opus 5 f9745e4266 Scene exits, Back(), and the current/previous scene accessors
ci/woodpecker/push/woodpecker Pipeline was successful
A connection between two scenes had to be hand-built as a hotspot: an area,
a cursor, a GoTo, and a flag check written out again for every door. Scene
now carries Exits, and the engine expands each one into a hotspot.

- Exit{To, Label, Side, Area, Needs, Blocked, OnLook, OnTake} in scene.exit.go.
  With no Area an exit is an edge strip, sized as a fraction of Game.SceneArea()
  so a game whose HUD covers the foot of the window gets strips inside the
  painting. Game.ExitLook / Game.ExitTake supply the look and take responses
  once for the whole game, so the phrasing is not repeated per exit.
- Game.SceneHotspots(name) is the scene's own hotspots followed by its exits,
  cached per scene. Authored hotspots come first, so a painted thing beats the
  edge strip wherever the two overlap. HotspotAt and HotspotDebug read it.
- Game.CurrentScene() / PreviousScene(), both persisted in the save file. The
  engine tracked the current scene but exposed no accessor, so every game had
  to shadow it to know where it was.
- Back() returns to the previous scene — what an exit with an empty To binds
  to, for a scene reachable from several rooms whose way out is a direction
  rather than a place.
- Validate rejects an exit naming a scene nobody registered.

Generated hotspots are named ExitName(To) ("exit:street", "exit:back"), so the
location graph can be read straight back out of the registered scenes.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-30 00:09:20 +02:00
mr.zeroandClaude Opus 5 aa55f1166c Add a CI check
ci/woodpecker/push/woodpecker Pipeline was successful
ci/woodpecker/manual/woodpecker Pipeline was successful
The repo was registered in Woodpecker but had no pipeline, so nothing
ever ran on it. There is no test suite here, so the check is what can
actually catch a regression in a library: that it still compiles and
loads.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-17 07:07:31 +02:00
mr.zeroandClaude Opus 5 b5ff77d064 Move the module path to the engines org
The repo now lives at engines/inkwell, and a Go module path is not
covered by Gitea's redirect: `go get git.teletypegames.org/engines/inkwell`
failed with "module declares its path as git.teletypegames.org/games/inkwell".

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
v0.1.0
2026-08-16 10:32:20 +02:00
mr.zero fd7cd6d1a9 rename pncdsl to inkwell 2026-07-30 12:16:39 +02:00
mr.zeroandClaude Fable 5 99902e0ab4 add AssetFS hook so assets can load from an embed.FS (js/wasm)
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-30 07:23:20 +02:00
mr.zero 5ed7ac4ed9 radial fix 2026-05-25 23:33:46 +02:00
mr.zero eeb6a5e827 fix 2026-05-25 23:13:25 +02:00
mr.zero f75ada75ba new features 2026-05-25 22:27:53 +02:00
mr.zero c4c99260bd docs update 2026-05-25 22:02:08 +02:00
mr.zero 76f910ab36 remove demo game 2026-05-25 21:28:17 +02:00
mr.zero b1ea3447a8 readme update 2026-05-25 21:04:28 +02:00
mr.zero ca8df5bd72 new theme fix 2026-05-25 20:53:24 +02:00
mr.zero 2eef22a76b new theme 2026-05-25 20:49:41 +02:00
mr.zero ec6761693c docs update 2026-05-25 20:37:55 +02:00
mr.zero 9fa1d200ef widgets 2026-05-25 20:35:04 +02:00
mr.zero e4a7cc9177 add documentation 2026-05-25 20:04:33 +02:00
mr.zero f0b86871f6 graphics for demo game 2026-05-25 19:55:18 +02:00
mr.zero df7219677e initial commit 2026-05-25 18:09:51 +02:00