local E, L, V, P, G = unpack(select(2, ...)) --Import: Engine, Locales, PrivateDB, ProfileDB, GlobalDB local DT = E:GetModule("DataTexts") --Lua functions local format, join = string.format, string.join --WoW API / Variables local ContainerIDToInventoryID = ContainerIDToInventoryID local GetBackpackCurrencyInfo = GetBackpackCurrencyInfo local GetContainerNumFreeSlots = GetContainerNumFreeSlots local GetContainerNumSlots = GetContainerNumSlots local GetInventoryItemLink = GetInventoryItemLink local GetItemInfo = GetItemInfo local GetItemQualityColor = GetItemQualityColor local BACKPACK_TOOLTIP = BACKPACK_TOOLTIP local CURRENCY = CURRENCY local MAX_WATCHED_TOKENS = MAX_WATCHED_TOKENS local NUM_BAG_SLOTS = NUM_BAG_SLOTS local currencyString = "|T%s:14:14:0:0:64:64:4:60:4:60|t %s" local displayString = "" local lastPanel local function OnEvent(self) local free, total = 0, 0 for i = 0, NUM_BAG_SLOTS do free, total = free + GetContainerNumFreeSlots(i), total + GetContainerNumSlots(i) end self.text:SetFormattedText(displayString, total - free, total) lastPanel = self end local function OnClick() OpenAllBags() end local function OnEnter(self) DT:SetupTooltip(self) local r, g, b local _, name, quality, link local free, total, used for i = 0, NUM_BAG_SLOTS do free, total = GetContainerNumFreeSlots(i), GetContainerNumSlots(i) used = total - free if i == 0 then DT.tooltip:AddLine(L["Bags"]..":") DT.tooltip:AddDoubleLine(BACKPACK_TOOLTIP, format("%d / %d", used, total), 1, 1, 1) else link = GetInventoryItemLink("player", ContainerIDToInventoryID(i)) if link then name, _, quality = GetItemInfo(link) r, g, b = GetItemQualityColor(quality) DT.tooltip:AddDoubleLine(name, format("%d / %d", used, total), r, g, b) end end end local count, currencyType, icon for i = 1, MAX_WATCHED_TOKENS do name, count, currencyType, icon = GetBackpackCurrencyInfo(i) if name and i == 1 then DT.tooltip:AddLine(" ") DT.tooltip:AddLine(CURRENCY..":") end if name and count then if currencyType == 1 then icon = "Interface\\PVPFrame\\PVP-ArenaPoints-Icon" elseif currencyType == 2 then icon = "Interface\\PVPFrame\\PVP-Currency-"..E.myfaction end DT.tooltip:AddDoubleLine(format(currencyString, icon, name), count, 1, 1, 1) end end DT.tooltip:Show() end local function ValueColorUpdate(hex) displayString = join("", L["Bags"], ": ", hex, "%d/%d|r") if lastPanel ~= nil then OnEvent(lastPanel) end end E.valueColorUpdateFuncs[ValueColorUpdate] = true DT:RegisterDatatext("Bags", {"PLAYER_ENTERING_WORLD", buckets = {{ "BAG_UPDATE", 0.2 }}}, OnEvent, nil, OnClick, OnEnter, nil, L["Bags"])