diff --git a/crates/benilla-app/assets/ui/AuctionFrame.xml b/crates/benilla-app/assets/ui/AuctionFrame.xml deleted file mode 100644 index bc1b15c9..00000000 --- a/crates/benilla-app/assets/ui/AuctionFrame.xml +++ /dev/null @@ -1,2380 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - if ( not this.tooltip or this.tooltip == "" ) then return end - GameTooltip:SetOwner(this, "ANCHOR_RIGHT") - GameTooltip:SetText(this.tooltip) - - GameTooltip:Hide() - - - - - - SmallMoneyFrame_OnLoad(); MoneyFrame_SetType("AUCTION") - - - - - - SmallMoneyFrame_OnLoad(); MoneyFrame_SetType("AUCTION") - -- The buyout line is gold where the bid above it is white (ref-tmpl l.392). - SetMoneyFrameColor(this:GetName(), - NORMAL_FONT_COLOR.r, NORMAL_FONT_COLOR.g, NORMAL_FONT_COLOR.b) - - - - - - - - - - - - - - - - - - - - - - - - - local index = this:GetID() + FauxScrollFrame_GetOffset(BrowseScrollFrame) - if ( not AuctionRow_ModifierClick("list", index) ) then BrowseButton_OnClick(this) end - - - - - - - - - - - - - - - - - - - - - - - - - if ( not this.tooltip or this.tooltip == "" ) then return end - GameTooltip:SetOwner(this, "ANCHOR_RIGHT") - GameTooltip:SetText(this.tooltip) - - GameTooltip:Hide() - - - - - - SmallMoneyFrame_OnLoad(); MoneyFrame_SetType("AUCTION") - - - - - - SmallMoneyFrame_OnLoad(); MoneyFrame_SetType("AUCTION") - - - - - - local index = this:GetID() + FauxScrollFrame_GetOffset(BidScrollFrame) - if ( not AuctionRow_ModifierClick("bidder", index) ) then BidButton_OnClick(this) end - - - - - - - - - - - - - - - - - - - - - - - - - if ( not this.tooltip or this.tooltip == "" ) then return end - GameTooltip:SetOwner(this, "ANCHOR_RIGHT") - GameTooltip:SetText(this.tooltip) - - GameTooltip:Hide() - - - - - - SmallMoneyFrame_OnLoad(); MoneyFrame_SetType("AUCTION") - - - - - - - - - - - SmallMoneyFrame_OnLoad(); MoneyFrame_SetType("AUCTION") - - - - - - local index = this:GetID() + FauxScrollFrame_GetOffset(AuctionsScrollFrame) - if ( not AuctionRow_ModifierClick("owner", index) ) then AuctionsButton_OnClick(this) end - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - FauxScrollFrame_OnVerticalScroll(BENILLA_FILTER_ROW_HEIGHT, AuctionFrameFilters_Update) - - - - - - - - - - - - - - - - - - - - - - - FauxScrollFrame_OnVerticalScroll(BENILLA_AUCTION_ROW_HEIGHT, AuctionFrameBrowse_Update) - - - - - - - - - - - - - - - BrowseMinLevel:SetFocus() - AuctionFrameBrowse_Search(); this:ClearFocus() - - - - - - - - - - - - - - - - BrowseMaxLevel:SetFocus() - this:ClearFocus() - - - - - - - - BrowseBidPriceGold:SetFocus() - this:ClearFocus() - - - - - - - - - - - - - - BrowseDropDown_OnLoad() - BrowseDropDown_OnLoad() - - - - - - - - - - - - AuctionFrameBrowse_OnLoad(self) - AuctionFrameBrowse_OnShow() - AuctionFrameBrowse_OnEvent() - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - FauxScrollFrame_OnVerticalScroll(BENILLA_AUCTION_ROW_HEIGHT, AuctionFrameBid_Update) - - - - - - - - - - - - - - AuctionFrameBid_OnLoad(self) - AuctionFrameBid_OnShow() - AuctionFrameBid_OnEvent() - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - FauxScrollFrame_OnVerticalScroll(BENILLA_AUCTION_ROW_HEIGHT, AuctionFrameAuctions_Update) - - - - - - - - - - - - - - AuctionsRadioButton_SetLabel(this, 2) - AuctionsRadioButton_OnClick(1) - - - - - - AuctionsRadioButton_SetLabel(this, 8) - AuctionsRadioButton_OnClick(2) - - - - - - AuctionsRadioButton_SetLabel(this, 24) - AuctionsRadioButton_OnClick(3) - - - - - - - - - - SmallMoneyFrame_OnLoad() - MoneyFrame_SetType("AUCTION_DEPOSIT") - - - - - - - - AuctionFrameAuctions_OnLoad(self) - AuctionFrameAuctions_OnShow() - AuctionFrameAuctions_OnEvent() - - - - - AuctionFrame_OnLoad(self) - AuctionFrame_OnShow() - AuctionFrame_OnHide() - AuctionFrame_OnEvent(self) - AuctionFrame_OnMouseWheel(arg1) - - - diff --git a/crates/benilla-app/assets/ui/CraftFrame.xml b/crates/benilla-app/assets/ui/CraftFrame.xml deleted file mode 100644 index 6acee44a..00000000 --- a/crates/benilla-app/assets/ui/CraftFrame.xml +++ /dev/null @@ -1,977 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - BenillaCraftList_OnVerticalScroll() - - - - - - - - - - - - - - - - - - - - - - - BenillaCraftFrame_OnLoad(self) - BenillaCraftFrame_OnEvent(self) - BenillaCraftFrame_OnMouseWheel(arg1) - PlaySound("igCharacterInfoOpen") - CloseCraft(); PlaySound("igCharacterInfoClose") - - - diff --git a/crates/benilla-app/assets/ui/DressUpFrame.xml b/crates/benilla-app/assets/ui/DressUpFrame.xml deleted file mode 100644 index a6a17b4a..00000000 --- a/crates/benilla-app/assets/ui/DressUpFrame.xml +++ /dev/null @@ -1,318 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - BenillaDressUpModel_OnLoad(self) - BenillaSetBoothTexture(getglobal(self:GetName() .. "Texture"), "dressup") - - BenillaDressUpModel_OnUpdate(self, arg1) - - - - - SetDressUpBackground() - - SetDressUpBackground() - SetPortraitTexture(DressUpFramePortrait, "player") - PlaySound("igCharacterInfoOpen") - - - - BenillaDressUpModel_Close() - PlaySound("igCharacterInfoClose") - - - - diff --git a/crates/benilla-app/assets/ui/GameTooltip.xml b/crates/benilla-app/assets/ui/GameTooltip.xml deleted file mode 100644 index 0675bac3..00000000 --- a/crates/benilla-app/assets/ui/GameTooltip.xml +++ /dev/null @@ -1,567 +0,0 @@ - - - - - - - - - - - - - - diff --git a/crates/benilla-app/assets/ui/MailFrame.xml b/crates/benilla-app/assets/ui/MailFrame.xml deleted file mode 100644 index d328d6ee..00000000 --- a/crates/benilla-app/assets/ui/MailFrame.xml +++ /dev/null @@ -1,1547 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - SendMailBodyEditBox:SetFocus() - if ( CursorHasItem() ) then SendMailPackageButton_OnClick() end - - this:ClearFocus() - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - SendMailSubjectEditBox:SetFocus() - this:HighlightText(0, 0) - SendMailSubjectEditBox:SetFocus() - SendMailNameEditBox:ClearFocus() - SendMailFrame_CanSend() - - - - - - - - - - - - - - SmallMoneyFrame_OnLoad(); MoneyFrame_SetType("STATIC"); - MoneyFrame_Update("SendMailCostMoneyFrame", GetSendMailPrice()); - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - SendMailBodyEditBox:SetFocus() - SendMailBodyEditBox:SetFocus() - SendMailSubjectEditBox:ClearFocus() - SendMailFrame_CanSend() - - - - - - - - - - - - - - - - - - SendMailErrorText:SetPoint("BOTTOMLEFT", "SendMailMoneyText", "TOPLEFT", 0, 2) - - - - StationeryBackgroundLeft:SetTexture(STATIONERY_PATH.."STATIONERYTEST1") - StationeryBackgroundRight:SetTexture(STATIONERY_PATH.."STATIONERYTEST2") - SendMailNameEditBox:SetFocus() - SendMailRadioButton_OnClick(1) - - - if ( CursorHasItem() ) then SendMailPackageButton_OnClick() end - - - - - - - - - - - - BenillaMailFrame_OnLoad(self) - MailFrame_OnEvent() - - OpenBackpack(); PlaySound("igCharacterInfoOpen") - - CloseMail() - CloseBackpack() - HideUIPanel(OpenMailFrame) - SendMailBodyEditBox:SetText("") - SendMailNameEditBox:SetText("") - SendMailSubjectEditBox:SetText("") - PlaySound("igCharacterInfoClose") - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - SmallMoneyFrame_OnLoad() MoneyFrame_SetType("AUCTION") - - - - SmallMoneyFrame_OnLoad() MoneyFrame_SetType("AUCTION") - - - - - - - - - SmallMoneyFrame_OnLoad() MoneyFrame_SetType("AUCTION") - - - - - - - - - SmallMoneyFrame_OnLoad() MoneyFrame_SetType("AUCTION") - - - - - - - - - - - - - - - - - - - - local centre = GetCenterFrame() - if centre then - HideUIPanel(centre) - end - - OpenMailFrame_OnHide() - - - diff --git a/crates/benilla-app/assets/ui/MicroMenu.xml b/crates/benilla-app/assets/ui/MicroMenu.xml index 9ecd108f..4e99df63 100644 --- a/crates/benilla-app/assets/ui/MicroMenu.xml +++ b/crates/benilla-app/assets/ui/MicroMenu.xml @@ -185,12 +185,12 @@ return button.label end - -- ref MainMenuBarMicroButton's OnEnter (l.13), verbatim bar the owner shift: - -- BenillaTooltip_AddNewbieTipFor(this.tooltipText, 1.0, 1.0, 1.0, this.newbieText) + -- ref MainMenuBarMicroButton's OnEnter (l.13), verbatim — the reference's helper reads + -- the firing frame off `this`, which is `button` here (the XML hands it `self`): + -- GameTooltip_AddNewbieTip(this.tooltipText, 1.0, 1.0, 1.0, this.newbieText); function BenillaMicroButton_OnEnter(button) if not GameTooltip_AddNewbieTip then return end -- engine tests load file subsets - BenillaTooltip_AddNewbieTipFor(button, BenillaMicroButton_TooltipText(button), 1.0, 1.0, 1.0, - button.newbieText) + GameTooltip_AddNewbieTip(BenillaMicroButton_TooltipText(button), 1.0, 1.0, 1.0, button.newbieText) end -- Is a panel up? `getglobal` because every panel this asks about loads AFTER this file — diff --git a/crates/benilla-app/assets/ui/OptionsFrame.xml b/crates/benilla-app/assets/ui/OptionsFrame.xml index a7d03169..6df5aa3e 100644 --- a/crates/benilla-app/assets/ui/OptionsFrame.xml +++ b/crates/benilla-app/assets/ui/OptionsFrame.xml @@ -216,6 +216,18 @@ -- load — compares against the string, so on a fresh 1.12 install the row paints unchecked -- and the auto-watch is dead until the box is clicked; the string ships the advertised -- default as the real one. A recorded deviation (1804's rule), not a quiet one. + -- "Show Detailed Tooltips" — ref UIOptionsFrame.lua l.100-101, inside UIOptionsFrame_Init. + -- A FrameXML uvar, not a CVar, and 1.12 ships it ON: the explanatory second line IS the + -- default reference tooltip, not an opt-in (0661). It lived in our GameTooltip.xml until + -- the tooltip went stock (1968); the reference keeps it here, with the Interface page. + SHOW_NEWBIE_TIPS = "1" + RegisterForSave("SHOW_NEWBIE_TIPS") + -- "Hide World PvP Objectives" — ref UIOptionsFrame.lua's `HIDE_OUTDOOR_WORLD_STATE = "0"`, + -- the gate the stock WorldStateAlwaysUpFrame_Update opens the outdoor readout on + -- (`== "0" or instanceType == "pvp"`). Here since that frame went stock (1972); a nil + -- reads as hidden, which is how the tower counters would vanish outdoors. + HIDE_OUTDOOR_WORLD_STATE = "0" + RegisterForSave("HIDE_OUTDOOR_WORLD_STATE") QUEST_FADING_DISABLE = "0" RegisterForSave("QUEST_FADING_DISABLE") AUTO_QUEST_WATCH = "1" diff --git a/crates/benilla-app/assets/ui/TradeSkillFrame.xml b/crates/benilla-app/assets/ui/TradeSkillFrame.xml deleted file mode 100644 index 4088a4f3..00000000 --- a/crates/benilla-app/assets/ui/TradeSkillFrame.xml +++ /dev/null @@ -1,1330 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - BenillaTradeSkillInvSlotDropDown_OnLoad() - BenillaTradeSkillInvSlotDropDown_OnShow() - - - - - - BenillaTradeSkillSubClassDropDown_OnLoad() - BenillaTradeSkillSubClassDropDown_OnShow() - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - BenillaTradeSkillList_OnVerticalScroll() - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - self:ClearFocus() - self:ClearFocus() - - if self:GetText() == "0" then - self:SetText("1") - end - - self:HighlightText(0, 0) - self:HighlightText() - - - - - - - - BenillaTradeSkillFrame_OnLoad(self) - BenillaTradeSkillFrame_OnEvent(self) - BenillaTradeSkillFrame_OnMouseWheel(arg1) - PlaySound("igCharacterInfoOpen") - CloseTradeSkill(); PlaySound("igCharacterInfoClose") - - - diff --git a/crates/benilla-app/assets/ui/UIParent.xml b/crates/benilla-app/assets/ui/UIParent.xml index 7038f3b6..919b37b7 100644 --- a/crates/benilla-app/assets/ui/UIParent.xml +++ b/crates/benilla-app/assets/ui/UIParent.xml @@ -35,6 +35,12 @@ this:RegisterEvent("VARIABLES_LOADED") this:RegisterEvent("TRAINER_SHOW") this:RegisterEvent("TRAINER_CLOSED") + this:RegisterEvent("AUCTION_HOUSE_SHOW") + this:RegisterEvent("AUCTION_HOUSE_CLOSED") + this:RegisterEvent("TRADE_SKILL_SHOW") + this:RegisterEvent("TRADE_SKILL_CLOSE") + this:RegisterEvent("CRAFT_SHOW") + this:RegisterEvent("CRAFT_CLOSE") this:RegisterEvent("GUILD_INVITE_REQUEST") this:RegisterEvent("GUILD_INVITE_CANCEL") this:RegisterEvent("MIRROR_TIMER_START") @@ -335,17 +341,22 @@ return loaded end - -- ref UIParent.lua:223, whose slot this is — immediately above `UIParent_OnEvent`, the - -- same neighbour it has there. It moved here from our own InspectFrame.xml when 1832 - -- retired that file: the name belongs to UIParent in the reference, and the window it - -- opens is now the stock LoadOnDemand `Blizzard_InspectUI` off the player's chain. - -- - -- The reference's body is `InspectFrame_LoadUI()` and then a guarded `InspectFrame_Show`. - -- We have no load-on-demand — benilla.toc loads that addon with everything else — so the - -- LoadUI call has nothing to do and is left out rather than stubbed (1203). The guard is - -- kept exactly as the reference writes it, and it is not decoration: it is what makes this - -- safe in the ~25 per-window harnesses that load UIParent.xml without the inspect window. + -- ref UIParent.lua l.170-172 and l.223-228, verbatim — the inspect window's loader and its + -- opener, immediately above `UIParent_OnEvent` as there. They moved here from our own + -- InspectFrame.xml when 1832 retired that file: the names belong to UIParent in the + -- reference. The window is the stock `Blizzard_InspectUI`, a LoadOnDemand registry row + -- off the player's chain (`ui_script::addons`, 1957) that `InspectFrame_LoadUI` loads on + -- the first call — the reference's own timing since 1967; from 1832 until then benilla.toc + -- listed the addon with everything else and the call was left out rather than stubbed + -- (1203). The guard is the reference's own, and it is not decoration: a harness that loads + -- UIParent.xml with no addon seated gets the reference's "failed to load" message from + -- `UIParentLoadAddOn` above and then, through this guard, nothing else. + function InspectFrame_LoadUI() + UIParentLoadAddOn("Blizzard_InspectUI"); + end + function InspectUnit(unit) + InspectFrame_LoadUI(); if ( InspectFrame_Show ) then InspectFrame_Show(unit); end @@ -357,14 +368,19 @@ -- addon, so deleting our window file would have taken the name with it. -- -- The LEVEL GATE is the reference's, and it is real behaviour rather than a guard: below - -- level 10 the key and the micro button do nothing at all. `TalentFrame_LoadUI` is left - -- out (we load the addon eagerly, 1203 — build it or leave it out, never stub it); the - -- `TalentFrame_Toggle` guard is kept verbatim, and it is what lets the ~25 harnesses that - -- load UIParent.xml without the talent window do so safely. + -- level 10 the key and the micro button do nothing at all — the addon is not even loaded. + -- `TalentFrame_LoadUI` (ref l.185-187) loads the LoadOnDemand row the first time (1967; + -- until then benilla.toc listed the addon and the call was left out, 1203). The + -- `TalentFrame_Toggle` guard is verbatim too. + function TalentFrame_LoadUI() + UIParentLoadAddOn("Blizzard_TalentUI"); + end + function ToggleTalentFrame() if ( UnitLevel("player") < 10 ) then return; end + TalentFrame_LoadUI(); if ( TalentFrame_Toggle ) then TalentFrame_Toggle(); end @@ -387,14 +403,80 @@ UIParentLoadAddOn("Blizzard_TrainerUI") end + -- ref UIParent.lua l.154-156, verbatim — the auction house's loader, reached from the + -- AUCTION_HOUSE_SHOW arm below; `Blizzard_AuctionUI` is a registry row off the chain (1971). + function AuctionFrame_LoadUI() + UIParentLoadAddOn("Blizzard_AuctionUI"); + end + + -- ref UIParent.lua l.158-160 and l.216-221, verbatim — the battlefield minimap's loader + -- and its toggle (the TOGGLEBATTLEFIELDMINIMAP binding); the stock WorldStateFrame.lua + -- calls the loader when a battleground's world states arrive (1972). The addon is a + -- registry row off the chain like the others; its pane is a ``-kind widget this + -- engine draws nothing into yet. + function BattlefieldMinimap_LoadUI() + UIParentLoadAddOn("Blizzard_BattlefieldMinimap"); + end + + function ToggleBattlefieldMinimap() + BattlefieldMinimap_LoadUI(); + if ( BattlefieldMinimap_Toggle ) then + BattlefieldMinimap_Toggle(); + end + end + + -- ref UIParent.lua l.166-168 and l.190-192, verbatim — the crafting windows' loaders, + -- reached from the TRADE_SKILL_SHOW / CRAFT_SHOW arms below; `Blizzard_TradeSkillUI` and + -- `Blizzard_CraftUI` are registry rows off the chain (1973). + function CraftFrame_LoadUI() + UIParentLoadAddOn("Blizzard_CraftUI"); + end + + function TradeSkillFrame_LoadUI() + UIParentLoadAddOn("Blizzard_TradeSkillUI"); + end + + -- ref UIParent.lua's own `BuildColoredListString`, verbatim — the "Requires: X, Y" line + -- both crafting addons build their tool/reagent lists with (a missing tool in red). It + -- lived as a guarded global in our TradeSkillFrame.xml until 1973 retired that file. + function BuildColoredListString(...) + if ( arg.n == 0 ) then + return nil; + end + + -- Takes input where odd items are the text and even items determine whether the arg should be colored or not + local string; + if ( arg[2] ) then + string = arg[1]; + else + string = RED_FONT_COLOR_CODE.. arg[1]..FONT_COLOR_CODE_CLOSE; + end + for i=3, arg.n, 2 do + if ( arg[i+1] ) then + -- If meets the condition + string = string..", "..arg[i]; + else + -- If doesn't meet the condition + string = string..", "..RED_FONT_COLOR_CODE..arg[i]..FONT_COLOR_CODE_CLOSE; + end + end + + return string; + end + -- ref UIParent.lua's own `ShowMacroFrame`, moved here from our MacroFrame.xml when 1848 -- retired that file — the third such squatter after `InspectUnit` (1832) and -- `ToggleTalentFrame` (1833), and by now the expected shape. -- - -- `MacroFrame_LoadUI` is left out: the addon loads eagerly from benilla.toc, so there is - -- nothing for it to do, and 1203 says leave it out rather than stub it. The + -- `MacroFrame_LoadUI` (ref l.176-178) loads the LoadOnDemand row the first time (1967; + -- until then benilla.toc listed the addon and the call was left out, 1203). The -- `MacroFrame_Show` guard is the reference's own. + function MacroFrame_LoadUI() + UIParentLoadAddOn("Blizzard_MacroUI"); + end + function ShowMacroFrame() + MacroFrame_LoadUI(); if ( MacroFrame_Show ) then MacroFrame_Show(); end @@ -408,8 +490,9 @@ -- `RAID_ROSTER_UPDATE` and again at `PLAYER_LOGIN` with a raid up (l.34, l.39), so its -- absence is a raise every time the roster moves. It is a FrameXML function, not an engine -- verb, and this file is our stand-in for `UIParent.lua` — the same relationship the three - -- above have. `UIParentLoadAddOn` is just above, and it no-ops on an addon that is - -- already loaded, which ours is: benilla.toc takes `Blizzard_RaidUI` eagerly (1874). + -- above have. `UIParentLoadAddOn` is just above; the addon is a LoadOnDemand registry + -- row (1957) that this loads on the first roster update — the reference's timing since + -- 1967 (1874 had listed it in benilla.toc, so this was a no-op on a loaded addon). function RaidFrame_LoadUI() UIParentLoadAddOn("Blizzard_RaidUI"); end @@ -448,6 +531,48 @@ end return end + -- The auction arms (ref UIParent.lua l.575-587), verbatim — the addon loads on the first + -- auctioneer and its own `AuctionFrame_Show` reads the hello the app applied (1971). + if ( event == "AUCTION_HOUSE_SHOW" ) then + AuctionFrame_LoadUI(); + if ( AuctionFrame_Show ) then + AuctionFrame_Show(); + end + return; + end + if ( event == "AUCTION_HOUSE_CLOSED" ) then + if ( AuctionFrame_Hide ) then + AuctionFrame_Hide(); + end + return; + end + -- The trade skill and craft arms (ref UIParent.lua l.605-632), verbatim (1973). + if ( event == "TRADE_SKILL_SHOW" ) then + TradeSkillFrame_LoadUI(); + if ( TradeSkillFrame_Show ) then + TradeSkillFrame_Show(); + end + return; + end + if ( event == "TRADE_SKILL_CLOSE" ) then + if ( TradeSkillFrame_Hide ) then + TradeSkillFrame_Hide(); + end + return; + end + if ( event == "CRAFT_SHOW" ) then + CraftFrame_LoadUI(); + if ( CraftFrame_Show ) then + CraftFrame_Show(); + end + return; + end + if ( event == "CRAFT_CLOSE" ) then + if ( CraftFrame_Hide ) then + CraftFrame_Hide(); + end + return; + end -- The guild invitation (ref UIParent.lua l.296-303, verbatim): the dialog rode a driver -- frame in our FriendsFrame.xml until that file became the reference's (1959). if ( event == "GUILD_INVITE_REQUEST" ) then diff --git a/crates/benilla-app/assets/ui/UiPanels.xml b/crates/benilla-app/assets/ui/UiPanels.xml index f997b870..b1a242b6 100644 --- a/crates/benilla-app/assets/ui/UiPanels.xml +++ b/crates/benilla-app/assets/ui/UiPanels.xml @@ -144,16 +144,9 @@ -- Blizzard_MacroUI.lua:7). whileDead is the ref's and it earns its keep: writing a macro -- during a corpse run is a real thing people do. UIPanelWindows["MacroFrame"] = { area = "left", pushable = 5, whileDead = 1 } - -- The crafting window (decision 0437 phase 2, TradeSkillFrame.xml): NOT an NPC session (it - -- opens off your own cast, TradeSkillFrame.xml's own header comment) — the ref Lua's own - -- registration line (Blizzard_TradeSkillUI.lua:13) is `{ area = "left", pushable = 3 }`, - -- quoted verbatim. - UIPanelWindows["BenillaTradeSkillFrame"] = { area = "left", pushable = 3 } - -- The Enchanting window (decision 0437 phase 3, CraftFrame.xml): the ref Lua's own - -- registration line (`Blizzard_CraftUI.lua:24`), quoted verbatim — `pushable = 4`, NOT `3` - -- (grepped both ref files directly to confirm: `3` is TradeSkillFrame's own line-13 value, - -- a different window/depth — CraftFrame.xml's own header comment has the same note). - UIPanelWindows["BenillaCraftFrame"] = { area = "left", pushable = 4 } + -- The trade skill and craft windows register THEMSELVES: `Blizzard_TradeSkillUI.lua:13` + -- and `Blizzard_CraftUI.lua:24` write their own `UIPanelWindows` rows when the addon loads, + -- which since 1973 is the reference's own file on the first TRADE_SKILL_SHOW / CRAFT_SHOW. -- The game menu (decision 0674, GameMenuFrame.xml) — the ref's own registration line -- verbatim (`UIPanelWindows["GameMenuFrame"] = { area = "center", pushable = 0, -- whileDead = 1 }`, UIParent.lua l.15), and the FIRST **center**-area row benilla ships. diff --git a/crates/benilla-app/assets/ui/WorldStateFrame.xml b/crates/benilla-app/assets/ui/WorldStateFrame.xml deleted file mode 100644 index 7a9f5f85..00000000 --- a/crates/benilla-app/assets/ui/WorldStateFrame.xml +++ /dev/null @@ -1,280 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - if ( this.tooltip and this.tooltip ~= "" ) then - GameTooltip:SetOwner(this, "ANCHOR_BOTTOMLEFT"); - GameTooltip:SetText(this.tooltip); - GameTooltip:Show(); - end - - - GameTooltip:Hide(); - - - - - - - - - - - - - - - -- UPDATE_WORLD_STATES is the reference's own event for this list (0x20e). The - -- entering-world fire is what paints the readout on a login that lands inside a - -- scope the server has already sent states for. - this:RegisterEvent("UPDATE_WORLD_STATES"); - this:RegisterEvent("PLAYER_ENTERING_WORLD"); - - - WorldStateAlwaysUpFrame_OnEvent(); - - - - diff --git a/crates/benilla-app/assets/ui/benilla.toc b/crates/benilla-app/assets/ui/benilla.toc index f25f1b72..c03712b2 100644 --- a/crates/benilla-app/assets/ui/benilla.toc +++ b/crates/benilla-app/assets/ui/benilla.toc @@ -166,13 +166,22 @@ Interface\FrameXML\MoneyInputFrame.xml # reference them. The StaticPopup engine and every dialog it used to carry are the reference's # own file now, far below at the reference's own slot after UIPanelTemplates (decision 1960). UiPanels.xml -# The tooltip: a hover window the bag/merchant/loot/unit frames drive. Loaded before them so -# `GameTooltip` + its verbs exist when their OnEnter handlers fire (runtime, so order -# is not strictly required — but it keeps the dependency legible). It also declares the two -# virtual templates (GameTooltipTemplate, ShoppingTooltipTemplate), which IS an order -# requirement: ItemRef.xml below expands one, and so do the 27 corpus addons that name -# GameTooltipTemplate in an XML inherits=. -GameTooltip.xml +# ══ THE TOOLTIP — the reference's own, off the player's chain (1751; decision 1968) ══ +# GameTooltip.xml sources HealthBar.lua and GameTooltip.lua and s GameTooltipTemplate.xml: +# the two virtual templates (GameTooltipTemplate, ShoppingTooltipTemplate — thirty declared line +# pairs each, the status bar, the money row), the GameTooltip / ShoppingTooltip1 / ShoppingTooltip2 +# instances and SmallTextTooltip. The widget itself is this engine's (0274); every verb the file +# calls was already bound. Its slot is the reference's own: FrameXML.toc l.13, after MoneyFrame +# (l.9-10, `SmallMoneyFrameTemplate` resolves at load) and before the panel kit. The order +# requirement the old header named still holds: ItemRef.xml below expands GameTooltipTemplate, +# and so do the 27 corpus addons that name it in an XML inherits=. +# +# What our transcription carried that the reference does not, and where each went (1968): the +# `$parentThicken` plate fill (a look deviation, retired — the plate is the reference's art); +# `SHOW_NEWBIE_TIPS`'s default, which is UIOptionsFrame.lua's and sits in OptionsFrame.xml's uvar +# block with its family; `FACTION_BAR_COLORS`' fallback table — the reference's is +# ReputationFrame.lua's, on the chain below; `NUM_SHOPPING_TOOLTIPS` — PaperDollFrame.lua's. +Interface\FrameXML\GameTooltip.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 @@ -559,11 +568,14 @@ Interface\FrameXML\CastingBarFrame.xml # 1.12 never reaches it — vmangos refuses to send that packet and substitutes a full START, # saying so in `Player::SendMirrorTimers` — and `ui_mirror.rs`'s Pause edge carries the note. Interface\FrameXML\MirrorTimer.xml -# The always-up world-state readout (decision 1586, report B190): the tower/flag/base counters an -# outdoor-PvP zone or a battleground shows at top-centre, driven by the UPDATE_WORLD_STATES event -# `crate::world_state_ui` fires. Needs Fonts (GameFontNormalSmall) and GameTooltip; sits beside the -# mirror timers, which share its top-centre lane. -WorldStateFrame.xml +# ══ THE WORLD-STATE FRAMES — the reference's own, off the player's chain (1751; decision 1972) ══ +# WorldStateFrame.xml + WorldStateFrame.lua: the always-up readout 1586 built (the tower/flag/base +# counters at top-centre, `UPDATE_WORLD_STATES` from `crate::world_state_ui`), the capture bars, +# and the battleground SCOREBOARD ours never had — `WorldStateScoreFrame`, over the score family +# 1972 built (`MSG_PVP_LOG_DATA`, the eleven verbs, `UPDATE_BATTLEFIELD_SCORE`) and UIParent.xml's +# `BattlefieldMinimap_LoadUI`. Needs Fonts, GameTooltip, the panel kit (its close button, tabs, +# faux scroll frame) — all above; sits beside the mirror timers, which share its top-centre lane. +Interface\FrameXML\WorldStateFrame.xml # ══ THE DURABILITY ALERT — the reference's own, off the player's chain (1751, window 4) ══ # The "armor guy" under the minimap: `DurabilityFrame`, its eleven glyph textures, and # `DurabilityFrame_SetAlerts` / `_OnUpdate` with `INVENTORY_ALERT_STATUS_SLOTS` and @@ -752,42 +764,34 @@ Interface\FrameXML\SkillFrame.xml # `HonorFrameTemplates.xml` is ``d by `HonorFrame.xml` and inherited by the LoadOnDemand # `Blizzard_InspectUI`, which loads later still. Interface\FrameXML\HonorFrame.xml -# ══ THE INSPECT WINDOW — the reference's own, off the player's chain (1751, window 24) ══ -# Another player's paper doll (decision 0631), and the FIRST LoadOnDemand ADDON we take off the -# chain rather than a FrameXML file. Everything below it in this manifest that names a -# `Blizzard_*` addon follows the shape set here. +# ══ THE LoadOnDemand ADDONS — Inspect, Talent, Macro, Raid: NO ROW HERE (1751; 1967) ══ +# `Blizzard_InspectUI`, `Blizzard_TalentUI`, `Blizzard_MacroUI` and `Blizzard_RaidUI` are not +# listed, exactly as the reference's own `FrameXML.toc` lists no addon: each is `LoadOnDemand: 1` +# on the player's chain — inside patch.MPQ; the loose `Interface\AddOns\Blizzard_*\` folders on +# disk hold one `.pub` decoy each, which is what kept these four windows on transcriptions for +# months — and `ui_script::addons` seats every such addon as a registry row (1957) that +# `UIParentLoadAddOn` loads the first time its opener runs. The openers are the reference's own, +# in UIParent.xml, its home for them: `InspectUnit` → `InspectFrame_LoadUI`, `ToggleTalentFrame` +# → `TalentFrame_LoadUI`, `ShowMacroFrame` → `MacroFrame_LoadUI`, and the stock RaidFrame.lua's +# `RaidFrame_LoadUI` on the first roster update. 1832, 1833, 1848 and 1874 took the four off the +# chain but listed them here with everything else, and left the LoadUI calls out rather than +# stub them (1203); 1967 gives them the reference's load timing and the calls back. # -# **The addon is inside patch.MPQ, not the loose folder.** `Interface\AddOns\Blizzard_InspectUI\` -# on disk holds one `Blizzard_InspectUI.pub` decoy and nothing else; the real four files sit in -# the archive, which the chain mounts. Believing the decoy is what kept this window (and Macro, -# Talent, Raid, Trainer) on a transcription for months. -# -# No LoadOnDemand: we list the addon's files here and they load with everything else. The -# reference reaches them through `InspectUnit` → `InspectFrame_LoadUI`; ours keeps `InspectUnit` -# (in UIParent.xml, the reference's own home for that name) and drops the LoadUI call. -# -# The addon's own toc order, which is load order — the `.xml` files pull their `.lua` siblings -# through `