fix(chat): round 4 — no user-visible meta text, real /help groups, indicator buttons toggle
Item 3 (#364): every honesty marker is now gone from user-visible /help text. AllegianceOverview/HouseOverview's "[IMPLEMENTED]" tags and trailing "Subcommands NOT marked..." sentences, and Day/Log/Render/Motd's appended "NOT YET IMPLEMENTED in acdream" tails, are removed; the underlying retail text is corrected/completed against the pseudo-C's own pristine consolidated data dumps (Log and Motd had been silently truncated; Render was entirely acdream-authored and is replaced with the real retail usage string). The three PARTIAL /help group topics (channels/chatting/commands) are now COMPLETE verbatim listings: HelpStupidChannelHack's three "vtable slot" operands, previously believed undecodable, are the same pooled/mislabeled-data artifact this campaign has hit before (AP-113's precedent) — reading the function's own disassembly for the push imm32 preceding each constructor call resolves all three directly. messagetypes is now a real ported construction (IsLegalChannel's 14-id whitelist + LogTextTypeToString's name table + the exact join/wrap format) instead of an acdream summary. Register row AP-184 retired. Item 5: the main window's 1/2/3/4 indicator buttons now toggle their floating chat window on click, per the user's retail memory overruling the earlier decomp-only reading. UIElement_Button::HandleButtonClick has its own generic click-driven action dispatch (property 0x12) reaching the same DoVisibilityToggleAction the Alt+1..4 keybinds use; the button fixture confirms this half is genuinely armed, but the floating-window fixture authors no matching listener-registration property, so the generic mechanism has no proven target in the data on hand. Per CLAUDE.md, the user's retail memory is the axiom regardless: ChatWindowController.BindIndicatorClicks wires each indicator's click through the same ToggleFloatingChatWindow chokepoint the keybinds use, as explicit user-directed retail behavior. SetIndicatorOpen stays the sole writer of the Selected mirror so the visual stays consistent through the click round trip. Full reconciliation in docs/research/2026-08-09-chat-retail-window-shell.md §1.4. Campaign plan gets the round-4 findings section; items 1+2 (text-style) are under parallel research, item 4 passed, item 6 deferred to the settings track. Suite: 12,579 passed / 4 skipped / 0 failed (Release, complete solution), up from baseline 12,553/4/0 — net +26 tests, zero regressions. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
parent
8b166f3ea2
commit
5b54387b8e
10 changed files with 1129 additions and 239 deletions
|
|
@ -113,18 +113,28 @@ public sealed class UiButton : UiElement, IUiGlobalTimeListener, IUiDatStateful
|
|||
|
||||
/// <summary>
|
||||
/// Opt-out for a <see cref="ToggleBehavior"/> button whose <see cref="Selected"/>
|
||||
/// state is a PURE MIRROR of external state (a producer other than the click
|
||||
/// itself is the only legitimate writer — e.g. <see cref="ChatWindowController.SetIndicatorOpen"/>
|
||||
/// mirroring a floating chat window's own visibility). CH6a/b REJECT-review
|
||||
/// SHOULD-FIX 3: the chat-window 1-4 indicators (<c>0x10000522</c>-<c>0x10000525</c>)
|
||||
/// carry DAT property <c>0x0B</c> (<see cref="ToggleBehavior"/>) = true, so
|
||||
/// without this flag a click flips their Highlight/Normal art with no
|
||||
/// underlying visibility change — the mirror lies until the next real
|
||||
/// toggle. Retail confirms clicking these buttons does nothing
|
||||
/// (<c>gmMainChatUI::ListenToElementMessage @0x004CDA80</c> has no case for
|
||||
/// their element ids — see <see cref="ChatWindowController.SetIndicatorOpen"/>'s
|
||||
/// doc). Default <see langword="false"/> — every OTHER toggle button (max/min,
|
||||
/// checkboxes) keeps retail's normal click-toggles-itself behavior.
|
||||
/// state is a PURE MIRROR of external state (a producer other than the button's
|
||||
/// own blind self-flip is the sole legitimate writer — e.g.
|
||||
/// <see cref="ChatWindowController.SetIndicatorOpen"/> mirroring a floating chat
|
||||
/// window's own visibility). CH6a/b REJECT-review SHOULD-FIX 3: the chat-window
|
||||
/// 1-4 indicators (<c>0x10000522</c>-<c>0x10000525</c>) carry DAT property
|
||||
/// <c>0x0B</c> (<see cref="ToggleBehavior"/>) = true, so without this flag a
|
||||
/// click flips their Highlight/Normal art with no underlying visibility change —
|
||||
/// the mirror lies until the next real toggle.
|
||||
///
|
||||
/// <para>
|
||||
/// Round 4 (2026-08-10): this stays set for the chat-window indicators even
|
||||
/// though clicking them now DOES toggle their floating window (via
|
||||
/// <see cref="ChatWindowController.BindIndicatorClicks"/> — see
|
||||
/// <see cref="ChatWindowController.SetIndicatorOpen"/>'s doc for the full retail
|
||||
/// mechanism this reconciles). The click drives the real toggle, and
|
||||
/// <c>SetIndicatorOpen</c> — the SAME single writer as before — reports the
|
||||
/// outcome back onto <see cref="Selected"/>; this button's own MouseUp-time
|
||||
/// blind flip stays suppressed so the visual never races or diverges from the
|
||||
/// window's actual state. Every OTHER toggle button (max/min, checkboxes) keeps
|
||||
/// retail's normal click-toggles-itself behavior; default
|
||||
/// <see langword="false"/>.
|
||||
/// </para>
|
||||
/// </summary>
|
||||
public bool SuppressSelfToggle { get; set; }
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue