fix(paperdoll): restore authored slot backgrounds

Port the retail UIItem catalog path so every supported equipment location resolves its exact empty-state silhouette from live DAT. Share one definition table between equip behavior and presentation, wire runtime plus UI Studio, pin all 21 prototypes and surfaces, and retire AP-66.

Co-Authored-By: Codex <codex@openai.com>
This commit is contained in:
Erik 2026-07-13 09:43:21 +02:00
parent 6ba4148b24
commit 1be18cc4db
11 changed files with 335 additions and 52 deletions

View file

@ -136,6 +136,7 @@ public static class FixtureProvider
uint contentsEmpty = ItemListCellTemplate.ResolveEmptySprite(dats, 0x21000021u, 0x100001C6u);
uint sideBagEmpty = ItemListCellTemplate.ResolveEmptySprite(dats, 0x21000022u, 0x100001CAu);
uint mainPackEmpty = ItemListCellTemplate.ResolveEmptySprite(dats, 0x21000022u, 0x100001C9u);
var paperdollEmpty = PaperdollSlotBackgrounds.ResolveEmptySprites(dats);
var iconIds = MakeIconIds(stack);
var selection = new AcDream.Core.Selection.SelectionState();
@ -152,9 +153,7 @@ public static class FixtureProvider
sideBagEmptySprite: sideBagEmpty,
mainPackEmptySprite: mainPackEmpty);
// Bind the paperdoll equip slots (same imported subtree as the inventory).
// Mirrors GameWindow:2257-2265: PaperdollController.Bind with contentsEmpty as
// emptySlotSprite (each slot shows the same square-frame placeholder as the grid).
// Bind the paperdoll equip slots with their authored per-location UIItem prototypes.
PaperdollController.Bind(
layout,
objects,
@ -163,7 +162,8 @@ public static class FixtureProvider
selection: selection,
sendWield: null, // no live session in the studio
emptySlotSprite: contentsEmpty,
datFont: stack.VitalsDatFont);
datFont: stack.VitalsDatFont,
emptySlotSprites: paperdollEmpty);
break;
}