8ad40722a0
Update nameplate coloring. Fix world map blips
132 lines
3.8 KiB
Lua
132 lines
3.8 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 format, join = string.format, string.join
|
|
|
|
local ContainerIDToInventoryID = ContainerIDToInventoryID
|
|
local GetAuctionItemSubClasses = GetAuctionItemSubClasses
|
|
local GetContainerItemID = GetContainerItemID
|
|
local GetContainerItemLink = GetContainerItemLink
|
|
local GetContainerNumFreeSlots = GetContainerNumFreeSlots
|
|
local GetContainerNumSlots = GetContainerNumSlots
|
|
local GetInventoryItemCount = GetInventoryItemCount
|
|
local GetInventoryItemLink = GetInventoryItemLink
|
|
local GetInventorySlotInfo = GetInventorySlotInfo
|
|
local GetItemCount = GetItemCount
|
|
local GetItemInfo = GetItemInfo
|
|
local GetItemQualityColor = GetItemQualityColor
|
|
|
|
local NUM_BAG_SLOTS = NUM_BAG_SLOTS
|
|
local NUM_BAG_FRAMES = NUM_BAG_FRAMES
|
|
local INVTYPE_AMMO = INVTYPE_AMMO
|
|
|
|
local quiver = select(1, GetAuctionItemSubClasses(8))
|
|
local pouch = select(2, GetAuctionItemSubClasses(8))
|
|
local soulBag = select(2, GetAuctionItemSubClasses(3))
|
|
|
|
local iconString = "|T%s:16:16:0:0:64:64:4:55:4:55|t"
|
|
local displayString = ""
|
|
|
|
local lastPanel
|
|
|
|
local function OnEvent(self)
|
|
local name, count, link
|
|
if E.myclass == "WARLOCK" then
|
|
name = GetItemInfo(6265)
|
|
count = GetItemCount(6265)
|
|
if count > 0 then
|
|
self.text:SetFormattedText(displayString, name, count)
|
|
else
|
|
self.text:SetFormattedText(displayString, name, 0)
|
|
end
|
|
else
|
|
link = GetInventoryItemLink("player", GetInventorySlotInfo("AmmoSlot"))
|
|
count = GetInventoryItemCount("player", GetInventorySlotInfo("AmmoSlot"))
|
|
if link and (count > 0) then
|
|
name = GetItemInfo(link)
|
|
self.text:SetFormattedText(displayString, name, count)
|
|
else
|
|
self.text:SetFormattedText(displayString, INVTYPE_AMMO, 0)
|
|
end
|
|
end
|
|
|
|
lastPanel = self
|
|
end
|
|
|
|
local function OnEnter(self)
|
|
DT:SetupTooltip(self)
|
|
DT.tooltip:AddLine(INVTYPE_AMMO)
|
|
|
|
local r, g, b
|
|
local item, link, count
|
|
local _, name, quality, subclass, equipLoc, texture
|
|
local free, total, used
|
|
|
|
for i = 0, NUM_BAG_FRAMES do
|
|
for j = 1, GetContainerNumSlots(i) do
|
|
item = GetContainerItemID(i, j)
|
|
if item then
|
|
link = GetContainerItemLink(i, j)
|
|
name, _, quality, _, _, _, _, _, equipLoc, texture = GetItemInfo(link)
|
|
count = GetItemCount(link)
|
|
|
|
if equipLoc == "INVTYPE_AMMO" then
|
|
r, g, b = GetItemQualityColor(quality)
|
|
DT.tooltip:AddDoubleLine(join("", format(iconString, texture), " ", name), count, r, g, b)
|
|
end
|
|
end
|
|
end
|
|
end
|
|
|
|
DT.tooltip:AddLine(" ")
|
|
|
|
for i = 1, NUM_BAG_SLOTS do
|
|
link = GetInventoryItemLink("player", ContainerIDToInventoryID(i))
|
|
if link then
|
|
name, _, quality, _, _, _, subclass, _, _, texture = GetItemInfo(link)
|
|
|
|
if subclass == quiver or subclass == pouch or subclass == soulBag then
|
|
r, g, b = GetItemQualityColor(quality)
|
|
|
|
free, total = GetContainerNumFreeSlots(i), GetContainerNumSlots(i)
|
|
used = total - free
|
|
|
|
DT.tooltip:AddLine(subclass)
|
|
DT.tooltip:AddDoubleLine(join("", format(iconString, texture), " ", name), format("%d / %d", used, total), r, g, b)
|
|
end
|
|
end
|
|
end
|
|
|
|
DT.tooltip:Show()
|
|
end
|
|
|
|
local function OnClick(_, btn)
|
|
if btn == "LeftButton" then
|
|
if not E.bags then
|
|
for i = 1, NUM_BAG_SLOTS do
|
|
local link = GetInventoryItemLink("player", ContainerIDToInventoryID(i))
|
|
if link then
|
|
local subclass = select(7, GetItemInfo(link))
|
|
if subclass == quiver or subclass == pouch or subclass == soulBag then
|
|
ToggleBag(i)
|
|
end
|
|
end
|
|
end
|
|
else
|
|
OpenAllBags()
|
|
end
|
|
end
|
|
end
|
|
|
|
local function ValueColorUpdate(hex)
|
|
displayString = join("", "%s: ", hex, "%d|r")
|
|
|
|
if lastPanel ~= nil then
|
|
OnEvent(lastPanel)
|
|
end
|
|
end
|
|
E.valueColorUpdateFuncs[ValueColorUpdate] = true
|
|
|
|
DT:RegisterDatatext(INVTYPE_AMMO, {"PLAYER_ENTERING_WORLD", "BAG_UPDATE", "UNIT_INVENTORY_CHANGED"}, OnEvent, nil, OnClick, OnEnter, nil, EE:ColorizeSettingName(L["Ammo/Shard Counter"])) |