fix(D.2b): paperdoll empty slots show a visible frame (not transparent)
User correction at the visual gate: the green "figure" in the paperdoll is the LIVE 3D character (the doll — can be naked), NOT per-slot silhouettes. The default view (Slots button OFF) = the doll + non-armor slots; pressing Slots hides the doll and shows the armor slots. So the doll + the Slots toggle are Slice 2 (the UiViewport); there are no per-slot silhouette sprites to chase. For Slice 1 (no doll yet) the right empty-slot look is simply a VISIBLE FRAME so every slot position can be seen + used — which fixes the "I see only slots with equipment, no empty slots" report. The earlier transparent (EmptySprite=0) came from the stale silhouette assumption. PaperdollController now takes an emptySlotSprite; GameWindow passes the inventory grid's empty square (0x06004D20) for a consistent visible frame. App suite 580 green. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
parent
db0cac03c4
commit
a4c68520ea
3 changed files with 18 additions and 10 deletions
|
|
@ -32,10 +32,11 @@ public class PaperdollControllerTests
|
|||
}
|
||||
|
||||
private static PaperdollController Bind(ImportedLayout layout, ClientObjectTable objects,
|
||||
List<(uint item, uint mask)>? wields = null)
|
||||
List<(uint item, uint mask)>? wields = null, uint emptySlot = 0u)
|
||||
=> PaperdollController.Bind(layout, objects, () => Player,
|
||||
iconIds: (_, _, _, _, _) => 0x1234u,
|
||||
sendWield: wields is null ? null : (i, m) => wields.Add((i, m)));
|
||||
sendWield: wields is null ? null : (i, m) => wields.Add((i, m)),
|
||||
emptySlotSprite: emptySlot);
|
||||
|
||||
private static void SeedEquipped(ClientObjectTable t, uint guid, EquipMask loc)
|
||||
{
|
||||
|
|
@ -112,11 +113,11 @@ public class PaperdollControllerTests
|
|||
}
|
||||
|
||||
[Fact]
|
||||
public void Empty_equip_slot_is_transparent() // EmptySprite=0 ⇒ nothing drawn (no doll behind it in Slice 1)
|
||||
public void Empty_equip_slot_shows_the_configured_frame() // visible frame so all positions are usable (Slice 1; the doll is Slice 2)
|
||||
{
|
||||
var (layout, lists) = BuildLayout();
|
||||
Bind(layout, new ClientObjectTable());
|
||||
Assert.Equal(0u, lists[HeadSlot].Cell.EmptySprite);
|
||||
Bind(layout, new ClientObjectTable(), emptySlot: 0x06004D20u);
|
||||
Assert.Equal(0x06004D20u, lists[HeadSlot].Cell.EmptySprite);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue