Mercurial > wow > buffalo2
comparison Modules/PaperDoll.lua @ 65:4fe16cb3f5d6
- paper doll item levels
author | Nenue |
---|---|
date | Wed, 17 Aug 2016 18:01:42 -0400 |
parents | ba9c13261bb2 |
children | 6ccacc927ef6 |
comparison
equal
deleted
inserted
replaced
64:ba9c13261bb2 | 65:4fe16cb3f5d6 |
---|---|
1 -- Veneer | 1 -- Veneer |
2 -- PaperDoll.lua | 2 -- PaperDoll.lua |
3 -- Created: 8/16/2016 8:18 AM | 3 -- Created: 8/16/2016 8:18 AM |
4 -- %file-revision% | 4 -- %file-revision% |
5 -- | 5 -- Displays item levels by equipment slots |
6 -- Requires tooltip scraping to obtain these numbers, meaning any currently active tooltip will be cleared. | |
6 | 7 |
7 local plugin = CreateFrame('Frame', 'VeneerPaper', UIParent) | 8 local plugin = CreateFrame('Frame', 'VeneerPaper', UIParent) |
8 local vn, print = LibStub("LibKraken").register(VeneerController, plugin) | 9 local vn, print = LibStub("LibKraken").register(VeneerController, plugin) |
9 | 10 |
10 local slot_anchors = { | 11 local slot_anchors = { |
50 } | 51 } |
51 local ticker | 52 local ticker |
52 local vnslot = {} | 53 local vnslot = {} |
53 local pendingSlots = {} | 54 local pendingSlots = {} |
54 | 55 |
56 | |
57 | |
55 local UpdateVeneer = function(itemslot, frame) | 58 local UpdateVeneer = function(itemslot, frame) |
56 local slot = itemslot:GetID() | 59 local slot = itemslot:GetID() |
57 if itemslot.hasItem then | 60 if itemslot.hasItem then |
58 frame.link = GetInventoryItemLink('player', slot) | 61 frame.link = GetInventoryItemLink('player', slot) |
59 --print(frame.link) | 62 --print(frame.link) |
60 local name, link, something, ilevel = GetItemInfo(frame.link) | 63 local name, link, something, ilevel = GetItemInfo(frame.link) |
61 frame.label:SetText(ilevel) | 64 frame.label:SetText(ilevel) |
62 -- todo: test GetExtendedItemInfo() | 65 -- todo: test GetExtendedItemInfo() |
63 | 66 |
64 local lastOwner = GameTooltip:GetOwner() | |
65 print(lastOwner) | |
66 | |
67 GameTooltip:SetOwner(plugin) | 67 GameTooltip:SetOwner(plugin) |
68 GameTooltip:SetInventoryItem('player', slot) | 68 GameTooltip:SetInventoryItem('player', slot) |
69 GameTooltip:Hide() | |
69 | 70 |
70 for i = 1, 3 do | 71 for i = 1, 3 do |
71 local gname = 'gem'..i | 72 local gname = 'gem'..i |
72 if frame[gname] then | 73 if frame[gname] then |
73 frame.gemslot[i] = frame.gemslot[i] or frame:CreateTexture(nil, 'ARTWORK') | 74 frame.gemslot[i] = frame.gemslot[i] or frame:CreateTexture(nil, 'ARTWORK') |
95 local frame = tremove(pendingSlots) | 96 local frame = tremove(pendingSlots) |
96 if frame and frame:IsVisible() then | 97 if frame and frame:IsVisible() then |
97 print('updating', frame:GetName()) | 98 print('updating', frame:GetName()) |
98 UpdateVeneer(frame:GetParent(), frame) | 99 UpdateVeneer(frame:GetParent(), frame) |
99 else | 100 else |
101 | |
100 ticker:Cancel() | 102 ticker:Cancel() |
101 ticker = nil | 103 ticker = nil |
102 end | 104 end |
103 | 105 |
104 end | 106 end |
146 ticker = C_Timer.NewTicker(0, UpdateNext) | 148 ticker = C_Timer.NewTicker(0, UpdateNext) |
147 end | 149 end |
148 end | 150 end |
149 | 151 |
150 | 152 |
151 plugin.event = function(self, event, flag, slot) | 153 plugin.event = function(self, event, ...) |
152 print(self, event, flag, slot) | 154 print(self, event, flag, slot) |
153 | 155 |
156 if event == 'PLAYER_EQUIPMENT_CHANGED' then | |
157 local slot, hasItem = ... | |
158 if vnslot[slot] then | |
159 UpdateVeneer(vnslot[slot]:GetParent(), vnslot[slot]) | |
160 plugin.ticker() | |
161 end | |
154 | 162 |
155 plugin.ticker() | 163 end |
164 | |
156 end | 165 end |
157 plugin:SetScript('OnEvent', plugin.event) | 166 plugin:SetScript('OnEvent', plugin.event) |
158 plugin:RegisterUnitEvent('UNIT_INVENTORY_CHANGED', 'player') | 167 plugin:RegisterEvent('PLAYER_EQUIPMENT_CHANGED') |
159 | 168 |
160 hooksecurefunc("ToggleCharacter", UpdateAll) | 169 hooksecurefunc("ToggleCharacter", function() |
170 if PaperDollFrame:IsVisible() then | |
171 UpdateAll() | |
172 end | |
173 end) | |
161 hooksecurefunc("PaperDollItemSlotButton_Update", PaperDollItemSlotButton_Update) | 174 hooksecurefunc("PaperDollItemSlotButton_Update", PaperDollItemSlotButton_Update) |
162 | 175 |
163 hooksecurefunc(GameTooltip, "SetInventoryItem", function(self, unit, slot) | 176 hooksecurefunc(GameTooltip, "SetInventoryItem", function(self, unit, slot) |
164 if self:GetOwner() == plugin then | 177 if self:GetOwner() == plugin then |
165 if unit == 'player' and vnslot[slot] then | 178 if unit == 'player' and vnslot[slot] then |
166 vnslot[slot].label:SetText(GameTooltipTextLeft3:GetText():match('%d+')) | 179 |
180 local text = GameTooltipTextLeft3:GetText():match('Item Level (%d+)') | |
181 if not text then | |
182 text = GameTooltipTextLeft2:GetText():match('Item Level (%d+)') | |
183 end | |
184 vnslot[slot].label:SetText(text or '???') | |
167 end | 185 end |
168 end | 186 end |
169 end) | 187 end) |
170 | 188 |