88 lines
2.6 KiB
Lua
88 lines
2.6 KiB
Lua
local E, L, V, P, G = unpack(select(2, ...)); --Import: Engine, Locales, PrivateDB, ProfileDB, GlobalDB
|
|
local DT = E:GetModule('DataTexts')
|
|
|
|
local _G = _G
|
|
local select = select
|
|
local wipe = wipe
|
|
local format, pairs = format, pairs
|
|
local GetInventoryItemDurability = GetInventoryItemDurability
|
|
local ToggleCharacter = ToggleCharacter
|
|
local InCombatLockdown = InCombatLockdown
|
|
local GetInventoryItemTexture = GetInventoryItemTexture
|
|
local GetInventoryItemLink = GetInventoryItemLink
|
|
local GetMoneyString = GetMoneyString
|
|
|
|
local DURABILITY = DURABILITY
|
|
local REPAIR_COST = REPAIR_COST
|
|
local displayString = DURABILITY..': %s%d%%|r'
|
|
local tooltipString = '%d%%'
|
|
local totalDurability = 0
|
|
local invDurability = {}
|
|
local totalRepairCost
|
|
|
|
local slots = {
|
|
[1] = _G.INVTYPE_HEAD,
|
|
[3] = _G.INVTYPE_SHOULDER,
|
|
[5] = _G.INVTYPE_CHEST,
|
|
[6] = _G.INVTYPE_WAIST,
|
|
[7] = _G.INVTYPE_LEGS,
|
|
[8] = _G.INVTYPE_FEET,
|
|
[9] = _G.INVTYPE_WRIST,
|
|
[10] = _G.INVTYPE_HAND,
|
|
[16] = _G.INVTYPE_WEAPONMAINHAND,
|
|
[17] = _G.INVTYPE_WEAPONOFFHAND,
|
|
}
|
|
|
|
local function OnEvent(self)
|
|
totalDurability = 100
|
|
totalRepairCost = 0
|
|
|
|
wipe(invDurability)
|
|
|
|
for index in pairs(slots) do
|
|
local currentDura, maxDura = GetInventoryItemDurability(index)
|
|
if currentDura and maxDura > 0 then
|
|
local perc = (currentDura/maxDura)*100
|
|
invDurability[index] = perc
|
|
|
|
if perc < totalDurability then
|
|
totalDurability = perc
|
|
end
|
|
|
|
totalRepairCost = totalRepairCost + select(3, E.ScanTooltip:SetInventoryItem('player', index))
|
|
end
|
|
end
|
|
|
|
local r, g, b = E:ColorGradient(totalDurability * .01, 1, .1, .1, 1, 1, .1, .1, 1, .1)
|
|
local hex = E:RGBToHex(r, g, b)
|
|
self.text:SetFormattedText(displayString, hex, totalDurability)
|
|
|
|
if totalDurability <= E.global.datatexts.settings.Durability.percThreshold then
|
|
E:Flash(self, 0.53, true)
|
|
else
|
|
E:StopFlash(self)
|
|
end
|
|
end
|
|
|
|
local function Click()
|
|
if InCombatLockdown() then _G.UIErrorsFrame:AddMessage(E.InfoColor.._G.ERR_NOT_IN_COMBAT) return end
|
|
ToggleCharacter('PaperDollFrame')
|
|
end
|
|
|
|
local function OnEnter()
|
|
DT.tooltip:ClearLines()
|
|
|
|
for slot, durability in pairs(invDurability) do
|
|
DT.tooltip:AddDoubleLine(format('|T%s:14:14:0:0:64:64:4:60:4:60|t %s', GetInventoryItemTexture('player', slot), GetInventoryItemLink('player', slot)), format(tooltipString, durability), 1, 1, 1, E:ColorGradient(durability * 0.01, 1, .1, .1, 1, 1, .1, .1, 1, .1))
|
|
end
|
|
|
|
if totalRepairCost > 0 then
|
|
DT.tooltip:AddLine(' ')
|
|
DT.tooltip:AddDoubleLine(REPAIR_COST, GetMoneyString(totalRepairCost), .6, .8, 1, 1, 1, 1)
|
|
end
|
|
|
|
DT.tooltip:Show()
|
|
end
|
|
|
|
DT:RegisterDatatext('Durability', nil, {'UPDATE_INVENTORY_DURABILITY', 'MERCHANT_SHOW'}, OnEvent, nil, Click, OnEnter, nil, DURABILITY)
|