fix: trade gate round 3 - the mount-time-captured dead command bus (ONE
root cause for every dead interaction) + retail's Total Items caption The round-2 probes nailed it: the request seam fired for BOTH open paths (use AND drag - "drag-release pick" -> "drag-on-player" -> "request"), but no open-cmd, no wire-open, and no LiveCommandBus drop-warning ever printed. MountSecureTrade captured _bindings.Options.CommandBus() ONCE at mount time - the pre-session surface whose Publish routes into a null route silently. CommandBus is a Func for exactly this reason; the social mounts resolve it inside each lambda. Every trade command - open (use + drag), accept (the "unpressable" Trade button - the click FIRED, the publish died), Clear All, close, and drop-on-grid staging - died on that one captured bus. All six lambdas now resolve the Func per call. Also: ID_SecureTrade_TotalItemsLabel probe-verified token-free (fragments ["Total Items: ", ""], one ITEMS variable 0x004E8A23) and composed via ResolveTemplate - the count texts read retail's exact "Total Items: N". AD-95 RETIRED same-day. The pre-feature stub-toast test row (drag-on-player option-on expecting "Secure trade is not open.") now pins the SecureTradeRequested seam instead. App suite 4,991/3 skips. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
parent
f2144ab2a4
commit
ffc73f80bf
6 changed files with 97 additions and 16 deletions
|
|
@ -63,7 +63,11 @@ public sealed class SecureTradeUiController : IRetainedPanelController
|
|||
// ItemListCellTemplate from the lists' own 0x1000000E cell-template
|
||||
// attribute (0x1000033A) — same recipe as the vendor strips.
|
||||
uint SelfEmptySlotSprite = 0u,
|
||||
uint PartnerEmptySlotSprite = 0u);
|
||||
uint PartnerEmptySlotSprite = 0u,
|
||||
// ID_SecureTrade_TotalItemsLabel composed per count — probe-verified
|
||||
// token-free (fragments ["Total Items: ", ""], one ITEMS variable);
|
||||
// null falls back to the bare number.
|
||||
Func<int, string>? FormatTotalItems = null);
|
||||
|
||||
private readonly Bindings _bindings;
|
||||
private readonly UiText? _partnerName;
|
||||
|
|
@ -255,10 +259,11 @@ public sealed class SecureTradeUiController : IRetainedPanelController
|
|||
private void SetCount(UiText? text, int count)
|
||||
{
|
||||
if (text is null) return;
|
||||
// Numeric-only, the AD-85 numeric-fields disposition: the authored
|
||||
// ID_SecureTrade_TotalItemsLabel template's variable shape is
|
||||
// unverified, so the DATA shows without invented surrounding words.
|
||||
string line = count.ToString();
|
||||
// Retail's exact ID_SecureTrade_TotalItemsLabel — probe-verified
|
||||
// token-free (gate round 3), composed through the same
|
||||
// ResolveTemplate the confirmation dialogs use.
|
||||
string line = _bindings.FormatTotalItems?.Invoke(count)
|
||||
?? count.ToString();
|
||||
text.LinesProvider = () => [new UiText.Line(line, Vector4.One)];
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue