From 9dc44c3a3d8f2a82cfd0e38e8980c4771b7ed72f Mon Sep 17 00:00:00 2001 From: Erik Date: Mon, 22 Jun 2026 14:44:44 +0200 Subject: [PATCH] =?UTF-8?q?docs(D.2b):=20address=20Opus=20review=20nits=20?= =?UTF-8?q?=E2=80=94=20update=20stale=20class=20summary=20+=20EffectiveOpe?= =?UTF-8?q?n=20note?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Comment-only. (1) the InventoryController summary said "Read-only: no container switching" — now live. (2) note the _openContainer 0-vs-playerGuid sentinel equivalence so the dual main-pack path isn't mistaken for dead code. No behavior change. Code-quality review verdict: APPROVED (ship to gate). Co-Authored-By: Claude Opus 4.8 (1M context) --- src/AcDream.App/UI/Layout/InventoryController.cs | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/AcDream.App/UI/Layout/InventoryController.cs b/src/AcDream.App/UI/Layout/InventoryController.cs index 26a71386..cdb4dc48 100644 --- a/src/AcDream.App/UI/Layout/InventoryController.cs +++ b/src/AcDream.App/UI/Layout/InventoryController.cs @@ -8,7 +8,8 @@ namespace AcDream.App.UI.Layout; /// Binds the imported gmInventoryUI tree (LayoutDesc 0x21000023) and populates it from /// . The acdream analogue of retail /// gmInventoryUI/gmBackpackUI/gm3DItemsUI ::PostInit (named-retail decomp 176236/176596/176728). -/// Read-only: no container switching / drag / wield-drop wire (later sub-phases). +/// Container-switching is live (click a side bag → Use 0x0036 → ViewContents 0x0196 full-replace); +/// drag-into-bag / wield-drop wire are later sub-phases. /// public sealed class InventoryController { @@ -237,7 +238,9 @@ public sealed class InventoryController } /// The effective open container — the explicit one, or the player (main pack) by default. - /// Resolved live (not cached at ctor) so a late-arriving player guid is handled. + /// Resolved live (not cached at ctor) so a late-arriving player guid is handled. The default + /// sentinel is 0; once the main pack is explicitly opened, _openContainer holds the player + /// guid instead — both resolve here to the same main-pack container, so the paths are equivalent. private uint EffectiveOpen() => _openContainer != 0 ? _openContainer : _playerGuid(); /// Add a populated cell wired to its click role: container cell → open+select,