8ad40722a0
Update nameplate coloring. Fix world map blips
109 lines
2.7 KiB
Lua
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) |