Create AGENTS.md as a thin bridge to CLAUDE.md, fix isolated dat-layout previews by normalizing panel roots to the studio canvas, add a --mockup mode that mounts production-backed UI windows into one UiHost, and thread the per-element dat-font resolver through GameWindow's live imports. Verified with dotnet test and headless studio screenshots for inventory and the mockup desktop.
This commit is contained in:
parent
ca94b479bf
commit
9444a328fa
8 changed files with 405 additions and 44 deletions
|
|
@ -59,32 +59,6 @@ Copy this block when adding a new issue:
|
|||
|
||||
**Files:** `src/AcDream.App/UI/Layout/CharacterStatController.cs`, `src/AcDream.App/UI/Layout/LayoutImporter.cs`.
|
||||
|
||||
## #157 — Live game (GameWindow) doesn't thread the per-element dat-font resolver (Fix C is studio-only)
|
||||
|
||||
**Status:** OPEN
|
||||
**Severity:** LOW
|
||||
**Filed:** 2026-06-26
|
||||
**Component:** ui
|
||||
|
||||
**Description:** Fix C (commit `a0d3395`) added a per-element dat `FontDid` resolver to `LayoutImporter.Import` + `DatWidgetFactory` — each text element gets its own dat font instead of one global font. Wired into the STUDIO path (StudioWindow → LayoutSource → LayoutImporter), but GameWindow's four `LayoutImporter.Import`/`Build` calls explicitly pass `null`, so the LIVE game still uses a single global font.
|
||||
|
||||
**Fix:** Build a `Func<uint,UiDatFont?>` closure over a `ConcurrentDictionary<uint, UiDatFont?>` near where `vitalsDatFont`/`largeDatFont` load (~`GameWindow.cs:1820`), reusing `UiDatFont.Load` via `GetOrAdd` (same pattern as `RenderStack.ResolveDatFont`), and pass it to the four Import sites: vitals `0x2100006C` (~1820-1835), chat (~1875), toolbar `0x21000016` (~2019), inventory `0x21000023` (~2157). `CharacterStatController.Bind` already has null-means-keep-dat-font semantics, so it benefits automatically. Backward-compat: resolver applies the dat font as a default; explicit `DatFont` still overrides.
|
||||
|
||||
**Files:** `src/AcDream.App/Rendering/GameWindow.cs` (4 import sites), `src/AcDream.App/Rendering/RenderBootstrap.cs` (`RenderStack.ResolveDatFont` = pattern to mirror). **Relates to:** Fix C `a0d3395`; register row AP-75.
|
||||
|
||||
## #156 — Studio: inventory window (0x21000023) renders all-black in preview
|
||||
|
||||
**Status:** OPEN
|
||||
**Severity:** MEDIUM
|
||||
**Filed:** 2026-06-25
|
||||
**Component:** ui (studio)
|
||||
|
||||
**Description:** `AcDream.App ui-studio "<datdir>" --layout 0x21000023 --screenshot out.png` renders a flat ~1.2 KB dark-canvas image — the inventory frame / grid / paperdoll don't draw. No exception, no console output. Other studio panels render fine; the inventory works in the live game (F12). Matters for the planned multi-window "full mockup" studio mode.
|
||||
|
||||
**Root cause / status:** Pre-existing (identical at commits 9021600 + eccacc5; NOT a regression). The binding does not throw. Likely the studio host/render-stack omits state the inventory's whole-window Draggable frame + sub-window mounts need, or a sprite-resolve / z-order gap specific to the studio host.
|
||||
|
||||
**Files:** `src/AcDream.App/Studio/FixtureProvider.cs` (case 0x21000023u), `src/AcDream.App/Studio/StudioWindow.cs`, `src/AcDream.App/Studio/PanelFbo.cs`.
|
||||
|
||||
## #155 — Outdoor terrain textures look stretched + blurry vs retail (missing landscape DETAIL-texture overlay)
|
||||
|
||||
**Status:** OPEN — **root cause VERIFIED (oracle-first); fix attempt implemented + REVERTED** (rendered the ground black). Ready for a focused fresh implementation pass.
|
||||
|
|
@ -5651,6 +5625,22 @@ outdoors at the angle that previously erased it.
|
|||
|
||||
# Recently closed
|
||||
|
||||
## #157 — [DONE 2026-06-26] Live game threads per-element dat-font resolver
|
||||
|
||||
**Closed:** 2026-06-26
|
||||
**Commit:** `feat(studio): #156 #157 mockup desktop and font resolver`
|
||||
**Resolution:** Mirrored the studio `RenderStack.ResolveDatFont` pattern in `GameWindow`: a per-window `ConcurrentDictionary<uint,UiDatFont?>` seeded with the default dat font, loaded lazily under `_datLock`, and passed to the live vitals, chat, toolbar, and inventory `LayoutImporter.Import`/`Build` calls. Live panels now get dat-authored `FontDid` defaults the same way the studio does; explicit controller-set fonts still override.
|
||||
|
||||
---
|
||||
|
||||
## #156 — [DONE 2026-06-26] Studio inventory preview draws off-canvas
|
||||
|
||||
**Closed:** 2026-06-26
|
||||
**Commit:** `feat(studio): #156 #157 mockup desktop and font resolver`
|
||||
**Resolution:** The inventory layout imported correctly, but its top-level dat rect is the live-game screen position (`Left=500`, `Top=138`). Screenshot mode sized the FBO to the panel itself (`300x362`), so the whole tree rendered outside the off-screen canvas and only the dark clear color remained. `StudioWindow` now normalizes isolated dat-layout previews to `(0,0)` and disables root-level anchoring; the inventory screenshot changed from a flat 1.2 KB image to a rendered panel.
|
||||
|
||||
---
|
||||
|
||||
## #150 — Open doors still blocked at the threshold (ethereal target not skipped in the step-down pass)
|
||||
|
||||
**Status:** DONE (2026-06-25) — after the retail collision sweep, an OPEN door
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue