mirror of
https://github.com/brues-code/pfUI.git
synced 2026-10-10 23:50:01 +00:00
add Item Count module
This commit is contained in:
@@ -0,0 +1,53 @@
|
||||
pfUI:RegisterModule("itemcount", function ()
|
||||
-- Walk the 19 equipment slots looking for this item. C_Item.GetItemCount
|
||||
-- bundles "bags + equipped" with no breakdown; we need to subtract the
|
||||
-- equipped count to get a bags-only number.
|
||||
local function CountEquipped(id)
|
||||
local count = 0
|
||||
for slot = INVSLOT_FIRST_EQUIPPED, INVSLOT_LAST_EQUIPPED do
|
||||
if GetInventoryItemID("player", slot) == id then
|
||||
count = count + 1
|
||||
end
|
||||
end
|
||||
return count
|
||||
end
|
||||
|
||||
local function AddCounts(frame, id)
|
||||
if not id then return end
|
||||
|
||||
local total = C_Item.GetItemCount(id, true) -- bags + bank + equipped
|
||||
if total < 1 then return end
|
||||
|
||||
local bagsAndEquipped = C_Item.GetItemCount(id, false)
|
||||
local equipped = CountEquipped(id)
|
||||
local bags = bagsAndEquipped - equipped
|
||||
if bags < 0 then bags = 0 end
|
||||
local bank = total - bagsAndEquipped
|
||||
if bank < 0 then bank = 0 end
|
||||
|
||||
frame:AddLine(" ")
|
||||
if bags > 0 then frame:AddDoubleLine("Bags:", bags, 1, 1, 1, 1, 1, 1) end
|
||||
if bank > 0 then frame:AddDoubleLine("Bank:", bank, 1, 1, 1, 1, 1, 1) end
|
||||
if equipped > 0 then frame:AddDoubleLine("Equipped:", equipped, 1, 1, 1, 1, 1, 1) end
|
||||
frame:AddDoubleLine("Total:", total, 1, 1, 1, 1, 1, 1)
|
||||
frame:Show()
|
||||
end
|
||||
|
||||
-- GameTooltip: piggyback on its OnShow lifecycle. Each tooltip refresh
|
||||
-- hides/shows the parent which propagates Show() to this child frame.
|
||||
pfUI.itemcount = CreateFrame("Frame", "pfItemCountTooltip", GameTooltip)
|
||||
pfUI.itemcount:SetScript("OnShow", function()
|
||||
if GameTooltip:HasItem() then
|
||||
local _, _, id = GameTooltip:GetItem()
|
||||
if id then AddCounts(GameTooltip, id) end
|
||||
end
|
||||
end)
|
||||
|
||||
-- ItemRefTooltip: persistent tooltip from chat link clicks.
|
||||
hooksecurefunc("SetItemRef", function()
|
||||
if ItemRefTooltip:HasItem() then
|
||||
local _, _, id = ItemRefTooltip:GetItem()
|
||||
if id then AddCounts(ItemRefTooltip, id) end
|
||||
end
|
||||
end)
|
||||
end)
|
||||
Reference in New Issue
Block a user