118 lines
3.3 KiB
Lua
Executable File
118 lines
3.3 KiB
Lua
Executable File
local addonName, addon = ...
|
|
local childName = addon['childName']
|
|
local child = addon[childName]
|
|
local db
|
|
local events, curHooks, curTT, curID = {}, {}
|
|
local L = LibStub("AceLocale-3.0"):GetLocale(childName, true)
|
|
local function checkID(itemID)
|
|
if(C_TradeSkillUI and TradeSkillFrame ~= nil and TradeSkillFrame:IsVisible()) then
|
|
local tab = GetMouseFocus()
|
|
local par2 = tab:GetParent()
|
|
local par = par2:GetParent()
|
|
local tooltip = par2.tooltipFrame
|
|
for i = 1, C_TradeSkillUI.GetRecipeNumReagents(par.selectedRecipeID) do
|
|
if(tab.reagentIndex and i==tab.reagentIndex) then
|
|
local recipeItemLink = C_TradeSkillUI.GetRecipeReagentItemLink(par.selectedRecipeID, i)
|
|
itemID = GetItemInfoInstant(recipeItemLink)
|
|
break
|
|
end
|
|
end
|
|
return tonumber(itemID),tooltip
|
|
end
|
|
end
|
|
local function hookIt(self)
|
|
self.zzTT = nil
|
|
end
|
|
function child:setTT(id,tooltip)
|
|
if(not tooltip.zzTT and not curHooks[tooltip]) then
|
|
curHooks[tooltip] = true
|
|
tooltip:HookScript("OnHide", hookIt)
|
|
end
|
|
tooltip.zzTT = true
|
|
curTT = tooltip
|
|
curID = id
|
|
end
|
|
function child:getTT()
|
|
return curID, curTT
|
|
end
|
|
function child:updateTT()
|
|
local id,tip = child:getTT()
|
|
if(tip and tip.zzTT) then
|
|
if(id) then
|
|
tip:SetItemByID(id)
|
|
end
|
|
end
|
|
end
|
|
local function GameTooltip_OnTooltipSetItem(tooltip)
|
|
local _, link = tooltip:GetItem()
|
|
if(not link) then
|
|
return
|
|
end
|
|
local id = GetItemInfoInstant(link)
|
|
if(not id) then
|
|
local tip
|
|
id,tip = checkID(id)
|
|
if(id and tip) then
|
|
tooltip = tip
|
|
end
|
|
end
|
|
if(id)then
|
|
child:setTT(id,tooltip)
|
|
tooltip:AddLine()
|
|
for name,b in pairs(child:Search(id)) do
|
|
local dname, drealm = strsplit(" - ",name)
|
|
local input,sum = child:output(b)
|
|
if(sum>0) then
|
|
tooltip:AddLine(format(L['tooltip_main_string'],child:getIcon(id),dname,sum,child:colorize(table.concat(input,', '),"ffffff")))
|
|
end
|
|
input = nil
|
|
end
|
|
child:specialoutput(tooltip, id)
|
|
if(db['showID']) then
|
|
tooltip:AddLine(format(L['tooltip_id_string'],id))
|
|
end
|
|
end
|
|
tooltip:Show()
|
|
end
|
|
local function GameTooltip_OnTooltipSetItem2(tooltip, tooltipData)
|
|
-- local tooltipData = tooltip:GetTooltipData()
|
|
if(tooltipData and tooltipData.id and tooltipData.type == 0) then -- type -> 0 = item, 1 = spell
|
|
curItem = tooltipData.id
|
|
tooltip.zzInfo = true
|
|
child:setTT(curItem,tooltip)
|
|
tooltip:AddLine()
|
|
for name,b in pairs(child:Search(curItem)) do
|
|
local dname, drealm = strsplit(" - ",name)
|
|
local input,sum = child:output(b)
|
|
if(sum>0) then
|
|
tooltip:AddLine(format(L['tooltip_main_string'],child:getIcon(curItem),dname,sum,child:colorize(table.concat(input,', '),"ffffff")))
|
|
end
|
|
input = nil
|
|
end
|
|
child:specialoutput(tooltip, curItem)
|
|
if(db['showID']) then
|
|
tooltip:AddLine(format(L['tooltip_id_string'],curItem))
|
|
end
|
|
GameTooltip_CalculatePadding(tooltip)
|
|
-- tooltip:Show()
|
|
elseif(tooltipData) then
|
|
|
|
end
|
|
end
|
|
if(TooltipDataProcessor) then
|
|
child.GameTooltip_OnTooltipSetItem = GameTooltip_OnTooltipSetItem2
|
|
TooltipDataProcessor.AddTooltipPostCall(Enum.TooltipDataType.Item, GameTooltip_OnTooltipSetItem2)
|
|
else
|
|
child.GameTooltip_OnTooltipSetItem = GameTooltip_OnTooltipSetItem
|
|
GameTooltip:HookScript("OnTooltipSetItem", GameTooltip_OnTooltipSetItem)
|
|
end
|
|
function events:TRADE_SKILL_LIST_UPDATE(event)
|
|
child:updateTT()
|
|
end
|
|
child:AddEvent(events)
|
|
local init = {
|
|
Setup = function(self)
|
|
db = child['db']
|
|
end
|
|
}
|
|
addon.RegisterCallback(init, format("Init%s", childName), 'Setup') |