diff --git a/crates/benilla-adt/src/lib.rs b/crates/benilla-adt/src/lib.rs index 4d0ce026..13dd79cb 100644 --- a/crates/benilla-adt/src/lib.rs +++ b/crates/benilla-adt/src/lib.rs @@ -157,8 +157,10 @@ pub struct MclqChunk { pub min_height: f32, pub max_height: f32, pub vertices: Vec, - /// Per-cell flags, row-major 8×8. Low nibble = liquid type (`0xf` = dry/hole); `0x40` fishable, - /// `0x80` shared. + /// Per-cell flags, row-major 8×8. Low nibble = liquid type (`0xf` = dry/hole); `0x80` shared. + /// `0x40` ("fishable") is carried but deliberately unread: its only compiled reader, the + /// reference's fishable query `0x69b5d0`, is a zero-caller dead island — fishability is the + /// server's verdict (`SPELL_FAILED_NOT_FISHABLE` passthru). Decision 1825. pub tile_flags: [u8; 64], } diff --git a/crates/benilla-app/assets/ui/UIDropDownMenu.xml b/crates/benilla-app/assets/ui/UIDropDownMenu.xml deleted file mode 100644 index 39e6a468..00000000 --- a/crates/benilla-app/assets/ui/UIDropDownMenu.xml +++ /dev/null @@ -1,1150 +0,0 @@ - - - - - - - - - - - - - UIDropDownMenuButton_OnClick(); - - - - if ( this.hasArrow ) then - UIDropDownMenuRow_OpenSubmenu(this); - UIDropDownMenu_StopCounting(this:GetParent()); - else - UIDropDownMenuRow_HoverIn(this:GetParent()); - end - getglobal(this:GetName().."Highlight"):Show(); - - - getglobal(this:GetName().."Highlight"):Hide(); - UIDropDownMenuRow_HoverOut(this:GetParent()); - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - CloseDropDownMenus(); - - - - - - - - - diff --git a/crates/benilla-app/assets/ui/UiPanels.xml b/crates/benilla-app/assets/ui/UiPanels.xml index 3d0a358b..b48c6cf0 100644 --- a/crates/benilla-app/assets/ui/UiPanels.xml +++ b/crates/benilla-app/assets/ui/UiPanels.xml @@ -399,6 +399,35 @@ -- surface (a focused test VM, and the reference's own `ADDON_LOADED` ordering), and this -- runs on the first line of every `ToggleBag`/`ToggleBackpack`/`ToggleKeyRing`, so it is -- the last place that should be the thing to raise. + -- ── Moved here when UIDropDownMenu.xml went to the chain (1751) ────────────────────── + -- The reference keeps `CloseMenus` in `UIParent.lua:984`, not in its dropdown file, and + -- this file is already where our slice of UIParent.lua lives (`IsOptionFrameOpen` below, + -- `CloseAllWindows`, `ToggleGameMenu`). It sits at manifest line 144, ahead of all five + -- consumers — the stock dropdown at 155, MicroMenu, GameMenuFrame and two test kits. + -- + -- The BOUND is inlined rather than read from `UIDROPDOWNMENU_MAXLEVELS`, which lives in the + -- dropdown file: a kit that loads this file and not that one would otherwise fail on + -- `'for' limit must be a number`. Two is the reference's own list count (DropDownList1/2 are + -- what `UIDropDownMenu.xml` declares; the third exists only in later builds). + -- + -- The BODY stays ours and is deliberately not the reference's: stock iterates a `UIMenus` + -- table nothing here declares, ours asks the dropdown lists directly. Same answer, and it + -- retires with this file rather than pretending to be stock. + function CloseMenus() + local closed + for i=1, 2, 1 do + local list = getglobal("DropDownList"..i) + if list and list:IsVisible() then + closed = 1 + end + end + if closed then + CloseDropDownMenus() + end + return closed + end + + function IsOptionFrameOpen() if (GameMenuFrame and GameMenuFrame:IsVisible()) or (OptionsFrame and OptionsFrame:IsVisible()) diff --git a/crates/benilla-app/assets/ui/benilla.toc b/crates/benilla-app/assets/ui/benilla.toc index 47b55922..b0a189a6 100644 --- a/crates/benilla-app/assets/ui/benilla.toc +++ b/crates/benilla-app/assets/ui/benilla.toc @@ -149,10 +149,17 @@ UiPanels.xml # requirement: ItemRef.xml below expands one, and so do the 27 corpus addons that name # GameTooltipTemplate in an XML inherits=. GameTooltip.xml -# The dropdown kit (0203 phase 2's closing sub-slice, widened for 0434 phase 5): -# UIDropDownMenuTemplate + DropDownList1/2 + the UIDropDownMenu_* API — before its -# first customers (the unit popups below, the world map's pickers, the trainer filter). -UIDropDownMenu.xml +# ══ THE DROPDOWN KIT — the reference's own, off the player's chain (1751) ══ +# UIDropDownMenuTemplate + the DropDownList frames + the whole `UIDropDownMenu_*` API — before its +# first customers (the unit popups below, the world map's pickers, the trainer filter). The stock +# file pulls its own `UIDropDownMenu.lua` and ``s UIDropDownMenuTemplates.xml, so this one +# line carries all three. We also gain `DropDownList3`, which our transcription stopped short of. +# +# Ours (0203 phase 2, widened for 0434 phase 5) defined every stock global plus six helpers of its +# own. Five were named nowhere outside the file. The sixth, `CloseMenus`, moved to UiPanels.xml — +# the reference keeps it in `UIParent.lua`, not its dropdown file, and UiPanels is both where our +# slice of UIParent.lua lives and ahead of all five of its consumers. +Interface\FrameXML\UIDropDownMenu.xml # ══ THE UIMenu KIT — the reference's own, off the player's chain (1751, window 21) ══ # `UIMenuTemplate` and `UIMenuButtonTemplate`, with `UIMenu.lua`'s `UIMenu_OnShow`/`_OnUpdate` and # the four `UIMenuButton_*` handlers arriving through the file's own `