hanabi: emit each card face as its own image, for a UI build #14

Merged
joeyr merged 1 commit from hanabi/ui-assets into main 2026-08-16 23:17:00 -05:00
Owner

TTS XML UI addresses an <Image> by asset name, one URL per asset, with no way to offset into a spritesheet. A 2D board needs the same thirty faces again as separate files.

They are rendered by the same render_card() that builds the sheet rather than cropped out of it. Cropping works today and drifts the first time a card design changes and only one path is regenerated — and the failure would be a card that looks subtly different depending on whether you see it as an object or as UI.

Behind --split, so default output is unchanged. Both builds can coexist; nothing here removes the spritesheet or the physical table.

TTS XML UI addresses an `<Image>` by asset name, one URL per asset, with no way to offset into a spritesheet. A 2D board needs the same thirty faces again as separate files. They are rendered by the same `render_card()` that builds the sheet rather than cropped out of it. Cropping works today and drifts the first time a card design changes and only one path is regenerated — and the failure would be a card that looks subtly different depending on whether you see it as an object or as UI. Behind `--split`, so default output is unchanged. Both builds can coexist; nothing here removes the spritesheet or the physical table.
hanabi: emit each card face as its own image, for a UI build
All checks were successful
lint / lua (pull_request) Successful in 17s
376a3912e3
TTS's XML UI addresses an <Image> by asset name, one URL per asset, with no way
to offset into a spritesheet. A 2D board therefore needs the same thirty faces
again as separate files.

They are rendered by the same render_card() that builds the sheet rather than
cropped out of it. Cropping would work today and drift the first time a card
design changes and only one of the two paths is regenerated -- and the failure
would be a card that looks subtly different depending on whether you are seeing
it as an object or as UI.

Behind --split, so the default output is unchanged for the object-based build.
Both can coexist: nothing here removes the spritesheet or the physical table.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
joeyr merged commit b8164c1ea1 into main 2026-08-16 23:17:00 -05:00
Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
joeyr/tts-games!14
No description provided.