From 499485a672ce13a04c312d6669cb525f55d5748f Mon Sep 17 00:00:00 2001 From: Erik Date: Mon, 22 Jun 2026 11:10:39 +0200 Subject: [PATCH] =?UTF-8?q?docs:=20D.2b=20empty-slot=20art=20=E2=80=94=20c?= =?UTF-8?q?lose=20inventory=20portion=20of=20the=20empty-slot-art=20issue?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Inventory contents grid / side-bag / main-pack empty cells now dat-resolve their art via ItemListCellTemplate (0x1000000e -> 0x21000037). Paperdoll equip silhouettes + main-pack icon remain open (Sub-phase C / AP-51). Co-Authored-By: Claude Opus 4.8 (1M context) --- docs/ISSUES.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/docs/ISSUES.md b/docs/ISSUES.md index 473c1e68..78f3fa13 100644 --- a/docs/ISSUES.md +++ b/docs/ISSUES.md @@ -5389,7 +5389,7 @@ The burden bar now reads the server's wire `EncumbranceVal` (PropertyInt 5) inst ## Inventory + equipment slots show the wrong empty-slot background art -**Status:** OPEN — MEDIUM (D.2b inventory polish; the immediate next task) +**Status:** INVENTORY PORTION FIXED 2026-06-22 (pending visual gate) — contents grid + side-bag + main-pack empty art now dat-resolved (`ItemListCellTemplate`, commits `b862640`→`edbe5ba`). STILL OPEN: paperdoll equip-slot silhouettes (Sub-phase C) + main-pack backpack icon (AP-51). **Filed:** 2026-06-21 **Component:** ui — D.2b inventory (UiItemSlot empty sprite + paperdoll equip slots) @@ -5397,6 +5397,8 @@ The burden bar now reads the server's wire `EncumbranceVal` (PropertyInt 5) inst **Root cause / status:** `UiItemSlot.EmptySprite` is a single hardcoded default (`0x060074CF`) shared by all empty cells. The inventory/side-bag pack slots need the gm3DItemsUI/gmBackpackUI cell-template (`0x21000037`) empty-state background instead. The equip slots need the `0x10000032` `UIElement_UIItem` registration + per-slot silhouette art (Sub-phase C). +**Resolution (inventory portion, 2026-06-22):** Ported retail's `UIElement_ItemList::InternalCreateItem` (`0x004e3570`) resolver into `ItemListCellTemplate.ResolveEmptySprite` — reads attribute `0x1000000e` off each list element → catalog `0x21000037` prototype's `ItemSlot_Empty`. **Correction to the original diagnosis:** `0x060074CF` is the *generic shared* item-slot empty (the `ItemSlot_Empty` of many catalog prototypes), not "the toolbar's"; `0x21000037` is a catalog of ~50 per-slot-kind empties — so it was never a one-constant swap. Pinned per-list (real-dat test): contents `0x100001C6` → `0x06004D20`; side-bag `0x100001CA` + main-pack `0x100001C9` → `0x06005D9C` (the 36×36 frame). `UiItemList.CellEmptySprite` carries it; `InventoryController` + `GameWindow` wire it. Divergence AP-55 (toolbar still hardcoded) + AP-56 (flat single-sprite cell vs retail's layered prototype). Spec/plan `docs/superpowers/{specs,plans}/2026-06-22-d2b-empty-slot-art*.md`. + **Files:** `src/AcDream.App/UI/UiItemSlot.cs` (`EmptySprite`); `src/AcDream.App/UI/Layout/InventoryController.cs` (set the inventory pack-slot empty sprite on the cells it creates); paperdoll equip slots → Sub-phase C. **Research:** `.layout-dumps/uiitem-0x21000037.txt` (cell template states); `docs/research/2026-06-16-equipment-paperdoll-deep-dive.md`. Also pending: the main-pack backpack icon (AP-51).