Move screen designs to the runtime root and add the UI art loader

- screen_designs.py now reads/writes assets/images/ui/ (ADR-0014); docs/
  screens/designs/ stays the reference-only snapshot, documented as historical
- add src/game/ui/art.gd: cached loader for assets/images/ui|scenes with null
  fallbacks for missing files, plus headless tests
- start menu uses the start_menu scene art as a full-screen backdrop, covers the
  baked-in mockup panel with an opaque panel, and styles the venue rows to match
- update README/architecture/TODO path notes and mark the storage/code-path/loader
  items done; DONE records the historical path move
- compare still 11 good / 0 bad; headless 226/226

README/PLAN realism-pass edits from another workstream remain unstaged." && git log --oneline -1
This commit is contained in:
zwitschi committed 2026-11-01 16:00:12 +01:00
1 parent 15deb58b73
commit 4745adeb13
6 files changed
+177 -17

No files matched your search

+6 -4
View File
@@ -9,7 +9,7 @@ screenshots against.
Two commands:
generate write one reference image per screen to docs/screens/designs/.
generate write one runtime reference image per screen to assets/images/ui/.
Two modes:
--ai realistic 3D game scenes and in-game screen designs via
the OpenRouter image API (default; requires
@@ -23,7 +23,7 @@ Two commands:
Requires OPENROUTER_API_KEY (falls back to the repo .env).
--dry-run build and print the requests without calling the API.
compare compare docs/screenshots/*.png against the reference designs and
compare compare docs/screenshots/*.png against the runtime reference art and
flag gross drift. Semantic composition is judged with coarse,
Pillow-only signals (aspect ratio, frame size, blank-frame
contrast, grayscale MAE, colour-histogram distance, edge density).
@@ -53,7 +53,9 @@ from PIL import Image, ImageChops, ImageDraw, ImageFilter, ImageOps, ImageStat
import generate_textures
ROOT = Path(__file__).resolve().parent.parent
DESIGNS_DIR = ROOT / "docs" / "screens" / "designs"
## Runtime reference art (ADR-0014); docs/screens/designs/ is the reference-only
## snapshot kept for docs and historical comparison.
DESIGNS_DIR = ROOT / "assets" / "images" / "ui"
SCREENSHOTS_DIR = ROOT / "docs" / "screenshots"
# Reference "design" dimensions — match the capture tool and the README gallery.
@@ -1022,7 +1024,7 @@ def build_parser():
commands = parser.add_subparsers(dest="command", required=True)
gen = commands.add_parser(
"generate", help="write reference design images to docs/screens/designs/")
"generate", help="write reference design images to assets/images/ui/")
mode = gen.add_mutually_exclusive_group()
mode.add_argument("--draft", action="store_true",
help="draw deterministic wireframes (no API/network)")