Files
benilla-octo/crates/benilla-app/assets/ui/GameTooltip.xml
T
SamandClaude Fable 5 3b6975fdef the pet gets its frame, flooded rooms fill, and macros really fire
- the pet gets its own unit frame beside yours, and an Attack order no longer latches as the standing command
- five rooms that always read bone dry hold their water now, the Deeprun Tram's flooded stretches among them
- macros fire through the client's own chat door, and the macro window fits its tabs and scrolls its icon chooser
- the options window grows a Nameplates page and its first dropdown, and the name-display switches apply live in the world

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-08-05 19:03:43 +07:00

437 lines
26 KiB
XML

<Ui>
<!--
The GameTooltip (decision 0274): a real <GameTooltip> engine widget — the line stack,
SetOwner anchor law, auto-size + right-flush, IsOwned, FadeOut, and the OnTooltipCleared/
OnTooltipAddMoney script protocol all live engine-side (benilla-ui script/tooltip.rs); the
line pairs are engine-created named regions (GameTooltipTextLeftN/RightN — real globals,
like the template pairs reference Lua addresses by name). This file declares the INSTANCE:
the plate (backdrop art + colors QUOTED from ref-GameTooltip.xml/.lua, line cites inline),
the money coin trio, and the Lua that is genuinely FrameXML's in the real client
(GameTooltip_SetDefaultAnchor, GameTooltip_AddNewbieTip, SetTooltipMoney) — plus the P0 item-stat renderer, which
moves engine-side in 0274 P1 with the full template feed.
The frame's global name is the real one — GameTooltip — so transcribed reference code
(MinimapCluster's zone hover, UnitFrame's TextLeft1 recolor) works verbatim.
-->
<Script><![CDATA[
-- Tooltip default colours (VERIFIED, ref-GameTooltip.lua l.3-4). The border is white, the
-- background the dark blue tint; applied to the Backdrop in OnLoad exactly as the real
-- GameTooltip_OnLoad does (ref-GameTooltip.lua l.79-82).
TOOLTIP_DEFAULT_COLOR = { r = 1, g = 1, b = 1 }
TOOLTIP_DEFAULT_BACKGROUND_COLOR = { r = 0.09, g = 0.09, b = 0.19 }
-- GameTooltip_SetDefaultAnchor's position math (ref-GameTooltip.lua l.6,73-77): the
-- bottom-right screen corner, -CONTAINER_OFFSET_X - 13 in x, CONTAINER_OFFSET_Y in y.
DEFAULT_TOOLTIP_POSITION = -13
CONTAINER_OFFSET_X = CONTAINER_OFFSET_X or 0
CONTAINER_OFFSET_Y = CONTAINER_OFFSET_Y or 70
-- The shopping-compare pair count (ref GameTooltip.lua l.7; PaperDollFrame's listener
-- bounds arg2 by it).
NUM_SHOPPING_TOOLTIPS = 2
-- "Show Detailed Tooltips" — ref UIOptionsFrame.lua l.100-101, inside UIOptionsFrame_Init:
-- SHOW_NEWBIE_TIPS = "1"; RegisterForSave("SHOW_NEWBIE_TIPS");
-- It is a FrameXML *uvar*, not a CVar, and 1.12 ships it ON — so the detailed second line
-- IS the default reference tooltip, not an opt-in. (An earlier note in this corpus had this
-- backwards; decision 0661.) We ship no UIOptionsFrame and no saved variables, so the ref's
-- initial value is the whole story; the options panel takes ownership of this line the day
-- it lands.
SHOW_NEWBIE_TIPS = "1"
-- The bracketed name out of an item hyperlink "|cff…|Hitem:117|h[Tough Jerky]|h|r"; if the
-- string has no bracket it is already a plain name (the merchant/loot rows hand plain names).
function BenillaTooltip_ItemName(link)
if not link then return nil end
local _, _, name = strfind(link, "%[(.-)%]")
return name or link
end
-- Reuse the quality→colour source the loot window already ships (BENILLA_LOOT_QUALITY_COLORS,
-- LootFrame.xml — itself matching ui_items.rs quality_color / the client's GetItemQualityColor).
-- Unknown/nil quality falls back to common white. All FrameXML files load before any hover
-- fires, so the table is defined by the time this runs regardless of file order.
function BenillaTooltip_QualityColor(quality)
local t = BENILLA_LOOT_QUALITY_COLORS
local c = (t and (t[quality] or t[1])) or { r = 1, g = 1, b = 1 }
return c.r, c.g, c.b
end
-- Copper → "Ng Ms Kc" text for a price/value line (only the non-zero high coins, always the
-- copper). math.floor if present, else a truncation fallback.
function BenillaTooltip_MoneyString(copper)
copper = copper or 0
local mfloor = (math and math.floor) or function(x) return x - (x % 1) end
local g = mfloor(copper / 10000)
local s = mfloor((copper - g * 10000) / 100)
local c = copper - g * 10000 - s * 100
local out = ""
if g > 0 then out = g .. "g " end
if s > 0 or g > 0 then out = out .. s .. "s " end
return out .. c .. "c"
end
-- The default anchor (ref-GameTooltip.lua l.73-77, quoted): owner with no auto-anchor,
-- then the bottom-right screen corner, above the bag row - CONTAINER_OFFSET_X/Y are the
-- manage pass's live values (UIParent.xml). The engine's ANCHOR_NONE drops the previous
-- owner anchor (tooltip.rs SetOwner), so no ClearAllPoints - the ref has none either.
function GameTooltip_SetDefaultAnchor(tooltip, parent)
tooltip:SetOwner(parent, "ANCHOR_NONE")
tooltip:SetPoint("BOTTOMRIGHT", "UIParent", "BOTTOMRIGHT",
-CONTAINER_OFFSET_X + DEFAULT_TOOLTIP_POSITION, CONTAINER_OFFSET_Y)
tooltip.default = 1
end
-- The two-line UI-element tooltip (ref-GameTooltip.lua l.107-123, quoted): a white label,
-- then the long explanation wrapped underneath in NORMAL_FONT_COLOR — the whole reason a
-- 1.12 hover over the ping meter or a micro button is a paragraph and not four words.
-- With detailed tips on it seats at the DEFAULT corner, not beside the owner; with them off
-- it collapses to the bare label at the owner's right. `noNormalText` says "the explanation
-- is the whole tooltip" (the XP bar) — with tips off such a hover shows nothing at all.
--
-- Signature note: the ref reads the firing frame from the `this` global; the corpus
-- convention is to keep the ref NAME and take that frame as a leading parameter
-- (GameTooltip_OnHide(self), GameTooltip_ClearMoney(frame) — same shift). Reference code
-- pasted in verbatim must therefore have the owner threaded in as arg 1.
function GameTooltip_AddNewbieTip(owner, normalText, r, g, b, newbieText, noNormalText)
if SHOW_NEWBIE_TIPS == "1" then
GameTooltip_SetDefaultAnchor(GameTooltip, owner)
if normalText then
GameTooltip:SetText(normalText, r, g, b)
GameTooltip:AddLine(newbieText, NORMAL_FONT_COLOR.r, NORMAL_FONT_COLOR.g, NORMAL_FONT_COLOR.b, 1)
else
GameTooltip:SetText(newbieText, r, g, b, 1, 1)
end
GameTooltip:Show()
else
if not noNormalText then
GameTooltip:SetOwner(owner, "ANCHOR_RIGHT")
GameTooltip:SetText(normalText, r, g, b)
end
end
end
-- ref GameTooltip_OnHide (ref-GameTooltip.lua l.100-104, quoted): the plate colours
-- reset for the next owner and the default-corner flag drops. The ref's OnHide also
-- hides ShoppingTooltip1/2 - that pair lands with the compare-tooltip slice (0274 P4).
function GameTooltip_OnHide(self)
self:SetBackdropBorderColor(TOOLTIP_DEFAULT_COLOR.r, TOOLTIP_DEFAULT_COLOR.g, TOOLTIP_DEFAULT_COLOR.b)
self:SetBackdropColor(TOOLTIP_DEFAULT_BACKGROUND_COLOR.r, TOOLTIP_DEFAULT_BACKGROUND_COLOR.g, TOOLTIP_DEFAULT_BACKGROUND_COLOR.b)
self.default = nil
end
-- The embedded money row — the ref's SetTooltipMoney (ref-GameTooltip.lua l.84-92) over our
-- shared coin kit (BenillaMoney_Set, MerchantFrame.xml): a blank line, the coin trio seated
-- at the money line's LEFT +4, and the money's width as the tooltip's minimum width. The
-- engine fires OnTooltipAddMoney with the computed price (wow-re ui/scratch/tooltip-money.md
-- 0x52b650@0x52e376: the engine computes, FrameXML renders) and this is its handler; Lua
-- call sites (repair cost) call it directly, exactly like the ref's ContainerFrame does.
function SetTooltipMoney(frame, money)
frame:AddLine(" ", 1.0, 1.0, 1.0)
local numLines = frame:NumLines()
local line = getglobal(frame:GetName() .. "TextLeft" .. numLines)
local coin1 = getglobal(frame:GetName() .. "MoneyCoin1")
coin1:ClearAllPoints()
coin1:SetPoint("LEFT", line, "LEFT", 4, 0)
BenillaMoney_Set(frame:GetName() .. "Money", money, true)
local width = 4
for i = 1, 3 do
local c = getglobal(frame:GetName() .. "MoneyCoin" .. i)
if c:IsShown() then width = width + c:GetWidth() + 4 end
end
frame:SetMinimumWidth(width)
end
-- The money row clears whenever the content does (the ref wires GameTooltip_ClearMoney to
-- OnTooltipCleared; the engine fires it on ClearLines/SetOwner/Hide). BenillaMoney_Clear
-- ships in MerchantFrame.xml (the money kit's home) — guard for engine tests that load
-- this file alone; in the app every file is loaded.
function GameTooltip_ClearMoney(frame)
if BenillaMoney_Clear then
BenillaMoney_Clear(frame:GetName() .. "Money")
end
end
-- The item content channels (SetItemById/SetBagItem/SetMerchantItem/SetBuybackItem) are
-- ENGINE methods on the GameTooltip widget (benilla-ui script/tooltip_item.rs, decision
-- 0274 P1): one shared renderer — the real client's own shape (0x52b650 behind 8 of the
-- 9 Set*Item bindings, wow-re ui/scratch/tooltip-money.md; decision 0126's one-renderer
-- law) — over the full item-template store, with the red failed-requirement law and the
-- engine-fired sell-price money row (merchant open + real instance + repair off).
-- The reaction color table (ref ReputationFrame.lua l.3-12, quoted) — the unit-name
-- recolor's palette; guarded so a later reputation window's own definition wins.
FACTION_BAR_COLORS = FACTION_BAR_COLORS or {
[1] = { r = 0.8, g = 0.3, b = 0.22 },
[2] = { r = 0.8, g = 0.3, b = 0.22 },
[3] = { r = 0.75, g = 0.27, b = 0 },
[4] = { r = 0.9, g = 0.7, b = 0 },
[5] = { r = 0, g = 0.6, b = 0.1 },
[6] = { r = 0, g = 0.6, b = 0.1 },
[7] = { r = 0, g = 0.6, b = 0.1 },
[8] = { r = 0, g = 0.6, b = 0.1 },
}
-- GameTooltip_UnitColor (ref-GameTooltip.lua l.8-71): creatures color by reaction;
-- players read white (the ref's own shipping state — its hostile/PvP player branches
-- are the FACTION_BAR_COLORS reds/greens, kept for when PvP states stream). The engine
-- prints the name gold and fires UPDATE_MOUSEOVER_UNIT; this recolors line 1 (the
-- byte-verified split — the name COLOR is FrameXML's, decision 0276).
function GameTooltip_UnitColor(unit)
local reaction = UnitReaction(unit, "player")
if reaction and FACTION_BAR_COLORS[reaction] then
local c = FACTION_BAR_COLORS[reaction]
return c.r, c.g, c.b
end
return 1.0, 1.0, 1.0
end
-- HealthBar_OnValueChanged (ref-HealthBar.lua, quoted; the tooltip bar passes no
-- `smooth`, so the fill reads the ref's plain green).
function HealthBar_OnValueChanged(value, smooth)
if not value then return end
local r, g, b
local min, max = this:GetMinMaxValues()
if value < min or value > max then return end
if (max - min) > 0 then
value = (value - min) / (max - min)
else
value = 0
end
if smooth then
if value > 0.5 then
r = (1.0 - value) * 2
g = 1.0
else
r = 1.0
g = value * 2
end
else
r = 0.0
g = 1.0
end
b = 0.0
this:SetStatusBarColor(r, g, b)
end
function GameTooltip_OnLoad(self)
-- The plate colours (ref GameTooltip_OnLoad, ref-GameTooltip.lua l.79-82).
self:SetBackdropBorderColor(TOOLTIP_DEFAULT_COLOR.r, TOOLTIP_DEFAULT_COLOR.g, TOOLTIP_DEFAULT_COLOR.b)
self:SetBackdropColor(TOOLTIP_DEFAULT_BACKGROUND_COLOR.r, TOOLTIP_DEFAULT_BACKGROUND_COLOR.g, TOOLTIP_DEFAULT_BACKGROUND_COLOR.b)
self:Hide()
end
]]></Script>
<GameTooltip name="GameTooltip" frameStrata="TOOLTIP" hidden="true">
<!-- A default size so the plate resolves the first frame it is shown; the engine's
auto-size pass takes over once the lines are measured (one frame's latency). NO
load-time anchor (the ref instance carries none): every show path seats the plate
first - SetOwner's anchor law for owned hovers, OnTooltipSetDefaultAnchor for world
hovers - and a leftover static anchor is exactly what parked the world tooltip at
screen center when the default-anchor script wasn't wired. -->
<Size><AbsDimension x="120" y="32"/></Size>
<!-- The tooltip plate (ref-GameTooltip.xml l.33-43 / ref-GameTooltipTemplate.xml l.4-14):
UI-Tooltip-Background tiled, UI-Tooltip-Border edge, EdgeSize 16, TileSize 16, insets
5/5/5/5. Colours are set in OnLoad (SetBackdropColor/BorderColor) — no <Color> here, so
the plate starts ctor-white and OnLoad tints it. -->
<Backdrop bgFile="Interface\Tooltips\UI-Tooltip-Background" edgeFile="Interface\Tooltips\UI-Tooltip-Border" tile="true">
<EdgeSize><AbsValue val="16"/></EdgeSize>
<TileSize><AbsValue val="16"/></TileSize>
<BackgroundInsets><AbsInset left="5" right="5" top="5" bottom="5"/></BackgroundInsets>
</Backdrop>
<Layers>
<Layer level="BACKGROUND">
<!-- DELIBERATE deviation (director's call): the real plate is UI-Tooltip-Background's
baked 187/255 alpha (~73% opaque — measured from the BLP; the tint can only
lower it) and read too see-through here. This solid fill in the same navy,
inset to the backdrop's 5px background insets, thickens the plate to ~84%
against the world. The `a` is the knob; delete the region for the raw quote. -->
<Texture name="$parentThicken">
<Anchors>
<Anchor point="TOPLEFT"><Offset><AbsDimension x="5" y="-5"/></Offset></Anchor>
<Anchor point="BOTTOMRIGHT"><Offset><AbsDimension x="-5" y="5"/></Offset></Anchor>
</Anchors>
<Color r="0.09" g="0.09" b="0.19" a="0.4"/>
</Texture>
</Layer>
</Layers>
<Frames>
<!-- The money row's coin trio (the real $parentMoneyFrame — GameTooltipTemplate.xml,
patch.MPQ — as our shared coin-slot shape; MerchantFrame.xml's BenillaMoney_Set
fills them, left-to-right gold-first). Coin1 is re-anchored by SetTooltipMoney to
the money line's LEFT +4 (ref SetTooltipMoney's seat). -->
<Frame name="$parentMoneyCoin1" hidden="true">
<Size><AbsDimension x="13" y="13"/></Size>
<Anchors><Anchor point="TOPLEFT" relativePoint="TOPLEFT"/></Anchors>
<Layers>
<Layer level="OVERLAY">
<Texture name="$parentIcon" file="Interface\MoneyFrame\UI-MoneyIcons">
<Size><AbsDimension x="13" y="13"/></Size>
<Anchors><Anchor point="RIGHT" relativePoint="RIGHT"/></Anchors>
<TexCoords left="0.5" right="0.75" top="0" bottom="1"/>
</Texture>
<FontString name="$parentNum" inherits="NumberFontNormal" justifyH="RIGHT">
<Size><AbsDimension x="20" y="13"/></Size>
<Anchors><Anchor point="RIGHT" relativePoint="RIGHT"><Offset><AbsDimension x="-13" y="0"/></Offset></Anchor></Anchors>
</FontString>
</Layer>
</Layers>
</Frame>
<Frame name="$parentMoneyCoin2" hidden="true">
<Size><AbsDimension x="13" y="13"/></Size>
<Anchors>
<Anchor point="LEFT" relativeTo="$parentMoneyCoin1" relativePoint="RIGHT"><Offset><AbsDimension x="4" y="0"/></Offset></Anchor>
</Anchors>
<Layers>
<Layer level="OVERLAY">
<Texture name="$parentIcon" file="Interface\MoneyFrame\UI-MoneyIcons">
<Size><AbsDimension x="13" y="13"/></Size>
<Anchors><Anchor point="RIGHT" relativePoint="RIGHT"/></Anchors>
<TexCoords left="0.25" right="0.5" top="0" bottom="1"/>
</Texture>
<FontString name="$parentNum" inherits="NumberFontNormal" justifyH="RIGHT">
<Size><AbsDimension x="20" y="13"/></Size>
<Anchors><Anchor point="RIGHT" relativePoint="RIGHT"><Offset><AbsDimension x="-13" y="0"/></Offset></Anchor></Anchors>
</FontString>
</Layer>
</Layers>
</Frame>
<Frame name="$parentMoneyCoin3" hidden="true">
<Size><AbsDimension x="13" y="13"/></Size>
<Anchors>
<Anchor point="LEFT" relativeTo="$parentMoneyCoin2" relativePoint="RIGHT"><Offset><AbsDimension x="4" y="0"/></Offset></Anchor>
</Anchors>
<Layers>
<Layer level="OVERLAY">
<Texture name="$parentIcon" file="Interface\MoneyFrame\UI-MoneyIcons">
<Size><AbsDimension x="13" y="13"/></Size>
<Anchors><Anchor point="RIGHT" relativePoint="RIGHT"/></Anchors>
<TexCoords left="0" right="0.25" top="0" bottom="1"/>
</Texture>
<FontString name="$parentNum" inherits="NumberFontNormal" justifyH="RIGHT">
<Size><AbsDimension x="20" y="13"/></Size>
<Anchors><Anchor point="RIGHT" relativePoint="RIGHT"><Offset><AbsDimension x="-13" y="0"/></Offset></Anchor></Anchors>
</FontString>
</Layer>
</Layers>
</Frame>
<!-- The mouseover health bar (ref-GameTooltipTemplate.xml l.575-597, quoted): 8px
tall, hanging below the plate, UI-TargetingFrame-BarFill, colored by
HealthBar_OnValueChanged. The ENGINE drives min/max/value from the live unit
snapshot (the byte law's HEALTH watcher — SetUnit + every set_unit push). -->
<StatusBar name="$parentStatusBar" hidden="true">
<Size><AbsDimension x="0" y="8"/></Size>
<Anchors>
<Anchor point="TOPLEFT" relativePoint="BOTTOMLEFT"><Offset><AbsDimension x="2" y="-1"/></Offset></Anchor>
<Anchor point="TOPRIGHT" relativePoint="BOTTOMRIGHT"><Offset><AbsDimension x="-2" y="-1"/></Offset></Anchor>
</Anchors>
<Scripts>
<OnValueChanged>HealthBar_OnValueChanged(arg1)</OnValueChanged>
</Scripts>
<BarTexture name="$parentTexture" file="Interface\TargetingFrame\UI-TargetingFrame-BarFill"/>
</StatusBar>
</Frames>
<Scripts>
<OnLoad>
GameTooltip_OnLoad(self)
self:RegisterEvent("UPDATE_MOUSEOVER_UNIT")
</OnLoad>
<!-- The engine renders the mouseover unit's lines gold and fires this; the recolor by
reaction is FrameXML's half (ref-GameTooltip.xml l.12-16, quoted). -->
<OnEvent>
if event == "UPDATE_MOUSEOVER_UNIT" then
getglobal(this:GetName() .. "TextLeft1"):SetTextColor(GameTooltip_UnitColor("mouseover"))
end
</OnEvent>
<!-- The default corner for world hovers (ref-GameTooltipTemplate.xml l.617-619,
quoted): the engine fires this before rendering a mouseover unit/object, and
the handler seats the plate at the screen's bottom-right. THE wiring whose
absence parked the world tooltip on the character. -->
<OnTooltipSetDefaultAnchor>GameTooltip_SetDefaultAnchor(this, UIParent)</OnTooltipSetDefaultAnchor>
<!-- ref GameTooltip.xml OnHide (l.18-22, quoted): the color reset + the compare pair
drops with its anchor host. -->
<OnHide>
GameTooltip_OnHide(this)
ShoppingTooltip1:Hide()
ShoppingTooltip2:Hide()
</OnHide>
<!-- The engine-fired money protocol (ref-GameTooltipTemplate.xml l.620-625): the engine
computes a price and fires OnTooltipAddMoney(arg1 = copper); OnTooltipCleared fires
whenever the content clears (ClearLines/SetOwner/Hide) and drops the coin row. -->
<OnTooltipAddMoney>SetTooltipMoney(this, arg1)</OnTooltipAddMoney>
<OnTooltipCleared>GameTooltip_ClearMoney(this)</OnTooltipCleared>
</Scripts>
</GameTooltip>
<!-- The shopping-compare pair (ref GameTooltip.xml l.25-26 / ShoppingTooltipTemplate,
GameTooltipTemplate.xml l.628+): two more GameTooltip widgets the engine seats on the
paperdoll slot when SHOW_COMPARE_TOOLTIP fires (CharacterFrame.xml's listener). The
declared TextLeft/Right1-4 pairs are the template's own small-font ladder, faces quoted
verbatim (including its odd GameFontNormal cells) — the engine ADOPTS declared pairs and
clones the last pair's faces for lines it grows past them (tooltip.rs ensure_lines).
Same plate as the main tooltip, including the Thicken deviation (its rationale is on the
GameTooltip instance above); no coin trio — the compare cut ends before money. -->
<GameTooltip name="ShoppingTooltip1" frameStrata="TOOLTIP" hidden="true">
<Size><AbsDimension x="120" y="32"/></Size>
<Backdrop bgFile="Interface\Tooltips\UI-Tooltip-Background" edgeFile="Interface\Tooltips\UI-Tooltip-Border" tile="true">
<EdgeSize><AbsValue val="16"/></EdgeSize>
<TileSize><AbsValue val="16"/></TileSize>
<BackgroundInsets><AbsInset left="5" right="5" top="5" bottom="5"/></BackgroundInsets>
</Backdrop>
<Layers>
<Layer level="BACKGROUND">
<Texture name="$parentThicken">
<Anchors>
<Anchor point="TOPLEFT"><Offset><AbsDimension x="5" y="-5"/></Offset></Anchor>
<Anchor point="BOTTOMRIGHT"><Offset><AbsDimension x="-5" y="5"/></Offset></Anchor>
</Anchors>
<Color r="0.09" g="0.09" b="0.19" a="0.4"/>
</Texture>
</Layer>
<Layer level="ARTWORK">
<FontString name="$parentTextLeft1" inherits="GameFontNormalSmall" hidden="true"/>
<FontString name="$parentTextRight1" inherits="GameFontNormal" hidden="true"/>
<FontString name="$parentTextLeft2" inherits="GameFontNormal" hidden="true"/>
<FontString name="$parentTextRight2" inherits="GameFontHighlightSmall" hidden="true"/>
<FontString name="$parentTextLeft3" inherits="GameFontHighlightSmall" hidden="true"/>
<FontString name="$parentTextRight3" inherits="GameFontHighlightSmall" hidden="true"/>
<FontString name="$parentTextLeft4" inherits="GameTooltipTextSmall" hidden="true"/>
<FontString name="$parentTextRight4" inherits="GameFontHighlightSmall" hidden="true"/>
</Layer>
</Layers>
<Scripts>
<OnLoad>GameTooltip_OnLoad(self)</OnLoad>
</Scripts>
</GameTooltip>
<GameTooltip name="ShoppingTooltip2" frameStrata="TOOLTIP" hidden="true">
<Size><AbsDimension x="120" y="32"/></Size>
<Backdrop bgFile="Interface\Tooltips\UI-Tooltip-Background" edgeFile="Interface\Tooltips\UI-Tooltip-Border" tile="true">
<EdgeSize><AbsValue val="16"/></EdgeSize>
<TileSize><AbsValue val="16"/></TileSize>
<BackgroundInsets><AbsInset left="5" right="5" top="5" bottom="5"/></BackgroundInsets>
</Backdrop>
<Layers>
<Layer level="BACKGROUND">
<Texture name="$parentThicken">
<Anchors>
<Anchor point="TOPLEFT"><Offset><AbsDimension x="5" y="-5"/></Offset></Anchor>
<Anchor point="BOTTOMRIGHT"><Offset><AbsDimension x="-5" y="5"/></Offset></Anchor>
</Anchors>
<Color r="0.09" g="0.09" b="0.19" a="0.4"/>
</Texture>
</Layer>
<Layer level="ARTWORK">
<FontString name="$parentTextLeft1" inherits="GameFontNormalSmall" hidden="true"/>
<FontString name="$parentTextRight1" inherits="GameFontNormal" hidden="true"/>
<FontString name="$parentTextLeft2" inherits="GameFontNormal" hidden="true"/>
<FontString name="$parentTextRight2" inherits="GameFontHighlightSmall" hidden="true"/>
<FontString name="$parentTextLeft3" inherits="GameFontHighlightSmall" hidden="true"/>
<FontString name="$parentTextRight3" inherits="GameFontHighlightSmall" hidden="true"/>
<FontString name="$parentTextLeft4" inherits="GameTooltipTextSmall" hidden="true"/>
<FontString name="$parentTextRight4" inherits="GameFontHighlightSmall" hidden="true"/>
</Layer>
</Layers>
<Scripts>
<OnLoad>GameTooltip_OnLoad(self)</OnLoad>
</Scripts>
</GameTooltip>
</Ui>