comparison Modules/PaperDoll.lua @ 93:caded2668701

Curseforge migration and source tree cleaning
author Nenue
date Sun, 01 Jan 2017 18:25:26 -0500
parents 74e714637d6a
children bb38bc0e787f
comparison
equal deleted inserted replaced
92:d41c7dc3012f 93:caded2668701
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 -- Displays the item level and modifications of character sheet equipment, including artifact power 5 -- Displays the item level and modifications of character sheet equipment, including artifact power
6 6 local print = DEVIAN_WORKSPACE and function(...) print('PaperDoll', ...) end or nop
7 local plugin = CreateFrame('Frame', 'VeneerPaper', UIParent) 7
8 local vn, print = LibStub("LibKraken").register(Veneer, plugin) 8 local slot_overlays = {}
9 VeneerPaperDollMixin = {
10 anchorFrame = 'CharacterFrame',
11 anchorPoint = 'TOPLEFT',
12 KnownRelics = {},
13 }
14
15 local relic_slot_paths = {
16 Arcane = {"Relic-Arcane-Slot", [[Interface\Artifacts\Artifacts.BLP]], 72, 72, 0.849609375, 0.919921875, 0.1181640625, 0.1884765625, false, false},
17 Blood = {"Relic-Blood-Slot", [[Interface\Artifacts\Artifacts.BLP]], 72, 72, 0.921875, 0.9921875, 0.1181640625, 0.1884765625, false, false},
18 Fel = {"Relic-Fel-Slot", [[Interface\Artifacts\Artifacts.BLP]], 72, 72, 0.59765625, 0.66796875, 0.572265625, 0.642578125, false, false},
19 Fire = {"Relic-Fire-Slot", [[Interface\Artifacts\Artifacts.BLP]], 72, 72, 0.669921875, 0.740234375, 0.572265625, 0.642578125, false, false},
20 Frost = {"Relic-Frost-Slot", [[Interface\Artifacts\Artifacts.BLP]], 72, 72, 0.7421875, 0.8125, 0.572265625, 0.642578125, false, false},
21 Holy = {"Relic-Holy-Slot", [[Interface\Artifacts\Artifacts.BLP]], 72, 72, 0.814453125, 0.884765625, 0.572265625, 0.642578125, false, false},
22 Iron = {"Relic-Iron-Slot", [[Interface\Artifacts\Artifacts.BLP]], 72, 72, 0.88671875, 0.95703125, 0.572265625, 0.642578125, false, false},
23 Life = {"Relic-Life-Slot", [[Interface\Artifacts\Artifacts.BLP]], 72, 72, 0.59765625, 0.66796875, 0.64453125, 0.71484375, false, false},
24 Shadow = {"Relic-Shadow-Slot", [[Interface\Artifacts\Artifacts.BLP]], 72, 72, 0.59765625, 0.66796875, 0.716796875, 0.787109375, false, false},
25 Water = {"Relic-Water-Slot", [[Interface\Artifacts\Artifacts.BLP]], 72, 72, 0.59765625, 0.66796875, 0.7890625, 0.859375, false, false},
26 Wind = {"Relic-Wind-Slot", [[Interface\Artifacts\Artifacts.BLP]], 72, 72, 0.59765625, 0.66796875, 0.861328125, 0.931640625, false, false},
27 }
28
29 local slots_left = {'TOPLEFT', 'TOPRIGHT', 1, 0, 'TOPLEFT', 'BOTTOMLEFT', 0, -1}
30 local slots_right = {'TOPRIGHT', 'TOPLEFT', -1, 0, 'TOPRIGHT', 'BOTTOMRIGHT', 0, -1}
31 local slots_bottomleft = {'BOTTOMRIGHT', 'TOPRIGHT', 0, 1, 'BOTTOMRIGHT', 'TOPRIGHT', 0, 1 }
32 local slots_bottomright = {'BOTTOMLEFT', 'TOPLEFT', 0, -1, 'BOTTOMLEFT', 'TOPLEFT', 0, 1}
9 33
10 local slot_anchors = { 34 local slot_anchors = {
11 [1] = 'TOPLEFT', 35 [1] = slots_left,
12 [2] = 'TOPLEFT', 36 [2] = slots_left,
13 [3] = 'TOPLEFT', 37 [3] = slots_left,
14 [15] = 'TOPLEFT', 38 [15] = slots_left,
15 [5] = 'TOPLEFT', 39 [5] = slots_left,
16 [9] = 'TOPLEFT', 40 [9] = slots_left,
17 41
18 [10] = 'TOPRIGHT', 42 [10] = slots_right,
19 [6] = 'TOPRIGHT', 43 [6] = slots_right,
20 [7] = 'TOPRIGHT', 44 [7] = slots_right,
21 [8] = 'TOPRIGHT', 45 [8] = slots_right,
22 [11] = 'TOPRIGHT', 46 [11] = slots_right,
23 [12] = 'TOPRIGHT', 47 [12] = slots_right,
24 [13] = 'TOPRIGHT', 48 [13] = slots_right,
25 [14] = 'TOPRIGHT', 49 [14] = slots_right,
26 50
27 [16] = 'BOTTOMRIGHT', 51 [16] = slots_bottomleft,
28 [17] = 'BOTTOMLEFT', 52 [17] = slots_bottomright,
29 } 53 }
30 54
31 local slot_relative = { 55
32 [1] = 'TOPRIGHT', 56 function VeneerPaperDollMixin:OnLoad()
33 [2] = 'TOPRIGHT', 57 hooksecurefunc("PaperDollItemSlotButton_Update", function(...)
34 [3] = 'TOPRIGHT', 58 self:GetSlotButton(PaperDollItemsFrame, ...)
35 [15] = 'TOPRIGHT', 59 end)
36 [5] = 'TOPRIGHT', 60
37 [9] = 'TOPRIGHT', 61 hooksecurefunc("PaperDollFrame_UpdateStats", function(...)
38 62 self:GetStats(PaperDollItemsFrame, ...)
39 [10] = 'TOPLEFT', 63 end)
40 [6] = 'TOPLEFT', 64
41 [7] = 'TOPLEFT', 65 self:RegisterEvent('ADDON_LOADED')
42 [8] = 'TOPLEFT', 66 self:RegisterEvent('INSPECT_READY')
43 [11] = 'TOPLEFT', 67
44 [12] = 'TOPLEFT', 68 self.SocketType = {}
45 [13] = 'TOPLEFT', 69 end
46 [14] = 'TOPLEFT', 70
47 71 function VeneerPaperDollMixin:SetupInspectFrame()
48 [16] = 'TOPRIGHT', 72 hooksecurefunc("InspectPaperDollItemSlotButton_Update", function(...)
49 [17] = 'TOPLEFT', 73 self:GetSlotButton(InspectFrame, ...)
50 } 74 end)
51 local ticker 75 self:RegisterEvent('INSPECT_READY')
52 local vnslot = {} 76 end
53 local pendingSlots = {} 77 function VeneerPaperDollMixin:SetupArtifactUI()
54 78 self:RegisterEvent('ARTIFACT_UPDATE')
55 79 end
56 local GetEquippedArtifactInfo = _G.C_ArtifactUI.GetEquippedArtifactInfo 80
57 local GetCostForPointAtRank = _G.C_ArtifactUI.GetCostForPointAtRank 81 function VeneerPaperDollMixin:Setup()
58 local tooltip = CreateFrame('GameTooltip', 'VeneerTooltip', UIParent, 'GameTooltipTemplate') 82 VeneerData.PaperDoll = VeneerData.PaperDoll or {}
59 local jewel = {} 83 VeneerData.PaperDoll.KnownRelics = VeneerData.PaperDoll.KnownRelics or {}
60 84 self.KnownRelics = VeneerData.PaperDoll.KnownRelics
61 local artifactBar_OnEvent = function (self) 85
62 local itemID, altItemID, name, icon, totalXP, pointsSpent = GetEquippedArtifactInfo() 86 self:RegisterEvent('UNIT_INVENTORY_CHANGED')
87 self:RegisterEvent('PLAYER_EQUIPMENT_CHANGED')
88 self:RegisterEvent('PLAYER_SPECIALIZATION_CHANGED')
89
90 self:MarkForUpdate()
91 end
92
93 function VeneerPaperDollMixin:MarkForUpdate()
94 for frame, overlays in pairs(slot_overlays) do
95 for slot, overlay in pairs(overlays) do
96 if overlay:IsVisible() then
97 overlay:Update()
98 else
99 overlay.isDirty = true
100 end
101 end
102 end
103 end
104
105 function VeneerPaperDollMixin:GetStats()
106 end
107 function VeneerPaperDollMixin:GetSlotButton(panel, frame)
108 print('|cFF00FF88'..self:GetName()..':GetSlotButton()', frame:GetName(), frame:GetID())
109 local slot = frame:GetID()
110 local unit = panel.unit or 'player'
111 if slot_anchors[slot] then
112 slot_overlays[panel] = slot_overlays[panel] or {}
113 local overlay = slot_overlays[panel][slot]
114 if not overlay then
115 overlay = CreateFrame('Frame', 'VeneerPaperDollSlot' .. unit .. slot, frame, 'VeneerPaperDollSlotInfoTemplate')
116 overlay:SetID(slot)
117 slot_overlays[panel][slot] = overlay
118 overlay.checkRelic = frame.checkRelic
119
120 local anchorPoint, relativePoint, dX, dY, statPoint, statRelative, statdX, statdY = unpack(slot_anchors[slot])
121 local offset = 7
122 overlay:SetPoint(anchorPoint, frame, relativePoint, dX * offset, dY * offset)
123 overlay:SetSize(frame:GetWidth()*3, frame:GetHeight())
124
125 local relativeFrame = overlay
126 for i, region in ipairs(overlay.StatsLeft) do
127 region:ClearAllPoints()
128 print(statPoint, relativeFrame, (i == 1) and statPoint or statRelative)
129 region:SetPoint(statPoint, relativeFrame, (i == 1) and statPoint or statRelative, 0, 0)
130 relativeFrame = region
131 end
132 if slot == 16 then
133 overlay.Sockets:ClearAllPoints()
134 overlay.Sockets:SetPoint('BOTTOM', CharacterFrameInsetBg, 'BOTTOM', 0, frame:GetHeight() + 14)
135 overlay.ItemLevel:SetFontObject(VeneerNumberFontLarge)
136 overlay.ItemLevel:ClearAllPoints()
137 overlay.ItemLevel:SetPoint('BOTTOM', overlay.Sockets, 'TOP', 0, 4)
138 end
139
140 print(overlay.Sockets:GetPoint(1))
141 overlay.anchors = slot_anchors[slot]
142 end
143
144 overlay.unit = unit
145 overlay.checkRelic = (unit == 'player' and slot == 16)
146
147
148 if frame.hasItem then
149 overlay.isDirty = true
150 overlay:Show()
151 else
152 overlay:Hide()
153 end
154 end
155 end
156
157
158
159 function VeneerPaperDollMixin:OnEvent(event, arg)
160 print(event, arg)
161 if event == 'ADDON_LOADED' then
162 if IsLoggedIn() and not self.initialized then
163 self:Setup()
164 self.initialized = true
165 end
166
167
168 if arg == 'Blizzard_InspectUI' then
169 self:SetupInspectFrame()
170 end
171 if arg == 'Blizzard_ArtifactUI' then
172 self:SetupArtifactUI()
173 self:MarkForUpdate()
174 end
175 elseif event == 'ARTIFACT_UPDATE' then
176 self:MarkForUpdate()
177 else
178 if (event == 'PLAYER_SPECIALIZATION_CHANGED' or event == 'UNIT_INVENTORY_CHANGED') then
179 if arg ~= 'player' then
180 return
181 end
182 elseif event == 'INSPECT_READY' then
183
184 end
185
186 self:MarkForUpdate()
187
188 end
189 end
190
191
192 VeneerPaperDollSlotMixin = {}
193
194 function VeneerPaperDollSlotMixin:OnLoad()
195 self.SocketText = {}
196 self.SocketType = {}
197 self.SocketLink = {}
198 end
199 function VeneerPaperDollSlotMixin:OnShow()
200 if self.isDirty then
201 self:Update()
202 end
203 end
204 function VeneerPaperDollSlotMixin:OnUpdate()
205 if self.isDirty then
206 --print('|cFF00FF00pushing update for', self:GetID())
207 self:Update()
208 end
209
210 if self.checkRelic then
211 self.tooltipLink = nil
212 for i = 1, 3 do
213 if self.SocketLink[i] and self.Sockets.SocketIcon[i]:IsMouseOver() then
214 self.tooltipLink = self.SocketLink[i]
215 end
216 end
217
218 if self.tooltipLink then
219 if not GameTooltip:IsOwned(self) then
220 GameTooltip:SetOwner(self, 'ANCHOR_CURSOR')
221 GameTooltip:SetHyperlink(self.tooltipLink)
222
223 GameTooltip:Show()
224 end
225 else
226 if GameTooltip:IsOwned(self) then
227 GameTooltip:Hide()
228 end
229 end
230 end
231 end
232
233 function VeneerPaperDollSlotMixin:UpdateRelicInfo()
234
235
236 local itemID = GetInventoryItemID(self.unit, 16)
63 if not itemID then 237 if not itemID then
64 self:Hide()
65 return 238 return
66 end 239 end
67 240 print('|cFF00FFFFRelic Sweep:', itemID)
68 local numRelicSlots = C_ArtifactUI.GetNumRelicSlots() or 0; 241
69 for i = 1, numRelicSlots do 242
70 243 local guid = UnitGUID(self.unit or 'player')
71 end 244 local relicCache = VeneerPaperDoll.KnownRelics[guid] and VeneerPaperDoll.KnownRelics[guid][itemID]
72 245 if VeneerPaperDoll.KnownRelics[guid] then
73 local pointsAvailable = 0 246 for k, v in pairs(VeneerPaperDoll.KnownRelics[guid]) do
74 local nextRankCost = GetCostForPointAtRank(pointsSpent + pointsAvailable) or 0 247 if tonumber(k) and tonumber(k) < 72 then
75 248 VeneerPaperDoll.KnownRelics[guid][k] = nil
76 while totalXP >= nextRankCost do 249 end
77 totalXP = totalXP - nextRankCost 250 end
78 pointsAvailable = pointsAvailable + 1 251 end
79 nextRankCost = GetCostForPointAtRank(pointsSpent + pointsAvailable) or 0 252
80 end 253
81 self.Header:SetText(name) 254 if not relicCache then
82 self.Level:SetText((pointsAvailable >= 1) and (pointsSpent .. ' ('.. pointsAvailable..')') or (pointsSpent)) 255 relicCache = {}
83 self.ProgressText:SetFormattedText("|cFF00FFFF%d|r / %d", totalXP, nextRankCost) 256 VeneerPaperDoll.KnownRelics[guid] = VeneerPaperDoll.KnownRelics[guid] or {}
84 257 VeneerPaperDoll.KnownRelics[guid][itemID] = relicCache
85 self.ProgressBar:SetPoint('TOPRIGHT', self.ProgressBG, 'TOPLEFT', self:GetWidth()*(totalXP/nextRankCost), 0) 258 end
86 self.ProgressBar:SetColorTexture(1,.5,0) 259
87 260 local numRelics = C_ArtifactUI.GetNumRelicSlots()
88 self:Show() 261 local isEquipped = C_ArtifactUI.IsViewedArtifactEquipped()
89 end 262 local tooltip = VeneerPaperDollTooltip
90 263 tooltip:SetOwner(self, 'ANCHOR_NONE')
91 264 self.hasRelicSlots = true
92 local artifactBar = CreateFrame('Frame', 'VnPaperDollArtifact', CharacterModelFrame, 'VeneerStatusBarTemplate') 265 if numRelics and isEquipped then
93 artifactBar:ClearAllPoints() 266 print('Relic Query:', itemID, numRelics)
94 artifactBar:SetHeight(28) 267 self.checkRelic = nil
95 artifactBar:SetPoint('LEFT', CharacterModelFrame, 'LEFT', 30, 0) 268 for i = 1, numRelics do
96 artifactBar:SetPoint('RIGHT', CharacterModelFrame, 'RIGHT', -30, 0) 269 local lockedReason, relicName, relicIcon, relicLink = C_ArtifactUI.GetRelicInfo(i);
97 artifactBar:SetPoint('BOTTOM', CharacterMainHandSlotFrame, 'TOP', 0, 1) 270 local relicType = C_ArtifactUI.GetRelicSlotType(i);
98 artifactBar.ProgressBG:SetColorTexture(0.5, 0.5, 0.5) 271 if relicIcon then
99 artifactBar.Header:Show() 272 tooltip:SetHyperlink(relicLink)
100 artifactBar:RegisterEvent('ARTIFACT_UPDATE') 273 print(tooltip:NumLines())
101 artifactBar:SetScript('OnEvent', artifactBar_OnEvent) 274
102 275 local line1 = _G['VeneerPaperDollTooltipTextLeft2']
103 plugin.artifactBar = artifactBar 276 local line2 = _G['VeneerPaperDollTooltipTextLeft3']
104 print(CharacterMainHandSlotFrame:GetPoint(1)) 277 local text1 = line1 and line1:GetText()
105 print(artifactBar:GetPoint(3)) 278 local text2 = line2 and line2:GetText()
106 279 if text1 or text2 then
107 for i = 1, 3 do 280 self.SocketText[i] = text1:match('Item Level (%d+)') or text2:match('Item Level (%d+)')
108 local relicSlot = CreateFrame('Frame', 'VnPaperDollRelic'..i, artifactBar)
109 relicSlot:SetSize(40,40)
110 relicSlot:SetPoint('BOTTOM', artifactBar, 'TOP', (i-2)*40, 24)
111 relicSlot.relicArt = relicSlot:CreateTexture(nil, 'BACKGROUND')
112 artifactBar['RelicSlot'..i] = relicSlot
113 end
114
115
116 artifactBar:EnableMouse(true)
117 artifactBar:SetScript('OnMouseUp', function()
118 SocketInventoryItem(16)
119 end)
120
121 local UpdateVeneer = function(itemslot, frame)
122 local slot = itemslot:GetID()
123 if itemslot.hasItem then
124 local unit = frame.target.unit or 'player'
125 frame.link = GetInventoryItemLink(unit, slot)
126 tooltip:SetOwner(frame, 'ANCHOR_NONE')
127 tooltip:SetInventoryItem(unit, slot)
128 tooltip:Show()
129 --print(tooltip:NumLines())
130 if tooltip:NumLines() >= 3 then
131
132 local ilvl
133 if _G['VeneerTooltipTextLeft2'] then
134 ilvl = _G['VeneerTooltipTextLeft2']:GetText():match("Item Level (%d+)")
135 --print('l2', ilvl)
136 end
137
138 if _G['VeneerTooltipTextLeft3'] then
139 if not ilvl then
140 ilvl = _G['VeneerTooltipTextLeft3']:GetText():match("Item Level (%d+)")
141 --print('l3', ilvl)
142 end 281 end
143 end 282
144 283 self.SocketInfo[i] = relicIcon
145 if ilvl then 284 self.SocketType[i] = relicType
146 frame.label:SetText(ilvl) 285 self.SocketLink[i] = relicLink
147 end 286 print('storing', i, self.SocketInfo[i], self.SocketText[i], self.SocketType[i], self.SocketLink[i])
148 end 287 else
149 288
150 local quality = GetInventoryItemQuality(unit, slot) 289 self.SocketInfo[i] = "Interface\\CharacterFrame\\TempPortraitAlphaMask"
151 if slot == 16 and quality == LE_ITEM_QUALITY_ARTIFACT then 290 self.SocketType[i] = relicType
152 artifactBar_OnEvent(plugin.artifactBar) 291 self.SocketLink[i] = nil
153 end 292 end
154 293
155 294 relicCache[i] = {self.SocketInfo[i], self.SocketText[i], self.SocketType[i], self.SocketLink[i]}
156 295 end
157 296 end
158 frame:Show() 297
159 else 298 for i = 1, 3 do
160 frame:Hide() 299 if relicCache[i] then
161 end 300 local relicIcon, relicLevel, relicType, relicLink = unpack(relicCache[i])
162 end 301
163 302 print('loading', i, relicIcon, relicLevel, relicType, relicLink)
164 local UpdateNext = function(frame) 303 self.SocketInfo[i] = relicIcon
165 304 self.SocketText[i] = relicLevel
166 plugin.next(function() 305 self.SocketType[i] = relicType
167 print('updating', frame:GetName()) 306 self.SocketLink[i] = relicLink
168 UpdateVeneer(frame:GetParent(), frame) 307 end
169 end) 308 end
170 end 309 end
171 310
172 311 local SocketIcon_Update = function(frame)
173 local UpdateAll = function() 312 end
174 for index, frame in pairs(vnslot) do 313
175 if frame:IsVisible() then 314 function VeneerPaperDollSlotMixin:Update()
176 print('forcing', index, frame:GetName()) 315 local id = self:GetID()
177 UpdateNext(frame) 316
178 end 317 self.SocketInfo = self.SocketInfo or {}
179 end 318 table.wipe(self.SocketInfo)
180 end 319 self.ItemLevel:SetText(nil)
181 320
182 321 local tooltip = VeneerPaperDollTooltip
183 -- PaperDollFrame is separate from InspectUI handlers 322 tooltip:SetOwner(self, 'ANCHOR_NONE')
184 local PaperDollItemSlotButton_Update = function(self) 323 print('refresh', self.unit, id)
185 local name = self:GetName() 324 tooltip:SetInventoryItem(self.unit or 'player', id)
186 local slot = self:GetID() 325 tooltip:Show()
187 if not slot_anchors[slot] then 326
188 return 327 local numLines = tooltip:NumLines()
189 end 328 local numTextures = 0
190 print(self:GetName()) 329 local itemLevel
191 330 local itemLevelLine
192 local frame = _G[name .. 'Veneer'] 331 print('|cFFFFFF00Sockets scan:', numLines)
193 332 for i = 1, numLines do
194 if not frame then 333 local line = _G['VeneerPaperDollTooltipTextLeft'..i]
195 334 local text = line and line:GetText()
196 frame = CreateFrame('Frame', name..'Veneer', self) 335 if text then
197 vnslot[slot] = frame 336 itemLevel = text:match('Item Level (%d+)')
198 337 if itemLevel then
199 frame.label = frame:CreateFontString(nil, 'OVERLAY', 'VeneerNumberFont') 338 self.ItemLevel:SetText(itemLevel)
200 frame.gemslot = {} 339 break
201 340 end
202 341 end
203 frame.target = self 342
204 frame.gemslot = {} 343 local texture = _G['VeneerPaperDollTooltipTexture'..i]
205 frame:SetAllPoints(self) 344 if texture and texture:IsShown() then
206 frame:SetParent(self) 345 numTextures = numTextures + 1
207 frame.label:SetPoint('BOTTOMLEFT', self, 'BOTTOMLEFT', 2, 2) 346 print('picked up socket', numTextures, texture:GetTexture())
208 347 self.SocketInfo[numTextures] = texture:GetTexture()
209 tinsert(pendingSlots, frame) 348 end
210 end 349 end
211 350 if self.checkRelic then
212 UpdateVeneer(self, frame) 351 self:UpdateRelicInfo()
213 352 end
214 end 353
215 354
216 local PaperDollFrame_UpdateStats = function() 355 local relativeIcon
217 356 local socketsWidth = 0
218 end 357 local socketsHeight = 24
219 358 for index, icon in ipairs(self.Sockets.SocketIcon) do
220 359 if self.SocketInfo[index] then
221 360 print('|cFF0088FFsocketInfo|r', index, self.SocketInfo[index])
222 plugin.event = function(self, event, ...) 361 icon:ClearAllPoints()
223 print(self, event, ...) 362
224 363 icon:SetTexture(self.SocketInfo[index])
225 if event == 'PLAYER_EQUIPMENT_CHANGED' then 364 icon:SetSize(16, 16)
226 local slot, hasItem = ... 365 icon:Show()
227 if vnslot[slot] then 366 if index == 1 then
228 UpdateVeneer(vnslot[slot]:GetParent(), vnslot[slot]) 367 icon:SetPoint('LEFT', self.Sockets, 'LEFT', 0, 0)
229 368 socketsWidth = socketsWidth + icon:GetWidth()
230 end 369 socketsHeight = icon:GetHeight()
231 370 else
232 elseif event == 'PLAYER_ENTERING_WORLD' then 371 if id == 16 then
233 UpdateAll() 372 icon:SetPoint('LEFT', relativeIcon, 'RIGHT', 14, 0)
234 373 socketsWidth = socketsWidth + 14
235 end 374 else
236 375 icon:SetPoint('LEFT', relativeIcon, 'RIGHT', 2, 0)
237 end 376 socketsWidth = socketsWidth + 2
238 local artifactBarCreated 377 end
239 plugin.init = function() 378 socketsWidth = socketsWidth + icon:GetWidth()
240 LoadAddOn('Blizzard_ArtifactUI') 379 end
241 end 380
242 381 local label = self.Sockets.SocketLabel[index]
243 --plugin:SetScript('OnEvent', plugin.event) 382 label:ClearAllPoints()
244 plugin:RegisterEvent('PLAYER_EQUIPMENT_CHANGED') 383 label:SetPoint('BOTTOM', icon, 'TOP',0, 2)
245 plugin:RegisterEvent('PLAYER_ENTERING_WORLD') 384 label:SetFontObject(VeneerNumberFont)
246 385 label:SetText(self.SocketText[index])
247 386
248 hooksecurefunc("PaperDollItemSlotButton_Update", PaperDollItemSlotButton_Update) 387 if self.checkRelic then
249 388 local relicAtlasName = ("Relic-%s-Slot"):format(self.SocketType[index]);
250 hooksecurefunc("PaperDollFrame_UpdateStats", PaperDollFrame_UpdateStats) 389 self.Sockets.SocketBg = self.Sockets.SocketBg or {}
390 self.Sockets.SocketBg[index] = self.Sockets.SocketBg[index] or self.Sockets:CreateTexture()
391 self.Sockets.SocketBg[index]:SetAtlas(relicAtlasName)
392 self.Sockets.SocketBg[index]:SetPoint('TOPRIGHT', icon, 'TOPRIGHT', 12, 12)
393 self.Sockets.SocketBg[index]:SetPoint('BOTTOMLEFT', icon, 'BOTTOMLEFT', -12,-12)
394 print('', self.SocketType[index], relicAtlasName)
395
396 socketsHeight = self.Sockets.SocketBg[index]:GetHeight()
397 end
398
399
400 relativeIcon = icon
401 else
402 if self.checkRelic and self.Sockets.SocketBg and self.Sockets.SocketBg[index] then
403 self.Sockets.SocketBg[index]:SetTexture(nil)
404 self.Sockets.SocketLabel[index]:SetText(nil)
405 end
406
407 icon:Hide()
408 end
409
410
411 end
412 self.Sockets:SetWidth(socketsWidth)
413 self.Sockets:SetHeight(socketsHeight)
414
415
416
417
418
419 self.isDirty = nil
420 end