Files
coa-elvui/ElvUI_Enhanced/Modules/Tooltip/TooltipIcon.lua
T
Andrew6810 8ad40722a0 Fixes Enhanced character frame
Update nameplate coloring.
Fix world map blips
2022-10-30 16:41:03 -07:00

109 lines
2.7 KiB
Lua

local E, L, V, P, G = unpack(ElvUI)
local TI = E:NewModule("Enhanced_TooltipIcon", "AceHook-3.0")
local _G = _G
local select, type = select, type
local find, match = string.find, string.match
local GetAchievementInfo = GetAchievementInfo
local GetItemIcon = GetItemIcon
local GetSpellInfo = GetSpellInfo
local itemTooltips = {
GameTooltip,
ItemRefTooltip,
ShoppingTooltip1,
ShoppingTooltip2
}
local spellTooltips = {
GameTooltip,
ItemRefTooltip
}
local function AddIcon(self, icon)
if not icon then return end
local title = _G[self:GetName().."TextLeft1"]
local text = title and title:GetText()
if text and not find(text, "|T"..icon) then
title:SetFormattedText("|T%s:30:30:0:0:64:64:5:59:5:59|t %s", icon, text)
end
end
local function ItemIcon(self)
local _, link = self:GetItem()
local icon = link and GetItemIcon(link)
AddIcon(self, icon)
end
local function SpellIcon(self)
local id = self:GetSpell()
if id then
AddIcon(self, select(3, GetSpellInfo(id)))
end
end
local function AchievementIcon(self, link)
if type(link) ~= "string" then return end
local linkType, id = match(link, "^([^:]+):(%d+)")
if id and (linkType == "achievement") then
AddIcon(self, select(10, GetAchievementInfo(id)))
end
end
function TI:ToggleItemsState()
local state = E.db.enhanced.tooltip.tooltipIcon.tooltipIconItems and E.db.enhanced.tooltip.tooltipIcon.enable
for _, tooltip in ipairs(itemTooltips) do
if state then
if not self:IsHooked(tooltip, "OnTooltipSetItem", ItemIcon) then
self:SecureHookScript(tooltip, "OnTooltipSetItem", ItemIcon)
end
else
self:Unhook(tooltip, "OnTooltipSetItem")
end
end
end
function TI:ToggleSpellsState()
local state = E.db.enhanced.tooltip.tooltipIcon.tooltipIconSpells and E.db.enhanced.tooltip.tooltipIcon.enable
for _, tooltip in ipairs(spellTooltips) do
if state then
if not self:IsHooked(tooltip, "OnTooltipSetSpell", SpellIcon) then
self:SecureHookScript(tooltip, "OnTooltipSetSpell", SpellIcon)
end
else
self:Unhook(tooltip, "OnTooltipSetSpell")
end
end
end
function TI:ToggleAchievementsState()
local state = E.db.enhanced.tooltip.tooltipIcon.tooltipIconAchievements and E.db.enhanced.tooltip.tooltipIcon.enable
if state then
if not self:IsHooked(GameTooltip, "SetHyperlink", AchievementIcon) then
self:SecureHook(GameTooltip, "SetHyperlink", AchievementIcon)
end
else
self:Unhook(GameTooltip, "SetHyperlink")
end
end
function TI:Initialize()
if not E.db.enhanced.tooltip.tooltipIcon.enable then return end
self:ToggleItemsState()
self:ToggleSpellsState()
self:ToggleAchievementsState()
end
local function InitializeCallback()
TI:Initialize()
end
E:RegisterModule(TI:GetName(), InitializeCallback)