This repository has been archived by the owner on Nov 8, 2017. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 0
/
ItemLevelOverlay.lua
executable file
·79 lines (65 loc) · 2.08 KB
/
ItemLevelOverlay.lua
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
local ItemUpgradeInfo = LibStub('LibItemUpgradeInfo-1.0')
local inventorySlotNames = {
"HeadSlot",
"NeckSlot",
"ShoulderSlot",
"BackSlot",
"ChestSlot",
"WristSlot",
"HandsSlot",
"WaistSlot",
"LegsSlot",
"FeetSlot",
"Finger0Slot",
"Finger1Slot",
"Trinket0Slot",
"Trinket1Slot",
"MainHandSlot",
"SecondaryHandSlot"
}
local inventoryItemOverlayCache = {}
local function getInventoryItemLevelFromInventorySlotName(inventorySlotName)
local inventorySlotNumber = select(1, GetInventorySlotInfo(inventorySlotName))
local inventoryItemLink = GetInventoryItemLink("player", inventorySlotNumber)
if inventoryItemLink then
return ItemUpgradeInfo:GetUpgradedItemLevel(inventoryItemLink)
end
end
local function updateItemOverlay(overlayFrame, inventorySlotName, itemLevel)
local cachedInventoryItemOverlay = inventoryItemOverlayCache[inventorySlotName]
if cachedInventoryItemOverlay then
cachedInventoryItemOverlay:SetText(itemLevel)
else
local text = overlayFrame:CreateFontString(nil, "OVERLAY", "NumberFontNormal")
text:SetPoint("TOPLEFT", "Character" .. inventorySlotName, 3, -3)
text:Hide()
text:SetText(itemLevel)
text:Show()
inventoryItemOverlayCache[inventorySlotName] = text
end
end
local function updateItemOverlays(overlayFrame)
for index, inventorySlotName in ipairs(inventorySlotNames) do
local itemLevel = getInventoryItemLevelFromInventorySlotName(inventorySlotName)
updateItemOverlay(overlayFrame, inventorySlotName, itemLevel)
end
end
local function createOverlayFrame()
local overlayFrame = CreateFrame("Frame", nil, PaperDollItemsFrame)
overlayFrame:SetScript("OnShow", function(self)
updateItemOverlays(self)
end)
overlayFrame:SetScript("OnEvent", function(self, event, ...)
if (event == "PLAYER_EQUIPMENT_CHANGED") then
updateItemOverlays(self)
end
end)
overlayFrame:RegisterEvent("PLAYER_EQUIPMENT_CHANGED")
overlayFrame:Show()
return overlayFrame
end
local function initialize()
local overlayFrame = createOverlayFrame()
updateItemOverlays(overlayFrame)
end
initialize()