annotate Modules/PaperDoll.lua @ 102:1e511e9aaca5

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