mirror of
https://github.com/brues-code/pfUI.git
synced 2026-09-22 15:46:56 +00:00
23d1ab840c
When the MerchantFrame is not shown, display the item's total vendor sell value on the tooltip. Adds a guard to call SetTooltipMoney(frame, sell * count) if sell > 0 so stacked items show their combined sell price.
174 lines
4.9 KiB
Lua
174 lines
4.9 KiB
Lua
pfUI:RegisterModule("sellvalue", function ()
|
|
local function AddVendorPrices(frame, id, count)
|
|
if not id then return end
|
|
local sell = C_Item.GetItemSellPriceByID(id) or 0
|
|
local buy = pfSellData[id]
|
|
if sell == 0 and not buy then return end
|
|
|
|
if C.tooltip.vendor.showalways == "1" or IsShiftKeyDown() then
|
|
frame:AddLine(" ")
|
|
|
|
if sell > 0 then
|
|
if count > 1 then
|
|
frame:AddDoubleLine(T["Sell"] .. ":", CreateGoldString(sell) .. "|cff555555 // " .. CreateGoldString(sell*count), 1, 1, 1)
|
|
else
|
|
frame:AddDoubleLine(T["Sell"] .. ":", CreateGoldString(sell), 1, 1, 1)
|
|
end
|
|
end
|
|
|
|
if buy then
|
|
if count > 1 then
|
|
frame:AddDoubleLine(T["Buy"] .. ":", CreateGoldString(buy) .. "|cff555555 // " .. CreateGoldString(buy*count), 1, 1, 1)
|
|
else
|
|
frame:AddDoubleLine(T["Buy"] .. ":", CreateGoldString(buy), 1, 1, 1)
|
|
end
|
|
end
|
|
elseif not MerchantFrame:IsShown() and sell > 0 then
|
|
SetTooltipMoney(frame, sell * count)
|
|
end
|
|
frame:Show()
|
|
end
|
|
|
|
hooksecurefunc("SetItemRef", function()
|
|
if IsModifierKeyDown() then return end
|
|
if ItemRefTooltip:HasItem() then
|
|
local _, _, id = ItemRefTooltip:GetItem()
|
|
if id then AddVendorPrices(ItemRefTooltip, id, 1) end
|
|
end
|
|
end)
|
|
|
|
local TooltipHooks = {
|
|
SetLootRollItem = {
|
|
id = GetLootRollItemID,
|
|
count = function(slot)
|
|
local _, _, count = GetLootRollItemInfo(slot)
|
|
return count
|
|
end
|
|
},
|
|
SetLootItem = {
|
|
id = GetLootSlotItemID,
|
|
count = function(slot)
|
|
local _, _, count = GetLootSlotInfo(slot)
|
|
return count
|
|
end
|
|
},
|
|
SetQuestLogItem = {
|
|
id = GetQuestLogItemID,
|
|
count = function(type, index)
|
|
local itemCount, _;
|
|
if type == "choice" then
|
|
_, _, itemCount = GetQuestLogChoiceInfo(index);
|
|
else
|
|
_, _, itemCount = GetQuestLogRewardInfo(index)
|
|
end
|
|
return itemCount
|
|
end,
|
|
},
|
|
SetQuestItem = {
|
|
id = GetQuestItemID,
|
|
count = function(type, index)
|
|
local _, _, count = GetQuestItemInfo(type, index);
|
|
return count
|
|
end,
|
|
},
|
|
SetHyperlink = { id = C_Item.GetItemInfoInstant },
|
|
SetBagItem = {
|
|
id = C_Container.GetContainerItemID,
|
|
count = function(container, slot)
|
|
local _, count = GetContainerItemInfo(container, slot)
|
|
return count
|
|
end,
|
|
},
|
|
SetInboxItem = {
|
|
id = GetInboxItemID,
|
|
count = function(index)
|
|
local _, _, _, count = GetInboxItem(index)
|
|
return count
|
|
end,
|
|
},
|
|
SetSendMailItem = {
|
|
id = function()
|
|
local _, id = GetSendMailItemLink()
|
|
return id
|
|
end,
|
|
count = function()
|
|
local _, _, count = GetSendMailItem()
|
|
return count
|
|
end,
|
|
},
|
|
SetInventoryItem = { id = GetInventoryItemID },
|
|
SetTradeSkillItem = {
|
|
id = function(skillIndex, reagentIndex)
|
|
if reagentIndex then
|
|
return GetTradeSkillReagentItemID(skillIndex, reagentIndex)
|
|
else
|
|
return GetTradeSkillItemID(skillIndex)
|
|
end
|
|
end,
|
|
count = function(skillIndex, reagentIndex)
|
|
if reagentIndex then
|
|
local _, _, itemCount = GetTradeSkillReagentInfo(skillIndex, reagentIndex)
|
|
return itemCount
|
|
else
|
|
return GetTradeSkillNumMade(skillIndex)
|
|
end
|
|
end,
|
|
},
|
|
SetAuctionItem = {
|
|
id = GetAuctionItemLink,
|
|
count = function(viewType, index)
|
|
local _, _, count = GetAuctionItemInfo(viewType, index)
|
|
return count
|
|
end,
|
|
},
|
|
SetAuctionSellItem = { id = GetAuctionSellItemLink },
|
|
SetTradePlayerItem = {
|
|
id = GetTradePlayerItemLink,
|
|
count = function(id)
|
|
local _, _, count = GetTradePlayerItemInfo(id)
|
|
return count
|
|
end,
|
|
},
|
|
SetTradeTargetItem = {
|
|
id = GetTradeTargetItemLink,
|
|
count = function(id)
|
|
local _, _, count = GetTradeTargetItemInfo(id)
|
|
return count
|
|
end,
|
|
},
|
|
SetMerchantItem = {
|
|
id = GetMerchantItemID,
|
|
count = function(index)
|
|
local _, _, _, itemCount = GetMerchantItemInfo(index)
|
|
return itemCount
|
|
end
|
|
},
|
|
SetCraftItem = {
|
|
id = function(recipeIndex, reagentIndex)
|
|
return GetCraftReagentItemID(recipeIndex, reagentIndex)
|
|
end
|
|
},
|
|
SetBuybackItem = {
|
|
id = C_MerchantFrame.GetBuybackItemID,
|
|
count = function(slotIndex)
|
|
local _, _, _, itemCount = GetBuybackItemInfo(slotIndex)
|
|
return itemCount
|
|
end
|
|
}
|
|
}
|
|
|
|
local function makeHook(entry)
|
|
return function(tooltip, arg1, arg2, arg3)
|
|
AddVendorPrices(tooltip, entry.id(arg1, arg2, arg3), entry.count and entry.count(arg1, arg2, arg3) or 1)
|
|
end
|
|
end
|
|
|
|
local function HookTooltip(tooltip)
|
|
for setter, entry in pairs(TooltipHooks) do
|
|
hooksecurefunc(tooltip, setter, makeHook(entry))
|
|
end
|
|
end
|
|
|
|
HookTooltip(GameTooltip)
|
|
end)
|