annotate Modules/PaperDoll.lua @ 105:3992b41c637e

- Fixed a number of relic data retrieval issues
author Nenue
date Sun, 29 Jan 2017 09:54:14 -0500
parents 1e511e9aaca5
children ddfe19d70a34
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 arg == 'Blizzard_InspectUI' then
Nenue@93 166 self:SetupInspectFrame()
Nenue@93 167 end
Nenue@93 168 if arg == 'Blizzard_ArtifactUI' then
Nenue@93 169 self:SetupArtifactUI()
Nenue@93 170 self:MarkForUpdate()
Nenue@93 171 end
Nenue@93 172 elseif event == 'ARTIFACT_UPDATE' then
Nenue@96 173 if artifactSlot then
Nenue@96 174 print('just udpate artifact slot')
Nenue@96 175 artifactSlot:Update(true)
Nenue@96 176 end
Nenue@93 177 else
Nenue@93 178 if (event == 'PLAYER_SPECIALIZATION_CHANGED' or event == 'UNIT_INVENTORY_CHANGED') then
Nenue@93 179 if arg ~= 'player' then
Nenue@93 180 return
Nenue@93 181 end
Nenue@65 182 end
Nenue@93 183 self:MarkForUpdate()
Nenue@65 184 end
Nenue@80 185 end
Nenue@66 186
Nenue@64 187
Nenue@93 188 VeneerPaperDollSlotMixin = {}
Nenue@66 189
Nenue@93 190 function VeneerPaperDollSlotMixin:OnLoad()
Nenue@93 191 self.SocketText = {}
Nenue@93 192 self.SocketType = {}
Nenue@93 193 self.SocketLink = {}
Nenue@93 194 end
Nenue@93 195 function VeneerPaperDollSlotMixin:OnShow()
Nenue@93 196 if self.isDirty then
Nenue@93 197 self:Update()
Nenue@93 198 end
Nenue@93 199 end
Nenue@93 200 function VeneerPaperDollSlotMixin:OnUpdate()
Nenue@93 201 if self.isDirty then
Nenue@93 202 --print('|cFF00FF00pushing update for', self:GetID())
Nenue@93 203 self:Update()
Nenue@93 204 end
Nenue@80 205
Nenue@93 206 if self.checkRelic then
Nenue@93 207 self.tooltipLink = nil
Nenue@93 208 for i = 1, 3 do
Nenue@93 209 if self.SocketLink[i] and self.Sockets.SocketIcon[i]:IsMouseOver() then
Nenue@93 210 self.tooltipLink = self.SocketLink[i]
Nenue@93 211 end
Nenue@93 212 end
Nenue@93 213
Nenue@93 214 if self.tooltipLink then
Nenue@93 215 if not GameTooltip:IsOwned(self) then
Nenue@93 216 GameTooltip:SetOwner(self, 'ANCHOR_CURSOR')
Nenue@93 217 GameTooltip:SetHyperlink(self.tooltipLink)
Nenue@93 218
Nenue@93 219 GameTooltip:Show()
Nenue@93 220 end
Nenue@93 221 else
Nenue@93 222 if GameTooltip:IsOwned(self) then
Nenue@93 223 GameTooltip:Hide()
Nenue@93 224 end
Nenue@93 225 end
Nenue@93 226 end
Nenue@93 227 end
Nenue@93 228
Nenue@93 229 function VeneerPaperDollSlotMixin:UpdateRelicInfo()
Nenue@93 230
Nenue@93 231
Nenue@93 232 local itemID = GetInventoryItemID(self.unit, 16)
Nenue@93 233 if not itemID then
Nenue@93 234 return
Nenue@93 235 end
Nenue@93 236 print('|cFF00FFFFRelic Sweep:', itemID)
Nenue@93 237
Nenue@93 238
Nenue@93 239 local guid = UnitGUID(self.unit or 'player')
Nenue@93 240 local relicCache = VeneerPaperDoll.KnownRelics[guid] and VeneerPaperDoll.KnownRelics[guid][itemID]
Nenue@93 241 if VeneerPaperDoll.KnownRelics[guid] then
Nenue@93 242 for k, v in pairs(VeneerPaperDoll.KnownRelics[guid]) do
Nenue@93 243 if tonumber(k) and tonumber(k) < 72 then
Nenue@93 244 VeneerPaperDoll.KnownRelics[guid][k] = nil
Nenue@93 245 end
Nenue@93 246 end
Nenue@93 247 end
Nenue@93 248
Nenue@93 249
Nenue@93 250 if not relicCache then
Nenue@93 251 relicCache = {}
Nenue@93 252 VeneerPaperDoll.KnownRelics[guid] = VeneerPaperDoll.KnownRelics[guid] or {}
Nenue@93 253 VeneerPaperDoll.KnownRelics[guid][itemID] = relicCache
Nenue@93 254 end
Nenue@93 255
Nenue@93 256 local numRelics = C_ArtifactUI.GetNumRelicSlots()
Nenue@93 257 local isEquipped = C_ArtifactUI.IsViewedArtifactEquipped()
Nenue@93 258 local tooltip = VeneerPaperDollTooltip
Nenue@93 259 tooltip:SetOwner(self, 'ANCHOR_NONE')
Nenue@93 260 self.hasRelicSlots = true
Nenue@93 261 if numRelics and isEquipped then
Nenue@93 262 print('Relic Query:', itemID, numRelics)
Nenue@93 263 for i = 1, numRelics do
Nenue@93 264 local lockedReason, relicName, relicIcon, relicLink = C_ArtifactUI.GetRelicInfo(i);
Nenue@93 265 local relicType = C_ArtifactUI.GetRelicSlotType(i);
Nenue@105 266 print(relicType)
Nenue@105 267 if relicType then
Nenue@105 268 if relicLink then
Nenue@93 269 tooltip:SetHyperlink(relicLink)
Nenue@105 270 print(tooltip:NumLines())
Nenue@93 271
Nenue@105 272 local line1 = _G['VeneerPaperDollTooltipTextLeft2']
Nenue@105 273 local line2 = _G['VeneerPaperDollTooltipTextLeft3']
Nenue@105 274 local text1 = line1 and line1:GetText()
Nenue@105 275 local text2 = line2 and line2:GetText()
Nenue@105 276 if text1 or text2 then
Nenue@105 277 self.SocketText[i] = text1:match('Item Level (%d+)') or text2:match('Item Level (%d+)')
Nenue@105 278 end
Nenue@93 279 end
Nenue@93 280
Nenue@105 281 self.SocketInfo[i] = relicIcon or 0
Nenue@93 282 self.SocketType[i] = relicType
Nenue@93 283 self.SocketLink[i] = relicLink
Nenue@93 284 print('storing', i, self.SocketInfo[i], self.SocketText[i], self.SocketType[i], self.SocketLink[i])
Nenue@93 285 else
Nenue@93 286
Nenue@105 287
Nenue@93 288 self.SocketInfo[i] = "Interface\\CharacterFrame\\TempPortraitAlphaMask"
Nenue@105 289 self.SocketType[i] = nil
Nenue@93 290 self.SocketLink[i] = nil
Nenue@93 291 end
Nenue@93 292
Nenue@93 293 relicCache[i] = {self.SocketInfo[i], self.SocketText[i], self.SocketType[i], self.SocketLink[i]}
Nenue@93 294 end
Nenue@105 295 else
Nenue@93 296
Nenue@105 297 for i = 1, 3 do
Nenue@105 298 if relicCache[i] then
Nenue@105 299 local relicIcon, relicText, relicType, relicLink = unpack(relicCache[i])
Nenue@93 300
Nenue@105 301 print('loading', i, relicIcon, relicText, relicType, relicLink)
Nenue@105 302 self.SocketInfo[i] = relicIcon
Nenue@105 303 self.SocketText[i] = relicText
Nenue@105 304 self.SocketType[i] = relicType
Nenue@105 305 self.SocketLink[i] = relicLink
Nenue@105 306 end
Nenue@93 307 end
Nenue@93 308 end
Nenue@93 309 end
Nenue@93 310
Nenue@96 311 function VeneerPaperDollSlotMixin:Update(forced)
Nenue@93 312 local id = self:GetID()
Nenue@93 313
Nenue@93 314 self.SocketInfo = self.SocketInfo or {}
Nenue@93 315 table.wipe(self.SocketInfo)
Nenue@93 316 self.ItemLevel:SetText(nil)
Nenue@93 317
Nenue@93 318 local tooltip = VeneerPaperDollTooltip
Nenue@93 319 tooltip:SetOwner(self, 'ANCHOR_NONE')
Nenue@96 320 if forced then
Nenue@96 321 print('refresh', self.unit, id)
Nenue@96 322 end
Nenue@96 323
Nenue@93 324 tooltip:SetInventoryItem(self.unit or 'player', id)
Nenue@93 325 tooltip:Show()
Nenue@93 326
Nenue@93 327 local numLines = tooltip:NumLines()
Nenue@93 328 local numTextures = 0
Nenue@93 329 local itemLevel
Nenue@93 330 local itemLevelLine
Nenue@96 331 --print('|cFFFFFF00Sockets scan:', numLines)
Nenue@93 332 for i = 1, numLines do
Nenue@93 333 local line = _G['VeneerPaperDollTooltipTextLeft'..i]
Nenue@93 334 local text = line and line:GetText()
Nenue@93 335 if text then
Nenue@93 336 itemLevel = text:match('Item Level (%d+)')
Nenue@93 337 if itemLevel then
Nenue@93 338 self.ItemLevel:SetText(itemLevel)
Nenue@93 339 break
Nenue@93 340 end
Nenue@93 341 end
Nenue@93 342
Nenue@93 343 local texture = _G['VeneerPaperDollTooltipTexture'..i]
Nenue@93 344 if texture and texture:IsShown() then
Nenue@93 345 numTextures = numTextures + 1
Nenue@96 346 --print('picked up socket', numTextures, texture:GetTexture())
Nenue@93 347 self.SocketInfo[numTextures] = texture:GetTexture()
Nenue@93 348 end
Nenue@93 349 end
Nenue@93 350 if self.checkRelic then
Nenue@93 351 self:UpdateRelicInfo()
Nenue@93 352 end
Nenue@93 353
Nenue@93 354
Nenue@93 355 local relativeIcon
Nenue@93 356 local socketsWidth = 0
Nenue@93 357 local socketsHeight = 24
Nenue@93 358 for index, icon in ipairs(self.Sockets.SocketIcon) do
Nenue@93 359 if self.SocketInfo[index] then
Nenue@96 360 --print('|cFF0088FFsocketInfo|r', index, self.SocketInfo[index])
Nenue@93 361 icon:ClearAllPoints()
Nenue@93 362
Nenue@93 363 icon:SetTexture(self.SocketInfo[index])
Nenue@93 364 icon:SetSize(16, 16)
Nenue@93 365 icon:Show()
Nenue@93 366 if index == 1 then
Nenue@93 367 icon:SetPoint('LEFT', self.Sockets, 'LEFT', 0, 0)
Nenue@93 368 socketsWidth = socketsWidth + icon:GetWidth()
Nenue@93 369 socketsHeight = icon:GetHeight()
Nenue@93 370 else
Nenue@93 371 if id == 16 then
Nenue@93 372 icon:SetPoint('LEFT', relativeIcon, 'RIGHT', 14, 0)
Nenue@93 373 socketsWidth = socketsWidth + 14
Nenue@93 374 else
Nenue@93 375 icon:SetPoint('LEFT', relativeIcon, 'RIGHT', 2, 0)
Nenue@93 376 socketsWidth = socketsWidth + 2
Nenue@93 377 end
Nenue@93 378 socketsWidth = socketsWidth + icon:GetWidth()
Nenue@93 379 end
Nenue@96 380 print( '|cFFFF4400', icon:GetPoint(1))
Nenue@93 381
Nenue@93 382 local label = self.Sockets.SocketLabel[index]
Nenue@93 383 label:ClearAllPoints()
Nenue@93 384 label:SetPoint('BOTTOM', icon, 'TOP',0, 2)
Nenue@93 385 label:SetFontObject(VeneerNumberFont)
Nenue@93 386 label:SetText(self.SocketText[index])
Nenue@93 387
Nenue@105 388 if self.checkRelic and self.SocketType[index] then
Nenue@105 389 print(self.SocketType[index])
Nenue@93 390 local relicAtlasName = ("Relic-%s-Slot"):format(self.SocketType[index]);
Nenue@93 391 self.Sockets.SocketBg = self.Sockets.SocketBg or {}
Nenue@93 392 self.Sockets.SocketBg[index] = self.Sockets.SocketBg[index] or self.Sockets:CreateTexture()
Nenue@93 393 self.Sockets.SocketBg[index]:SetAtlas(relicAtlasName)
Nenue@93 394 self.Sockets.SocketBg[index]:SetPoint('TOPRIGHT', icon, 'TOPRIGHT', 12, 12)
Nenue@93 395 self.Sockets.SocketBg[index]:SetPoint('BOTTOMLEFT', icon, 'BOTTOMLEFT', -12,-12)
Nenue@96 396 --print('', self.SocketType[index], relicAtlasName)
Nenue@105 397 if self.SocketInfo[index] == 0 then
Nenue@105 398 icon:SetAtlas("Relic-SlotBG")
Nenue@105 399 end
Nenue@93 400
Nenue@93 401 socketsHeight = self.Sockets.SocketBg[index]:GetHeight()
Nenue@96 402 print(socketsWidth, socketsHeight)
Nenue@93 403 end
Nenue@93 404
Nenue@93 405
Nenue@93 406 relativeIcon = icon
Nenue@93 407 else
Nenue@93 408 if self.checkRelic and self.Sockets.SocketBg and self.Sockets.SocketBg[index] then
Nenue@93 409 self.Sockets.SocketBg[index]:SetTexture(nil)
Nenue@93 410 self.Sockets.SocketLabel[index]:SetText(nil)
Nenue@93 411 end
Nenue@93 412
Nenue@93 413 icon:Hide()
Nenue@93 414 end
Nenue@93 415
Nenue@93 416
Nenue@93 417 end
Nenue@93 418 self.Sockets:SetWidth(socketsWidth)
Nenue@93 419 self.Sockets:SetHeight(socketsHeight)
Nenue@93 420
Nenue@93 421
Nenue@93 422
Nenue@93 423
Nenue@93 424
Nenue@93 425 self.isDirty = nil
Nenue@93 426 end