@
feat(D.2b): data-driven channel menu chrome + greying + scroll-arrow fix Investigation found the menu popup is fully dat-driven (UIElement_Menu::MakePopup @0x46d310 reads LayoutDesc 0x21000006 elements 0x1000001C/1D/1E — the "stray" top-level elements). Render the popup from the real sprites instead of a flat rect: - panel 0x0600124C, item row 0x0600124E, selected row 0x0600124D; 191x17 rows, 2 cols. - drawing rows as SPRITES also fixes the z-order (a DrawRect bg composited OVER the labels; sprites share the labels submission bucket so text lands on top). - item greying: available channels white, unavailable salmon (colorPink) — static approximation (Say/General/Trade/LFG) with an AvailabilityProvider hook for live TurbineChat state; unavailable items are inert on click. Ports ResetAllTalkFocusMenuButtons. - scroll arrows: both dat sprites point down (export-confirmed); V-flip the top button so it points up. Tabs confirmed to have NO digits in retail (blank gold frames) — acdream already matches. Build + 392 App tests green. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> @
This commit is contained in:
parent
7094a1c847
commit
bb983ae850
4 changed files with 155 additions and 64 deletions
|
|
@ -50,8 +50,11 @@ public sealed class ChatWindowController
|
|||
private const uint DownSprite = 0x06004C6Cu;
|
||||
|
||||
// Channel menu sprite ids (confirmed in chat element dump).
|
||||
private const uint MenuNormal = 0x06004D65u;
|
||||
private const uint MenuPressed = 0x06004D66u;
|
||||
private const uint MenuNormal = 0x06004D65u; // button face
|
||||
private const uint MenuPressed = 0x06004D66u; // button pressed
|
||||
private const uint MenuPopupBg = 0x0600124Cu; // popup panel fill (element 0x1000001C)
|
||||
private const uint MenuItemRow = 0x0600124Eu; // item row bg (template 0x1000001E)
|
||||
private const uint MenuItemSelected = 0x0600124Du; // active channel row
|
||||
|
||||
// ── Public surface ─────────────────────────────────────────────────────
|
||||
|
||||
|
|
@ -225,11 +228,14 @@ public sealed class ChatWindowController
|
|||
Width = menuEl.Width,
|
||||
Height = menuEl.Height,
|
||||
Anchors = menuEl.Anchors,
|
||||
DatFont = datFont,
|
||||
Font = debugFont,
|
||||
SpriteResolve = resolve,
|
||||
NormalSprite = MenuNormal,
|
||||
PressedSprite = MenuPressed,
|
||||
DatFont = datFont,
|
||||
Font = debugFont,
|
||||
SpriteResolve = resolve,
|
||||
NormalSprite = MenuNormal,
|
||||
PressedSprite = MenuPressed,
|
||||
PopupBgSprite = MenuPopupBg,
|
||||
ItemNormalSprite = MenuItemRow,
|
||||
ItemHighlightSprite = MenuItemSelected,
|
||||
};
|
||||
c.Menu.OnChannelChanged = k => c._activeChannel = k;
|
||||
menuParent.RemoveChild(menuEl);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue