- the transcription had dropped parent= on 72 declarations the reference carries (37 to UIParent, 28 to the action bar's art frame, 7 more), so the HUD was a field of top-level frames and UIParent:Hide() reached almost nothing — which is why a cinematic had to hide the UI at the draw level and then special-case the pointer; both workarounds are deleted and the HUD hides through the reference's own route; restoring only the UIParent half would have been the dangerous part (draw order is one flat sort, so a partial restore lifts frames over the neighbours they carry), and manifest order turns out to be load-bearing — a parent name that doesn't exist yet is silently ignored, so UIParent.xml moves to the reference's own slot with a test that fails if anything declares a child first; the chat still drew over a fly-by after all that, because the reference parents the chat windows on their TEMPLATE, invisible to a name-for-name diff when both sides rename — two declarations fix it, and the sweep that replaces the method loads the whole shipped manifest, fires CINEMATIC_START and asserts the survivors are exactly three: 91 frames visible before, 3 after, and the count comes back on stop - every cinematic boundary cuts through the reference's 0.25 s fade to black, and the next step hangs on the fade's COMPLETION, not a delay — the shot boundary is exactly where the reference does a blocking terrain load, so a delay-driven cut shows through a hitch and a completion-driven one cannot; and a fly-by now ends into black instead of a ~0.3 s loading cover: the reference raises no cover on that path, it holds black while the ground under the player loads back, so ours holds black while the stream catches up — budgeted, never an unbounded wait - the death arc keeps its promises across a relog: the body's own state machine now dies with the session — re-entering the world as a ghost used to match no arm of the world-edge machine, so the corpse query never went out and "Resurrect Now" stayed down until the next death; and a corpse wears its owner's guild crest — the corpse descriptor carries the guild field and resolves through the same crest cache a living tabard does, where ours dressed the body crestless - the char-select ghost gets its body kit: the screen resolves the state kit of the very "Ghost" aura a released ghost rides in the world — tint (140,185,253), alpha 0.5, and the Ghost_state wisp model at the body's attach point, pinned by a golden that decodes the row out of the shipped DBC; the airborne model is corrected before its fix lands — the address six comments called the gravity integrator is really the fall-velocity query, and a knockback is unsteerable because its launch PLANTS the forward bit, not because the arc is airborne (our guard was a velocity proxy, so a near-zero-speed knockback steered from frame 2); and the hover inspect card now decodes a picked part's mesh tag — alpha, rig slot, and both readings of the lighting payload side by side — turning a rebuild-and-two-probes hunt into a hover Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
386 lines
25 KiB
XML
386 lines
25 KiB
XML
<Ui>
|
|
<!--
|
|
The MICRO MENU — the row of eight small arched buttons in the main bar's right-hand recess
|
|
(character, spellbook, talents, quest log, socials, world map, main menu, help). It was the
|
|
last hole in the bar: ActionBar.xml's SCOPE note named "the bag/keyring/micro cluster on the
|
|
bar's right" as the visible remaining gap, and with the bag bar landed (decision 0216 slice
|
|
2) the micro row was the empty dark panel between the page arrows and the bags.
|
|
|
|
Transcribed from the real 1.12 FrameXML — ref-MainMenuBarMicroButtons.xml (the template +
|
|
the eight buttons' geometry) and ref-MainMenuBarMicroButtons.lua (LoadMicroButtonTextures,
|
|
UpdateMicroButtons, the CharacterMicroButton portrait, UpdateTalentButton), both extracted
|
|
from patch.MPQ. Geometry QUOTED: each button 29x58 with `HitRectInsets top=18`; the first at
|
|
MainMenuBarArtFrame BOTTOMLEFT +(552,2); the rest chained BOTTOMLEFT to the previous
|
|
BOTTOMRIGHT +(-3,0) — a 26 px stride, so the row runs x 552..757 inside the 1024-wide bar.
|
|
|
|
NAMES are the reference's, not Benilla*-prefixed (unlike the multibars/stance bar, which are
|
|
benilla-shaped divergences). These are straight transcriptions, and `UpdateMicroButtons` is
|
|
the ref global that CharacterFrame/SpellBookFrame/TalentFrame already cite by name in their
|
|
own OnShow/OnHide comments — those calls are now live instead of OMITTED, in all five
|
|
panels the ref calls it from (+ QuestLogFrame, WorldMapFrame). They are nil-GUARDED at the
|
|
call sites (`if UpdateMicroButtons then … end`) — not because the load order is in doubt
|
|
(this file always precedes them), but because a dozen test harnesses load one panel without
|
|
the action bar behind it, and an unguarded call would abort the rest of that OnShow. Same
|
|
posture as UiPanels.xml's `CloseMenus and CloseMenus()` and the `if GameTooltip` guards.
|
|
|
|
Structure: the buttons are TOP-LEVEL frames anchored by name into MainMenuBarArtFrame
|
|
(this engine has no cross-file `parent=` attachment — SkillFrame.xml's header comment), then
|
|
seated one frame level above the art by BenillaActionBarArt_SeatAbove (ActionBar.xml) so the
|
|
bar plate doesn't paint over them. Same shape the bag bar next door already uses.
|
|
|
|
SCOPE / real-client divergences (noted, not bugs):
|
|
- EVERY button now opens something. Help was the last "art only, wired the day the panel
|
|
lands" one, and HelpFrame.xml is that panel — its click is `ToggleHelpFrame()` and its
|
|
pushed arm is in UpdateMicroButtons below, exactly as the ref writes both. (Socials went
|
|
live with decision 0668, Main Menu with 0674, Help with the HelpFrame transcription.)
|
|
The bar was deliberately never greyed with the ref's `-Disabled` art while the gap
|
|
lasted: a dead grey button mid-row reads as a broken bar, and it really was one OnClick
|
|
line from live.
|
|
- The "(key)" suffix is LIVE since 0997: `button.binding` carries the binding ACTION
|
|
name (TOGGLECHARACTER0, TOGGLESPELLBOOK, ...) and the tooltip looks the key up through
|
|
GetBindingKey at hover time — the ref MicroButtonTooltipText's own contract, restored
|
|
now that the binding table exists. A genuinely unbound action shows the bare label.
|
|
- The hover is the ref's real two-line GameTooltip_AddNewbieTip (GameTooltip.xml): the label,
|
|
then the button's NEWBIE_TOOLTIP_* explanation, at the default screen corner. An earlier
|
|
note here claimed detailed tips were OFF in 1.12 and open-coded the else branch — the ref
|
|
ships them ON (UIOptionsFrame.lua l.100), so that was a one-line tooltip where the real
|
|
client shows a paragraph. Corrected by decision 0661.
|
|
- TalentMicroButton registers UNIT_LEVEL + PLAYER_ENTERING_WORLD but NOT the ref's
|
|
PLAYER_LEVEL_UP (this client never fires it) — and PLAYER_LEVEL_UP's only other job there
|
|
is SetButtonPulse, which decision 0304 already scoped out ("no microbutton pulse").
|
|
- UpdateTalentButton's re-anchor uses -3 both ways; the ref writes -3 in the XML but -2 in
|
|
the Lua, so a real client nudges the whole row 1 px left the first time it re-anchors at
|
|
level 10. That's a ref typo, not a mechanism — not reproduced.
|
|
- SetButtonState is called without the ref's second "lock" argument (this engine has no
|
|
state lock; the pushed texture already draws from pushed-state OR a live mouse hold, so
|
|
the rendered result is identical for a button nothing else pushes).
|
|
- The keyring button (ref KeyRingButton, `hidden="true"` by default) stays out with the
|
|
keyring container itself.
|
|
-->
|
|
<!-- ── MainMenuBarMicroButton (ref MainMenuBarMicroButtons.xml l.4-18, VERBATIM) ─────────────
|
|
The micro-button base template. Ours declares its buttons directly, so nothing here needed
|
|
it — but an ADDON that adds a micro button inherits this name, and an unresolved
|
|
`inherits=` is silent: no error, just a button with no size, no hit-rect inset and no
|
|
tooltip scripts.
|
|
|
|
Verbatim, and it costs nothing: `GameTooltip_AddNewbieTip` is already ours (GameTooltip.xml)
|
|
and the rest is geometry. The HitRectInsets top=18 is the reference's own — the micro
|
|
buttons overlap the bar art above them, and without it the top third of every addon micro
|
|
button would eat clicks meant for the bar. -->
|
|
<Button name="MainMenuBarMicroButton" virtual="true">
|
|
<Size><AbsDimension x="29" y="58"/></Size>
|
|
<HitRectInsets><AbsInset left="0" right="0" top="18" bottom="0"/></HitRectInsets>
|
|
<Scripts>
|
|
<OnEnter>
|
|
GameTooltip_AddNewbieTip(this.tooltipText, 1.0, 1.0, 1.0, this.newbieText);
|
|
</OnEnter>
|
|
<OnLeave>
|
|
GameTooltip:Hide();
|
|
</OnLeave>
|
|
</Scripts>
|
|
</Button>
|
|
|
|
<Script><![CDATA[
|
|
-- ref GlobalStrings.lua — the eight labels (enUS), in the `X = X or` FALLBACK form: the
|
|
-- app runs the real localized GlobalStrings.lua off the patch chain BEFORE this file
|
|
-- (ui_script/mod.rs load_global_strings), so the installed locale wins and these copies
|
|
-- only fill in for the test harnesses, which load no patch chain. CombatText.xml's shape.
|
|
CHARACTER_BUTTON = CHARACTER_BUTTON or "Character Info"
|
|
SPELLBOOK_ABILITIES_BUTTON = SPELLBOOK_ABILITIES_BUTTON or "Spellbook & Abilities"
|
|
TALENTS_BUTTON = TALENTS_BUTTON or "Talents"
|
|
QUESTLOG_BUTTON = QUESTLOG_BUTTON or "Quest Log"
|
|
SOCIAL_BUTTON = SOCIAL_BUTTON or "Social"
|
|
WORLDMAP_BUTTON = WORLDMAP_BUTTON or "World Map"
|
|
MAINMENU_BUTTON = MAINMENU_BUTTON or "Main Menu"
|
|
HELP_BUTTON = HELP_BUTTON or "Help Request"
|
|
|
|
-- ...and their second lines, ref GlobalStrings.lua l.2722/2766/2768/2758/2765/2788/2747/2739,
|
|
-- verbatim (enUS). 1.12 ships detailed tooltips ON (decision 0661), so every one of these is
|
|
-- part of the default hover, not an opt-in extra.
|
|
NEWBIE_TOOLTIP_CHARACTER = NEWBIE_TOOLTIP_CHARACTER or "Information about your character, including equipment, statistics, skills, and reputation."
|
|
NEWBIE_TOOLTIP_SPELLBOOK = NEWBIE_TOOLTIP_SPELLBOOK or "All of your spells and abilities. To move a spell or ability to your Action Bar, open the Spellbook & Abilities window, left-click that spell or ability, and drag it down to your Action Bar."
|
|
NEWBIE_TOOLTIP_TALENTS = NEWBIE_TOOLTIP_TALENTS or "The array of talents available to enhance and specialize your character."
|
|
NEWBIE_TOOLTIP_QUESTLOG = NEWBIE_TOOLTIP_QUESTLOG or "A list of all the active quests you currently have. You can have up to 20 active quests at one time."
|
|
NEWBIE_TOOLTIP_SOCIAL = NEWBIE_TOOLTIP_SOCIAL or "Information about other people in the game. You can use the Social window to manage your friends list and ignore list, as well as see who is online."
|
|
NEWBIE_TOOLTIP_WORLDMAP = NEWBIE_TOOLTIP_WORLDMAP or "As you explore a zone, more areas of interest will become visible on the world map. You can use left-click to zoom in, or right-click to zoom out."
|
|
NEWBIE_TOOLTIP_MAINMENU = NEWBIE_TOOLTIP_MAINMENU or "Here you can modify your video, sound, and interface settings, or create custom hotkeys. You can also choose to log out or exit the program altogether."
|
|
NEWBIE_TOOLTIP_HELP = NEWBIE_TOOLTIP_HELP or "Through this menu, you can report a bug. You can also use the Help Request menu to talk to one of our Game Masters (GMs) in the game if you have questions or need assistance."
|
|
|
|
-- ref LoadMicroButtonTextures (MainMenuBarMicroButtons.lua l.1-9): the Up/Down/Disabled trio
|
|
-- under one art name plus the shared highlight. `art` is nil for CharacterMicroButton, whose
|
|
-- textures don't follow the pattern (UI-MicroButtonCharacter-*, and no Disabled variant
|
|
-- exists in the archives) — it sets its own.
|
|
-- `newbie` is the ref's per-button `this.newbieText` (set in each button's own OnLoad there —
|
|
-- MainMenuBarMicroButtons.lua l.95 and .xml l.101/127/149/174/193/215); Spellbook is the one
|
|
-- the ref hands to the call site instead, because its label swaps with GetSpellBookState.
|
|
function BenillaMicroButton_OnLoad(button, art, label, binding, newbie)
|
|
button.label = label
|
|
button.binding = binding
|
|
button.newbieText = newbie
|
|
-- Seat over the bar plate (ActionBar.xml's helper, which carries the why). Called
|
|
-- nil-guarded for the same reason BagFrame.xml's two calls are: the shipped load order
|
|
-- always has the bar first, but a test harness may load this file alone — and with no
|
|
-- bar there is nothing to seat above.
|
|
if BenillaActionBarArt_SeatAbove then BenillaActionBarArt_SeatAbove(button) end
|
|
if art then
|
|
local prefix = "Interface\\Buttons\\UI-MicroButton-" .. art
|
|
button:SetNormalTexture(prefix .. "-Up")
|
|
button:SetPushedTexture(prefix .. "-Down")
|
|
button:SetDisabledTexture(prefix .. "-Disabled")
|
|
end
|
|
button:SetHighlightTexture("Interface\\Buttons\\UI-MicroButton-Hilight")
|
|
button:RegisterForClicks("LeftButtonUp", "RightButtonUp")
|
|
end
|
|
|
|
-- ref MicroButtonTooltipText (l.11-18), the LIVE contract since 0997: `button.binding`
|
|
-- is the binding ACTION name and the key resolves through GetBindingKey at hover time
|
|
-- (rendered through the Key Bindings window's display law when it is loaded — the
|
|
-- shipped order always has it; a lone-file harness shows the raw token).
|
|
function BenillaMicroButton_TooltipText(button)
|
|
if button.binding then
|
|
local key = GetBindingKey(button.binding)
|
|
if key then
|
|
if KeyBindings_KeyText then key = KeyBindings_KeyText(key) end
|
|
return button.label .. " " .. NORMAL_FONT_COLOR_CODE .. "(" .. key .. ")" .. FONT_COLOR_CODE_CLOSE
|
|
end
|
|
end
|
|
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)
|
|
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)
|
|
end
|
|
|
|
-- Is a panel up? `getglobal` because every panel this asks about loads AFTER this file —
|
|
-- the first UpdateMicroButtons can land before most of them exist.
|
|
function BenillaMicro_PanelShown(name)
|
|
local frame = getglobal(name)
|
|
return frame ~= nil and frame:IsVisible()
|
|
end
|
|
|
|
function BenillaMicroButton_SetPushed(button, isPushed)
|
|
if not button then return end
|
|
if isPushed then
|
|
button:SetButtonState("PUSHED")
|
|
else
|
|
button:SetButtonState("NORMAL")
|
|
end
|
|
end
|
|
|
|
-- ref UpdateMicroButtons (l.20-84): each button reflects whether its panel is up. The
|
|
-- MainMenu arm is the ref's own six-way test (l.47-58) minus the five frames that don't
|
|
-- exist here — GameMenuFrame is the one that does (decision 0674), and it is the one the
|
|
-- reference lists first. Its keyring arm (l.79-83) still has no frame here.
|
|
--
|
|
-- The Help arm is the ref's l.72-76, live since HelpFrame.xml landed. It calls BACK into
|
|
-- this function from its own OnShow and OnHide, which is the ref's wiring too and is why
|
|
-- the reference's HelpFrame is the one panel that does not need an event to stay in sync.
|
|
function UpdateMicroButtons()
|
|
BenillaMicroButton_SetPushed(CharacterMicroButton, BenillaMicro_PanelShown("CharacterFrame"))
|
|
BenillaMicroButton_SetPushed(SpellbookMicroButton, BenillaMicro_PanelShown("SpellBookFrame"))
|
|
BenillaMicroButton_SetPushed(TalentMicroButton, BenillaMicro_PanelShown("BenillaTalentFrame"))
|
|
BenillaMicroButton_SetPushed(QuestLogMicroButton, BenillaMicro_PanelShown("QuestLogFrame"))
|
|
-- ref l.60-64. Missing since the Socials button went live with decision 0668: the
|
|
-- window opened but its button never read pushed. Spotted while wiring Help, which is
|
|
-- the same arm one line down; fixed here rather than left for a bug report.
|
|
BenillaMicroButton_SetPushed(SocialsMicroButton, BenillaMicro_PanelShown("FriendsFrame"))
|
|
BenillaMicroButton_SetPushed(WorldMapMicroButton, BenillaMicro_PanelShown("WorldMapFrame"))
|
|
BenillaMicroButton_SetPushed(MainMenuMicroButton, BenillaMicro_PanelShown("GameMenuFrame"))
|
|
BenillaMicroButton_SetPushed(HelpMicroButton, BenillaMicro_PanelShown("HelpFrame"))
|
|
end
|
|
|
|
-- ref CharacterMicroButton_SetPushed/_SetNormal (l.109-117): the portrait shifts its window
|
|
-- and dims while the button is down. The window is a TexCoord crop of the SAME "player"
|
|
-- portrait bake the unit frame samples (SetPortraitTexture below) — the round stencil lives
|
|
-- in the bake's own UV space, so cropping it yields the ref's rectangular slice of a masked
|
|
-- face rather than an ellipse fitted to this 18x25 region.
|
|
function CharacterMicroButton_SetPushed()
|
|
MicroButtonPortrait:SetTexCoord(0.2666, 0.8666, 0, 0.8333)
|
|
MicroButtonPortrait:SetAlpha(0.5)
|
|
end
|
|
|
|
function CharacterMicroButton_SetNormal()
|
|
MicroButtonPortrait:SetTexCoord(0.2, 0.8, 0.0666, 0.9)
|
|
MicroButtonPortrait:SetAlpha(1.0)
|
|
end
|
|
|
|
-- ref CharacterMicroButton's OnUpdate (its XML l.55-61) drives the portrait off the live
|
|
-- button state — which is what makes the face dim mid-mouse-hold, a thing UpdateMicroButtons
|
|
-- can't see. Transcribed, but EDGE-TRIGGERED: the ref re-applies both setters every frame;
|
|
-- there is no reason to re-push identical TexCoord/alpha 60x a second.
|
|
function CharacterMicroButton_OnUpdate(button)
|
|
local pushed = (button:GetButtonState() == "PUSHED")
|
|
if pushed ~= button.portraitPushed then
|
|
button.portraitPushed = pushed
|
|
if pushed then
|
|
CharacterMicroButton_SetPushed()
|
|
else
|
|
CharacterMicroButton_SetNormal()
|
|
end
|
|
end
|
|
end
|
|
|
|
function CharacterMicroButton_OnLoad(button)
|
|
-- The player's face, from the same portrait slot the unit frame binds (portrait/mod.rs
|
|
-- keeps the "player" entry live across re-bakes, so unlike the ref there is no
|
|
-- UNIT_PORTRAIT_UPDATE re-bind to register — the binding is by token, not by handle).
|
|
SetPortraitTexture(MicroButtonPortrait, "player")
|
|
button:SetNormalTexture("Interface\\Buttons\\UI-MicroButtonCharacter-Up")
|
|
button:SetPushedTexture("Interface\\Buttons\\UI-MicroButtonCharacter-Down")
|
|
BenillaMicroButton_OnLoad(button, nil, CHARACTER_BUTTON, "TOGGLECHARACTER0", NEWBIE_TOOLTIP_CHARACTER)
|
|
end
|
|
|
|
-- ref UpdateTalentButton (l.133-141): no talents before level 10, so the button goes away
|
|
-- and the row closes up behind it. Guarded on BOTH frames: it re-anchors the quest-log
|
|
-- button, which is created after the talent one, so the very first call has to be able to
|
|
-- land before the row is fully built. (`UnitLevel` answers 0, never nil, for a unit the
|
|
-- client hasn't got yet — so pre-login the button is simply hidden until the level lands.)
|
|
function UpdateTalentButton()
|
|
if not TalentMicroButton or not QuestLogMicroButton then return end
|
|
if UnitLevel("player") < 10 then
|
|
TalentMicroButton:Hide()
|
|
QuestLogMicroButton:SetPoint("BOTTOMLEFT", "TalentMicroButton", "BOTTOMLEFT", 0, 0)
|
|
else
|
|
TalentMicroButton:Show()
|
|
QuestLogMicroButton:SetPoint("BOTTOMLEFT", "TalentMicroButton", "BOTTOMRIGHT", -3, 0)
|
|
end
|
|
end
|
|
|
|
function TalentMicroButton_OnLoad(button)
|
|
BenillaMicroButton_OnLoad(button, "Talents", TALENTS_BUTTON, "TOGGLETALENTS", NEWBIE_TOOLTIP_TALENTS)
|
|
button:RegisterEvent("UNIT_LEVEL")
|
|
button:RegisterEvent("PLAYER_ENTERING_WORLD")
|
|
end
|
|
|
|
function TalentMicroButton_OnEvent()
|
|
-- UNIT_LEVEL names its unit in arg1; every other unit's ding is none of our business.
|
|
if event == "UNIT_LEVEL" and arg1 ~= "player" then return end
|
|
UpdateTalentButton()
|
|
end
|
|
]]></Script>
|
|
|
|
<!-- ref MainMenuBarMicroButton (l.4-19): 29x58, with the top 18 inset out of the HIT rect — the
|
|
art only fills the lower ~40 px (verified against the 32x64 BLPs: the top ~22/64 rows are
|
|
fully transparent), and without the inset that empty header would eat hover and clicks
|
|
aimed at the bar's XP strip and the sliver of world above it. -->
|
|
<Button name="BenillaMicroButtonTemplate" virtual="true">
|
|
<Size><AbsDimension x="29" y="58"/></Size>
|
|
<HitRectInsets><AbsInset left="0" right="0" top="18" bottom="0"/></HitRectInsets>
|
|
<Scripts>
|
|
<OnEnter>BenillaMicroButton_OnEnter(self)</OnEnter>
|
|
<OnLeave>if GameTooltip then GameTooltip:Hide() end</OnLeave>
|
|
</Scripts>
|
|
</Button>
|
|
|
|
<!-- ref CharacterMicroButton (l.20-63): the row's head, at the art frame's BOTTOMLEFT +(552,2).
|
|
MicroButtonPortrait is the ref's own global name (not $parent-prefixed), 18x25 hung from the
|
|
button's TOP -28. -->
|
|
<Button name="CharacterMicroButton" inherits="BenillaMicroButtonTemplate" parent="MainMenuBarArtFrame">
|
|
<Anchors>
|
|
<Anchor point="BOTTOMLEFT" relativeTo="MainMenuBarArtFrame" relativePoint="BOTTOMLEFT"><Offset><AbsDimension x="552" y="2"/></Offset></Anchor>
|
|
</Anchors>
|
|
<Layers>
|
|
<Layer level="OVERLAY">
|
|
<Texture name="MicroButtonPortrait">
|
|
<Size><AbsDimension x="18" y="25"/></Size>
|
|
<Anchors><Anchor point="TOP"><Offset><AbsDimension x="0" y="-28"/></Offset></Anchor></Anchors>
|
|
<TexCoords left="0.2" right="0.8" top="0.0666" bottom="0.9"/>
|
|
</Texture>
|
|
</Layer>
|
|
</Layers>
|
|
<Scripts>
|
|
<OnLoad>CharacterMicroButton_OnLoad(self)</OnLoad>
|
|
<OnClick>ToggleCharacter("PaperDollFrame")</OnClick>
|
|
<OnUpdate>CharacterMicroButton_OnUpdate(self)</OnUpdate>
|
|
</Scripts>
|
|
</Button>
|
|
|
|
<Button name="SpellbookMicroButton" inherits="BenillaMicroButtonTemplate" parent="MainMenuBarArtFrame">
|
|
<Anchors>
|
|
<Anchor point="BOTTOMLEFT" relativeTo="CharacterMicroButton" relativePoint="BOTTOMRIGHT"><Offset><AbsDimension x="-3" y="0"/></Offset></Anchor>
|
|
</Anchors>
|
|
<Scripts>
|
|
<OnLoad>BenillaMicroButton_OnLoad(self, "Spellbook", SPELLBOOK_ABILITIES_BUTTON, "TOGGLESPELLBOOK", NEWBIE_TOOLTIP_SPELLBOOK)</OnLoad>
|
|
<OnClick>ToggleSpellBook(BOOKTYPE_SPELL)</OnClick>
|
|
</Scripts>
|
|
</Button>
|
|
|
|
<Button name="TalentMicroButton" inherits="BenillaMicroButtonTemplate" parent="MainMenuBarArtFrame">
|
|
<Anchors>
|
|
<Anchor point="BOTTOMLEFT" relativeTo="SpellbookMicroButton" relativePoint="BOTTOMRIGHT"><Offset><AbsDimension x="-3" y="0"/></Offset></Anchor>
|
|
</Anchors>
|
|
<Scripts>
|
|
<OnLoad>TalentMicroButton_OnLoad(self)</OnLoad>
|
|
<OnEvent>TalentMicroButton_OnEvent()</OnEvent>
|
|
<OnClick>ToggleTalentFrame()</OnClick>
|
|
</Scripts>
|
|
</Button>
|
|
|
|
<Button name="QuestLogMicroButton" inherits="BenillaMicroButtonTemplate" parent="MainMenuBarArtFrame">
|
|
<Anchors>
|
|
<Anchor point="BOTTOMLEFT" relativeTo="TalentMicroButton" relativePoint="BOTTOMRIGHT"><Offset><AbsDimension x="-3" y="0"/></Offset></Anchor>
|
|
</Anchors>
|
|
<Scripts>
|
|
<!-- The row's initial talent-gate pass runs here, not in TalentMicroButton_OnLoad: this
|
|
is the button UpdateTalentButton re-anchors, so it must already exist. (The ref gets
|
|
its first pass from PLAYER_ENTERING_WORLD, which we register too — this just means
|
|
the row is right before any event lands, e.g. under the capture harness.) -->
|
|
<OnLoad>BenillaMicroButton_OnLoad(self, "Quest", QUESTLOG_BUTTON, "TOGGLEQUESTLOG", NEWBIE_TOOLTIP_QUESTLOG); UpdateTalentButton()</OnLoad>
|
|
<OnClick>ToggleQuestLog()</OnClick>
|
|
</Scripts>
|
|
</Button>
|
|
|
|
<Button name="SocialsMicroButton" inherits="BenillaMicroButtonTemplate" parent="MainMenuBarArtFrame">
|
|
<Anchors>
|
|
<Anchor point="BOTTOMLEFT" relativeTo="QuestLogMicroButton" relativePoint="BOTTOMRIGHT"><Offset><AbsDimension x="-3" y="0"/></Offset></Anchor>
|
|
</Anchors>
|
|
<Scripts>
|
|
<OnLoad>BenillaMicroButton_OnLoad(self, "Socials", SOCIAL_BUTTON, "TOGGLESOCIAL", NEWBIE_TOOLTIP_SOCIAL)</OnLoad>
|
|
<OnClick>ToggleFriendsFrame(1)</OnClick>
|
|
</Scripts>
|
|
</Button>
|
|
|
|
<Button name="WorldMapMicroButton" inherits="BenillaMicroButtonTemplate" parent="MainMenuBarArtFrame">
|
|
<Anchors>
|
|
<Anchor point="BOTTOMLEFT" relativeTo="SocialsMicroButton" relativePoint="BOTTOMRIGHT"><Offset><AbsDimension x="-3" y="0"/></Offset></Anchor>
|
|
</Anchors>
|
|
<Scripts>
|
|
<OnLoad>BenillaMicroButton_OnLoad(self, "World", WORLDMAP_BUTTON, "TOGGLEWORLDMAP", NEWBIE_TOOLTIP_WORLDMAP)</OnLoad>
|
|
<OnClick>ToggleWorldMap()</OnClick>
|
|
</Scripts>
|
|
</Button>
|
|
|
|
<!-- The game menu (decision 0674). `ToggleGameMenu(1)` is the ref's own OnClick — the argument
|
|
is what makes a CLICK a plain toggle (close it, or close everything and open it) instead of
|
|
the ESC key's one-eater-per-press ladder; UiPanels.xml has both halves. -->
|
|
<Button name="MainMenuMicroButton" inherits="BenillaMicroButtonTemplate" parent="MainMenuBarArtFrame">
|
|
<Anchors>
|
|
<Anchor point="BOTTOMLEFT" relativeTo="WorldMapMicroButton" relativePoint="BOTTOMRIGHT"><Offset><AbsDimension x="-3" y="0"/></Offset></Anchor>
|
|
</Anchors>
|
|
<Scripts>
|
|
<OnLoad>BenillaMicroButton_OnLoad(self, "MainMenu", MAINMENU_BUTTON, nil, NEWBIE_TOOLTIP_MAINMENU)</OnLoad>
|
|
<OnClick>ToggleGameMenu(1)</OnClick>
|
|
</Scripts>
|
|
</Button>
|
|
|
|
<!-- The GM help window (HelpFrame.xml). `ToggleHelpFrame()` is the ref's own OnClick
|
|
(ref-MainMenuBarMicroButtons.xml l.217-219) and it is the whole wiring: the toggle takes
|
|
care of the panel manager, and the panel's own OnShow/OnHide call UpdateMicroButtons back
|
|
so this button's pushed state follows it however the window was opened or closed.
|
|
It takes no binding — 1.12 has no TOGGLEHELP action — so the tooltip shows the bare
|
|
label, which is the ref's behaviour for this one too. -->
|
|
<Button name="HelpMicroButton" inherits="BenillaMicroButtonTemplate" parent="MainMenuBarArtFrame">
|
|
<Anchors>
|
|
<Anchor point="BOTTOMLEFT" relativeTo="MainMenuMicroButton" relativePoint="BOTTOMRIGHT"><Offset><AbsDimension x="-3" y="0"/></Offset></Anchor>
|
|
</Anchors>
|
|
<Scripts>
|
|
<OnLoad>BenillaMicroButton_OnLoad(self, "Help", HELP_BUTTON, nil, NEWBIE_TOOLTIP_HELP)</OnLoad>
|
|
<OnClick>ToggleHelpFrame()</OnClick>
|
|
</Scripts>
|
|
</Button>
|
|
</Ui>
|