fix(studio): Task 4 — bind PaperdollController + wire empty-slot sprites
FixtureProvider.Populate for 0x21000023 was binding only InventoryController and omitting PaperdollController, so the ~21 equip slots rendered empty even though sample equipped items existed in the table. Also, the three per-list empty-slot sprites were not being resolved from the dat (contentsEmpty / sideBagEmpty / mainPackEmpty all defaulted to 0), so the slot cells had no background art. Fixes: - FixtureProvider.Populate gains a DatCollection dats param (mirrors the GameWindow.OnLoad lookup at line 2233-2235). The 0x21000023 case now resolves all three empty sprites via ItemListCellTemplate.ResolveEmptySprite and passes them to InventoryController.Bind. - PaperdollController.Bind is now called after InventoryController in the same 0x21000023 case, matching GameWindow:2257-2265 (same layout subtree, contentsEmpty as the equip-slot placeholder, sendWield: null since there is no live session in the studio). - StudioWindow.OnLoad passes _dats! to the updated Populate signature. SampleData.AddEquipped was already correct: MoveItem(guid, PlayerGuid, -1, equipMask) at ClientObjectTable.cs:134 sets CurrentlyEquippedLocation = newEquipLocation and calls Reindex which places the item in _containerIndex[PlayerGuid]. No SampleData change needed. Tests: 2 new assertions in FixtureProviderTests — sideBags_matchInventoryControllerFilter (Type.HasFlag(Container) || ItemsCapacity > 0 filter must match both bags) and equippedItems_retainLocationAndAreInContents (equipped items have CurrentlyEquippedLocation != None AND appear in GetContents so the paperdoll controller can find them). 604 pass / 2 skip / 0 fail. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
parent
0bdc866c15
commit
9ed9d8dbd9
3 changed files with 92 additions and 7 deletions
|
|
@ -130,7 +130,7 @@ public sealed class StudioWindow : IDisposable
|
|||
{
|
||||
uint layoutId = _opts.LayoutId ?? 0x2100006Cu;
|
||||
_objects = SampleData.BuildObjectTable();
|
||||
FixtureProvider.Populate(layoutId, _source.CurrentLayout, _stack, _objects);
|
||||
FixtureProvider.Populate(layoutId, _source.CurrentLayout, _stack, _objects, _dats);
|
||||
}
|
||||
}
|
||||
else
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue