99 lines
3.1 KiB
Lua
99 lines
3.1 KiB
Lua
|
local E, L, V, P, G = unpack(select(2, ...)); --Import: Engine, Locales, PrivateDB, ProfileDB, GlobalDB
|
||
|
local DT = E:GetModule('DataTexts')
|
||
|
|
||
|
local strjoin = strjoin
|
||
|
local format = format
|
||
|
local GetContainerNumFreeSlots = GetContainerNumFreeSlots
|
||
|
local GetContainerNumSlots = GetContainerNumSlots
|
||
|
local ToggleAllBags = ToggleAllBags
|
||
|
local CURRENCY = CURRENCY
|
||
|
local NUM_BAG_SLOTS = NUM_BAG_SLOTS
|
||
|
local MAX_WATCHED_TOKENS = MAX_WATCHED_TOKENS
|
||
|
local GetBagName = GetBagName
|
||
|
local GetInventoryItemQuality = GetInventoryItemQuality
|
||
|
local GetItemQualityColor = GetItemQualityColor
|
||
|
local GetInventoryItemTexture = GetInventoryItemTexture
|
||
|
local C_CurrencyInfo_GetBackpackCurrencyInfo = C_CurrencyInfo.GetBackpackCurrencyInfo
|
||
|
|
||
|
local displayString, lastPanel = ''
|
||
|
local iconString = '|T%s:14:14:0:0:64:64:4:60:4:60|t %s'
|
||
|
local bagIcon = 'Interface/Buttons/Button-Backpack-Up'
|
||
|
|
||
|
local function OnEvent(self)
|
||
|
lastPanel = self
|
||
|
local free, total, used = 0, 0
|
||
|
for i = 0, NUM_BAG_SLOTS do
|
||
|
free, total = free + GetContainerNumFreeSlots(i), total + GetContainerNumSlots(i)
|
||
|
end
|
||
|
used = total - free
|
||
|
|
||
|
local textFormat = E.global.datatexts.settings.Bags.textFormat
|
||
|
|
||
|
if textFormat == "FREE" then
|
||
|
self.text:SetFormattedText(displayString, L["Bags"]..": ", free)
|
||
|
elseif textFormat == "USED" then
|
||
|
self.text:SetFormattedText(displayString, L["Bags"]..": ", used)
|
||
|
elseif textFormat == "FREE_TOTAL" then
|
||
|
self.text:SetFormattedText(displayString, L["Bags"]..": ", free, total)
|
||
|
else
|
||
|
self.text:SetFormattedText(displayString, L["Bags"]..": ", used, total)
|
||
|
end
|
||
|
end
|
||
|
|
||
|
local function OnClick()
|
||
|
ToggleAllBags()
|
||
|
end
|
||
|
|
||
|
local function OnEnter()
|
||
|
DT.tooltip:ClearLines()
|
||
|
|
||
|
for i = 0, NUM_BAG_SLOTS do
|
||
|
local bagName = GetBagName(i)
|
||
|
if bagName then
|
||
|
local numSlots = GetContainerNumSlots(i)
|
||
|
local freeSlots = GetContainerNumFreeSlots(i)
|
||
|
local usedSlots, sumNum = numSlots - freeSlots, 19 + i
|
||
|
|
||
|
local r2, g2, b2 = E:ColorGradient(usedSlots / numSlots, .1,1,.1, 1,1,.1, 1,.1,.1)
|
||
|
local r, g, b, icon
|
||
|
|
||
|
if i > 0 then
|
||
|
r, g, b = GetItemQualityColor(GetInventoryItemQuality('player', sumNum) or 1)
|
||
|
icon = GetInventoryItemTexture('player', sumNum)
|
||
|
end
|
||
|
|
||
|
DT.tooltip:AddDoubleLine(format(iconString, icon or bagIcon, bagName), format('%d / %d', usedSlots, numSlots), r or 1, g or 1, b or 1, r2, g2, b2)
|
||
|
end
|
||
|
end
|
||
|
|
||
|
for i = 1, MAX_WATCHED_TOKENS do
|
||
|
local info = C_CurrencyInfo_GetBackpackCurrencyInfo(i)
|
||
|
if info then
|
||
|
if i == 1 then
|
||
|
DT.tooltip:AddLine(' ')
|
||
|
DT.tooltip:AddLine(CURRENCY)
|
||
|
DT.tooltip:AddLine(' ')
|
||
|
end
|
||
|
if info.quantity then
|
||
|
DT.tooltip:AddDoubleLine(format(iconString, info.iconFileID, info.name), info.quantity, 1, 1, 1, 1, 1, 1)
|
||
|
end
|
||
|
end
|
||
|
end
|
||
|
|
||
|
DT.tooltip:Show()
|
||
|
end
|
||
|
|
||
|
local function ValueColorUpdate(hex)
|
||
|
local textFormat = E.global.datatexts.settings.Bags.textFormat
|
||
|
if textFormat == "FREE" or textFormat == "USED" then
|
||
|
displayString = strjoin('', '%s', hex, '%d|r')
|
||
|
else
|
||
|
displayString = strjoin('', '%s', hex, '%d/%d|r')
|
||
|
end
|
||
|
|
||
|
if lastPanel then OnEvent(lastPanel) end
|
||
|
end
|
||
|
E.valueColorUpdateFuncs[ValueColorUpdate] = true
|
||
|
|
||
|
DT:RegisterDatatext('Bags', nil, {'BAG_UPDATE'}, OnEvent, nil, OnClick, OnEnter, nil, L["Bags"], nil, ValueColorUpdate)
|