You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

113 lines
4.8 KiB

local _, Cell = ...
local F = Cell.funcs
local P = Cell.pixelPerfectFuncs
-----------------------------------------
-- Tooltip
-----------------------------------------
local function CreateTooltip(name, hasIcon)
local tooltip = CreateFrame("GameTooltip", name, nil, "CellTooltipTemplate,BackdropTemplate")
tooltip:SetBackdrop({bgFile = Cell.vars.whiteTexture, edgeFile = Cell.vars.whiteTexture, edgeSize = 1})
tooltip:SetBackdropColor(0.1, 0.1, 0.1, 0.9)
tooltip:SetBackdropBorderColor(Cell:GetAccentColorRGB())
tooltip:SetOwner(UIParent, "ANCHOR_NONE")
if hasIcon then
local iconBG = tooltip:CreateTexture(nil, "BACKGROUND")
tooltip.iconBG = iconBG
iconBG:SetSize(35, 35)
iconBG:SetPoint("TOPRIGHT", tooltip, "TOPLEFT", -1, 0)
iconBG:SetColorTexture(Cell:GetAccentColorRGB())
iconBG:Hide()
local icon = tooltip:CreateTexture(nil, "ARTWORK")
tooltip.icon = icon
P:Point(icon, "TOPLEFT", iconBG, 1, -1)
P:Point(icon, "BOTTOMRIGHT", iconBG, -1, 1)
icon:SetTexCoord(0.08, 0.92, 0.08, 0.92)
icon:Hide()
hooksecurefunc(tooltip, "SetSpellByID", function(self, id, tex)
if tex then
iconBG:Show()
icon:SetTexture(tex)
icon:Show()
end
end)
end
if Cell.isRetail then
tooltip:RegisterEvent("TOOLTIP_DATA_UPDATE")
tooltip:SetScript("OnEvent", function()
-- Interface\FrameXML\GameTooltip.lua line924
tooltip:RefreshData()
end)
end
tooltip:SetScript("OnTooltipCleared", function()
-- reset border color
tooltip:SetBackdropBorderColor(Cell:GetAccentColorRGB())
end)
-- tooltip:SetScript("OnTooltipSetItem", function()
-- -- color border with item quality color
-- tooltip:SetBackdropBorderColor(_G[name.."TextLeft1"]:GetTextColor())
-- end)
tooltip:SetScript("OnHide", function()
-- SetX with invalid data may or may not clear the tooltip's contents.
tooltip:ClearLines()
if hasIcon then
tooltip.iconBG:Hide()
tooltip.icon:Hide()
end
end)
function tooltip:UpdatePixelPerfect()
tooltip:SetBackdrop({bgFile = Cell.vars.whiteTexture, edgeFile = Cell.vars.whiteTexture, edgeSize = P:Scale(1)})
tooltip:SetBackdropColor(0.1, 0.1, 0.1, 0.9)
tooltip:SetBackdropBorderColor(Cell:GetAccentColorRGB())
if hasIcon then
P:Repoint(tooltip.icon)
tooltip.iconBG:SetColorTexture(Cell:GetAccentColorRGB())
end
end
end
CreateTooltip("CellTooltip")
CreateTooltip("CellSpellTooltip", true)
-- CreateTooltip("CellScanningTooltip")
function F:ShowSpellTooltips(tooltip, spellID)
local tooltipInfo = CreateBaseTooltipInfo("GetSpellByID", spellID)
tooltip:ProcessInfo(tooltipInfo)
tooltip:Show()
end
function F:ShowTooltips(anchor, tooltipType, unit, aura, filter)
if not CellDB["general"]["enableTooltips"] or (tooltipType == "unit" and CellDB["general"]["hideTooltipsInCombat"] and InCombatLockdown()) then return end
if CellDB["general"]["tooltipsPosition"][2] == "Default" then
GameTooltip_SetDefaultAnchor(GameTooltip, anchor)
elseif CellDB["general"]["tooltipsPosition"][2] == "Cell" then
GameTooltip:SetOwner(Cell.frames.mainFrame, "ANCHOR_NONE")
GameTooltip:SetPoint(CellDB["general"]["tooltipsPosition"][1], Cell.frames.mainFrame, CellDB["general"]["tooltipsPosition"][3], CellDB["general"]["tooltipsPosition"][4], CellDB["general"]["tooltipsPosition"][5])
elseif CellDB["general"]["tooltipsPosition"][2] == "Unit Button" then
GameTooltip:SetOwner(anchor, "ANCHOR_NONE")
GameTooltip:SetPoint(CellDB["general"]["tooltipsPosition"][1], anchor, CellDB["general"]["tooltipsPosition"][3], CellDB["general"]["tooltipsPosition"][4], CellDB["general"]["tooltipsPosition"][5])
elseif CellDB["general"]["tooltipsPosition"][2] == "Cursor" then
GameTooltip:SetOwner(anchor, "ANCHOR_CURSOR")
elseif CellDB["general"]["tooltipsPosition"][2] == "Cursor Left" then
GameTooltip:SetOwner(anchor, "ANCHOR_CURSOR_LEFT", CellDB["general"]["tooltipsPosition"][4], CellDB["general"]["tooltipsPosition"][5])
elseif CellDB["general"]["tooltipsPosition"][2] == "Cursor Right" then
GameTooltip:SetOwner(anchor, "ANCHOR_CURSOR_RIGHT", CellDB["general"]["tooltipsPosition"][4], CellDB["general"]["tooltipsPosition"][5])
end
if tooltipType == "unit" then
GameTooltip:SetUnit(unit)
elseif tooltipType == "spell" and unit and aura then
-- GameTooltip:SetSpellByID(aura)
GameTooltip:SetUnitAura(unit, aura, filter)
end
end