8ad40722a0
Update nameplate coloring. Fix world map blips
107 lines
2.7 KiB
Lua
107 lines
2.7 KiB
Lua
local E, L, V, P, G = unpack(ElvUI)
|
|
local DT = E:GetModule("DataTexts")
|
|
local EE = E:GetModule("ElvUI_Enhanced")
|
|
|
|
local select = select
|
|
local floor = math.floor
|
|
local join = string.join
|
|
|
|
local GetInventoryItemLink = GetInventoryItemLink
|
|
local GetInventorySlotInfo = GetInventorySlotInfo
|
|
local GetItemQualityColor = GetItemQualityColor
|
|
local GetItemInfo = GetItemInfo
|
|
|
|
local displayString = ""
|
|
local lastPanel
|
|
|
|
local slots = {
|
|
{"HeadSlot", HEADSLOT},
|
|
{"NeckSlot", NECKSLOT},
|
|
{"ShoulderSlot", SHOULDERSLOT},
|
|
{"BackSlot", BACKSLOT},
|
|
{"ChestSlot", CHESTSLOT},
|
|
{"WristSlot", WRISTSLOT},
|
|
{"HandsSlot", HANDSSLOT},
|
|
{"WaistSlot", WAISTSLOT},
|
|
{"LegsSlot", LEGSSLOT},
|
|
{"FeetSlot", FEETSLOT},
|
|
{"Finger0Slot", FINGER0SLOT_UNIQUE},
|
|
{"Finger1Slot", FINGER1SLOT_UNIQUE},
|
|
{"Trinket0Slot", TRINKET0SLOT_UNIQUE},
|
|
{"Trinket1Slot", TRINKET1SLOT_UNIQUE},
|
|
{"MainHandSlot", MAINHANDSLOT},
|
|
{"SecondaryHandSlot", SECONDARYHANDSLOT},
|
|
{"RangedSlot", RANGEDSLOT}
|
|
}
|
|
|
|
local levelColors = {
|
|
[0] = {1, 0, 0},
|
|
[1] = {0, 1, 0},
|
|
[2] = {1, 1, 0.5}
|
|
}
|
|
|
|
local function GetItemLvL()
|
|
local total, item = 0, 0
|
|
local itemLink, itemLevel
|
|
|
|
for i = 1, #slots do
|
|
itemLink = GetInventoryItemLink("player", GetInventorySlotInfo(slots[i][1]))
|
|
if itemLink then
|
|
itemLevel = select(4, GetItemInfo(itemLink))
|
|
if itemLevel and itemLevel > 0 then
|
|
item = item + 1
|
|
total = total + itemLevel
|
|
end
|
|
end
|
|
end
|
|
|
|
if total < 1 then
|
|
return "0"
|
|
end
|
|
|
|
return floor(total / item)
|
|
end
|
|
|
|
local function OnEvent(self)
|
|
self.text:SetFormattedText(displayString, L["Item Level"], GetItemLvL())
|
|
lastPanel = self
|
|
end
|
|
|
|
local function OnEnter(self)
|
|
DT:SetupTooltip(self)
|
|
|
|
local avgEquipItemLevel = GetItemLvL()
|
|
|
|
DT.tooltip:AddDoubleLine(L["Item Level"], avgEquipItemLevel, nil, nil, nil, 0, 1, 0)
|
|
DT.tooltip:AddLine(" ")
|
|
|
|
local _, quality, itemLevel
|
|
local color, itemLink
|
|
local r, g, b
|
|
|
|
for i = 1, #slots do
|
|
itemLink = GetInventoryItemLink("player", GetInventorySlotInfo(slots[i][1]))
|
|
if itemLink then
|
|
_, _, quality, itemLevel = GetItemInfo(itemLink)
|
|
r, g, b = GetItemQualityColor(quality)
|
|
|
|
if itemLevel and avgEquipItemLevel then
|
|
color = levelColors[(itemLevel < avgEquipItemLevel - 5 and 0 or (itemLevel > avgEquipItemLevel + 5 and 1 or 2))]
|
|
DT.tooltip:AddDoubleLine(slots[i][2], itemLevel, r, g, b, color[1], color[2], color[3])
|
|
end
|
|
end
|
|
end
|
|
|
|
DT.tooltip:Show()
|
|
end
|
|
|
|
local function ValueColorUpdate(hex)
|
|
displayString = join("", "%s: ", hex, "%d|r")
|
|
|
|
if lastPanel then
|
|
OnEvent(lastPanel)
|
|
end
|
|
end
|
|
E.valueColorUpdateFuncs[ValueColorUpdate] = true
|
|
|
|
DT:RegisterDatatext("Item Level", {"PLAYER_ENTERING_WORLD", "PLAYER_EQUIPMENT_CHANGED", "UNIT_INVENTORY_CHANGED"}, OnEvent, nil, nil, OnEnter, nil, EE:ColorizeSettingName(L["Item Level"])) |