Files
pfUI/modules/itemcount.lua
T
Brues 3fe072c594 Route hooksecurefunc callers through pfUI.hooksecurefunc; global belongs to ClassicAPI
pfUI's Lua hooksecurefunc lived in pfUI.env and shadowed ClassicAPI's C
global for all pfUI code. Replace it with a thin pfUI.hooksecurefunc shim
that keeps the missing-target no-op our call sites rely on (ClassicAPI
errors on a nil target) and delegates the actual hook to _G.hooksecurefunc.

Migrated all 70 internal call sites (modules/libs/skins) to
pfUI.hooksecurefunc; bare hooksecurefunc now resolves to ClassicAPI's C
version everywhere. Dropped the unused prepend path and the orphaned
pfUI.hooks table.
2026-07-05 14:58:26 -05:00

51 lines
1.8 KiB
Lua

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 or id == HEARTHSTONE_ITEM_ID or C_Item.GetItemUniquenessByID(id) == 1 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
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)
pfUI.hooksecurefunc("SetItemRef", function()
if ItemRefTooltip:HasItem() then
local _, _, id = ItemRefTooltip:GetItem()
if id then AddCounts(ItemRefTooltip, id) end
end
end)
end)