feat(ui): D.2b-B — wire InventoryController into the inventory-init block
Adds _inventoryController field (after _selectedObjectController) and calls InventoryController.Bind in the existing inventory-init block, between RegisterWindow and the Console.WriteLine. Uses Objects/iconComposer/ vitalsDatFont already in scope; strength lambda pattern-matches AttributeSnapshot to int? (uint? has no implicit cast to int?). Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
parent
383e8b7b55
commit
03fbf4464d
1 changed files with 15 additions and 0 deletions
|
|
@ -621,6 +621,8 @@ public sealed class GameWindow : IDisposable
|
||||||
private AcDream.App.UI.Layout.ToolbarController? _toolbarController;
|
private AcDream.App.UI.Layout.ToolbarController? _toolbarController;
|
||||||
// Phase D.5.3a — selected-object strip controller (name, overlay state, health meter).
|
// Phase D.5.3a — selected-object strip controller (name, overlay state, health meter).
|
||||||
private AcDream.App.UI.Layout.SelectedObjectController? _selectedObjectController;
|
private AcDream.App.UI.Layout.SelectedObjectController? _selectedObjectController;
|
||||||
|
// Phase D.2b-B — inventory controller (backpack grid + pack-selector + burden meter).
|
||||||
|
private AcDream.App.UI.Layout.InventoryController? _inventoryController;
|
||||||
// Phase D.2b Task 9 — plugin UI registrations buffered before OnLoad; drained in OnLoad.
|
// Phase D.2b Task 9 — plugin UI registrations buffered before OnLoad; drained in OnLoad.
|
||||||
private readonly AcDream.App.Plugins.BufferedUiRegistry? _uiRegistry;
|
private readonly AcDream.App.Plugins.BufferedUiRegistry? _uiRegistry;
|
||||||
// Phase I.2: ImGui debug panel ViewModel. Lives for as long as
|
// Phase I.2: ImGui debug panel ViewModel. Lives for as long as
|
||||||
|
|
@ -2154,6 +2156,19 @@ public sealed class GameWindow : IDisposable
|
||||||
inventoryWindow.Draggable = true;
|
inventoryWindow.Draggable = true;
|
||||||
_uiHost.Root.AddChild(inventoryWindow);
|
_uiHost.Root.AddChild(inventoryWindow);
|
||||||
_uiHost.RegisterWindow(AcDream.App.UI.WindowNames.Inventory, inventoryWindow);
|
_uiHost.RegisterWindow(AcDream.App.UI.WindowNames.Inventory, inventoryWindow);
|
||||||
|
|
||||||
|
// Phase D.2b-B — populate the inventory from ClientObjectTable: the
|
||||||
|
// "Contents of Backpack" grid + the pack-selector strip + the burden meter +
|
||||||
|
// captions. Analogue of gmInventoryUI/gmBackpackUI/gm3DItemsUI::PostInit.
|
||||||
|
_inventoryController = AcDream.App.UI.Layout.InventoryController.Bind(
|
||||||
|
invLayout, Objects,
|
||||||
|
playerGuid: () => _playerServerGuid,
|
||||||
|
iconIds: (type, icon, under, over, effects) => iconComposer.GetIcon(type, icon, under, over, effects),
|
||||||
|
strength: () => LocalPlayer.GetAttribute(
|
||||||
|
AcDream.Core.Player.LocalPlayerState.AttributeKind.Strength) is { } sa
|
||||||
|
? (int?)sa.Current : null,
|
||||||
|
datFont: vitalsDatFont);
|
||||||
|
|
||||||
Console.WriteLine("[D.2b-B] retail inventory window from LayoutDesc importer (0x21000023).");
|
Console.WriteLine("[D.2b-B] retail inventory window from LayoutDesc importer (0x21000023).");
|
||||||
}
|
}
|
||||||
else Console.WriteLine("[D.2b-B] inventory: LayoutDesc 0x21000023 not found.");
|
else Console.WriteLine("[D.2b-B] inventory: LayoutDesc 0x21000023 not found.");
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue