annotate Modules/PaperDoll.lua @ 133:86621c60512b v7.3.2-20171222

- Fixed AP calc tooltip appearing while hidden - Fixed PaperDoll relic tooltips missing nether crucible info
author Nenue
date Fri, 22 Dec 2017 20:36:40 -0500
parents 15a7f27b11e6
children 4979b5cca6de
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@116 86 self:RegisterEvent('ARTIFACT_RELIC_INFO_RECEIVED')
Nenue@96 87 self:RegisterEvent('ARTIFACT_UPDATE')
Nenue@80 88
Nenue@93 89 self:MarkForUpdate()
Nenue@133 90
Nenue@133 91
Nenue@62 92 end
Nenue@62 93
Nenue@93 94 function VeneerPaperDollMixin:MarkForUpdate()
Nenue@93 95 for frame, overlays in pairs(slot_overlays) do
Nenue@93 96 for slot, overlay in pairs(overlays) do
Nenue@93 97 if overlay:IsVisible() then
Nenue@93 98 overlay:Update()
Nenue@93 99 else
Nenue@93 100 overlay.isDirty = true
Nenue@93 101 end
Nenue@64 102 end
Nenue@64 103 end
Nenue@64 104 end
Nenue@64 105
Nenue@93 106 function VeneerPaperDollMixin:GetStats()
Nenue@93 107 end
Nenue@93 108 function VeneerPaperDollMixin:GetSlotButton(panel, frame)
Nenue@93 109 print('|cFF00FF88'..self:GetName()..':GetSlotButton()', frame:GetName(), frame:GetID())
Nenue@93 110 local slot = frame:GetID()
Nenue@93 111 local unit = panel.unit or 'player'
Nenue@93 112 if slot_anchors[slot] then
Nenue@93 113 slot_overlays[panel] = slot_overlays[panel] or {}
Nenue@93 114 local overlay = slot_overlays[panel][slot]
Nenue@93 115 if not overlay then
Nenue@96 116 print('creating slot overlay', slot)
Nenue@93 117 overlay = CreateFrame('Frame', 'VeneerPaperDollSlot' .. unit .. slot, frame, 'VeneerPaperDollSlotInfoTemplate')
Nenue@93 118 overlay:SetID(slot)
Nenue@93 119 slot_overlays[panel][slot] = overlay
Nenue@93 120 overlay.checkRelic = frame.checkRelic
Nenue@71 121
Nenue@93 122 local anchorPoint, relativePoint, dX, dY, statPoint, statRelative, statdX, statdY = unpack(slot_anchors[slot])
Nenue@93 123 local offset = 7
Nenue@93 124 overlay:SetPoint(anchorPoint, frame, relativePoint, dX * offset, dY * offset)
Nenue@93 125 overlay:SetSize(frame:GetWidth()*3, frame:GetHeight())
Nenue@93 126
Nenue@93 127 local relativeFrame = overlay
Nenue@93 128 for i, region in ipairs(overlay.StatsLeft) do
Nenue@93 129 region:ClearAllPoints()
Nenue@93 130 print(statPoint, relativeFrame, (i == 1) and statPoint or statRelative)
Nenue@93 131 region:SetPoint(statPoint, relativeFrame, (i == 1) and statPoint or statRelative, 0, 0)
Nenue@93 132 relativeFrame = region
Nenue@93 133 end
Nenue@93 134 if slot == 16 then
Nenue@93 135 overlay.Sockets:ClearAllPoints()
Nenue@93 136 overlay.Sockets:SetPoint('BOTTOM', CharacterFrameInsetBg, 'BOTTOM', 0, frame:GetHeight() + 14)
Nenue@93 137 overlay.ItemLevel:SetFontObject(VeneerNumberFontLarge)
Nenue@93 138 overlay.ItemLevel:ClearAllPoints()
Nenue@93 139 overlay.ItemLevel:SetPoint('BOTTOM', overlay.Sockets, 'TOP', 0, 4)
Nenue@96 140 if unit == 'player' then
Nenue@96 141 artifactSlot = overlay
Nenue@96 142 end
Nenue@96 143
Nenue@93 144 end
Nenue@93 145
Nenue@93 146 print(overlay.Sockets:GetPoint(1))
Nenue@93 147 overlay.anchors = slot_anchors[slot]
Nenue@93 148 end
Nenue@93 149
Nenue@93 150 overlay.unit = unit
Nenue@93 151 overlay.checkRelic = (unit == 'player' and slot == 16)
Nenue@93 152
Nenue@93 153
Nenue@93 154 if frame.hasItem then
Nenue@93 155 overlay.isDirty = true
Nenue@93 156 overlay:Show()
Nenue@93 157 else
Nenue@93 158 overlay:Hide()
Nenue@93 159 end
Nenue@64 160 end
Nenue@64 161 end
Nenue@64 162
Nenue@93 163 function VeneerPaperDollMixin:OnEvent(event, arg)
Nenue@93 164 print(event, arg)
Nenue@93 165 if event == 'ADDON_LOADED' then
Nenue@93 166 if arg == 'Blizzard_InspectUI' then
Nenue@93 167 self:SetupInspectFrame()
Nenue@93 168 end
Nenue@93 169 if arg == 'Blizzard_ArtifactUI' then
Nenue@93 170 self:SetupArtifactUI()
Nenue@93 171 self:MarkForUpdate()
Nenue@93 172 end
Nenue@93 173 elseif event == 'ARTIFACT_UPDATE' then
Nenue@133 174 self:ScoopRelics()
Nenue@96 175 if artifactSlot then
Nenue@133 176 artifactSlot.isDirty = true
Nenue@116 177 end
Nenue@116 178 elseif event == 'ARTIFACT_RELIC_INFO_RECEIVED' then
Nenue@116 179 if artifactSlot then
Nenue@133 180 artifactSlot.isDirty = true
Nenue@96 181 end
Nenue@93 182 else
Nenue@93 183 if (event == 'PLAYER_SPECIALIZATION_CHANGED' or event == 'UNIT_INVENTORY_CHANGED') then
Nenue@93 184 if arg ~= 'player' then
Nenue@93 185 return
Nenue@93 186 end
Nenue@65 187 end
Nenue@93 188 self:MarkForUpdate()
Nenue@65 189 end
Nenue@80 190 end
Nenue@66 191
Nenue@64 192
Nenue@93 193 VeneerPaperDollSlotMixin = {}
Nenue@66 194
Nenue@93 195 function VeneerPaperDollSlotMixin:OnLoad()
Nenue@93 196 self.SocketText = {}
Nenue@93 197 self.SocketType = {}
Nenue@93 198 self.SocketLink = {}
Nenue@133 199 self.SocketForge = {}
Nenue@93 200 end
Nenue@93 201 function VeneerPaperDollSlotMixin:OnShow()
Nenue@93 202 if self.isDirty then
Nenue@93 203 self:Update()
Nenue@93 204 end
Nenue@93 205 end
Nenue@133 206
Nenue@133 207 function VeneerPaperDollSlotMixin:OnHide()
Nenue@133 208 if GameTooltip:IsOwned(self) then
Nenue@133 209 GameTooltip:Hide()
Nenue@133 210 end
Nenue@133 211 end
Nenue@133 212
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@133 220 local setTip
Nenue@93 221 for i = 1, 3 do
Nenue@133 222 if self.SocketType[i] and self.Sockets.SocketIcon[i]:IsMouseOver() then
Nenue@133 223 setTip = self.SocketForge[i]
Nenue@93 224 end
Nenue@93 225 end
Nenue@133 226 if setTip then
Nenue@133 227 GameTooltip:SetOwner(self, 'ANCHOR_RIGHT')
Nenue@133 228 for _, info in ipairs(setTip) do
Nenue@133 229 if type(info) == 'table' then
Nenue@133 230 GameTooltip:AddLine(unpack(info))
Nenue@133 231 elseif type(info) == 'string' then
Nenue@133 232 GameTooltip:AddLine(info)
Nenue@133 233 end
Nenue@93 234 end
Nenue@133 235 GameTooltip:Show()
Nenue@133 236 elseif GameTooltip:IsOwned(self) then
Nenue@133 237 GameTooltip:Hide()
Nenue@93 238 end
Nenue@93 239 end
Nenue@93 240 end
Nenue@93 241
Nenue@133 242 local tooltipName= 'VeneerPaperDollTooltip'
Nenue@93 243 function VeneerPaperDollSlotMixin:UpdateRelicInfo()
Nenue@93 244
Nenue@93 245
Nenue@93 246 local itemID = GetInventoryItemID(self.unit, 16)
Nenue@93 247 if not itemID then
Nenue@93 248 return
Nenue@93 249 end
Nenue@93 250
Nenue@133 251 print('|cFF00FFFFRelic Info:', itemID)
Nenue@133 252 local guid = UnitGUID(self.unit or 'player')
Nenue@133 253 local relicCache = VeneerPaperDoll.KnownRelics[guid] and VeneerPaperDoll.KnownRelics[guid][itemID]
Nenue@93 254
Nenue@133 255 if not relicCache then
Nenue@133 256 relicCache = {}
Nenue@133 257 VeneerPaperDoll.KnownRelics[guid] = VeneerPaperDoll.KnownRelics[guid] or {}
Nenue@133 258 VeneerPaperDoll.KnownRelics[guid][itemID] = relicCache
Nenue@133 259 end
Nenue@133 260
Nenue@133 261 for i = 1, 3 do
Nenue@133 262 if relicCache[i] then
Nenue@133 263 local relicIcon, relicLevel, relicType, relicLink, relicForge = unpack(relicCache[i])
Nenue@133 264
Nenue@133 265 print('reading', i, unpack(relicCache[i]))
Nenue@133 266 self.SocketInfo[i] = relicIcon
Nenue@133 267 self.SocketText[i] = relicLevel
Nenue@133 268 self.SocketType[i] = relicType
Nenue@133 269 self.SocketLink[i] = relicLink
Nenue@133 270 self.SocketForge[i] = self.SocketForge[i] or {}
Nenue@133 271 if relicForge then
Nenue@133 272 for l, info in ipairs(relicForge) do
Nenue@133 273 self.SocketForge[i][l] = info
Nenue@133 274 end
Nenue@133 275 end
Nenue@133 276
Nenue@133 277 end
Nenue@133 278 end
Nenue@133 279 end
Nenue@133 280
Nenue@133 281 function VeneerPaperDollMixin:ScoopRelics()
Nenue@133 282
Nenue@133 283 -- not a viewed artifact
Nenue@133 284 local itemID = C_ArtifactUI.GetArtifactInfo()
Nenue@133 285 if not itemID then
Nenue@133 286 return
Nenue@133 287 end
Nenue@133 288
Nenue@133 289 print('|cFFFF00FFScoopRelics:|r', itemID)
Nenue@93 290 local guid = UnitGUID(self.unit or 'player')
Nenue@93 291 local relicCache = VeneerPaperDoll.KnownRelics[guid] and VeneerPaperDoll.KnownRelics[guid][itemID]
Nenue@93 292 if VeneerPaperDoll.KnownRelics[guid] then
Nenue@93 293 for k, v in pairs(VeneerPaperDoll.KnownRelics[guid]) do
Nenue@93 294 if tonumber(k) and tonumber(k) < 72 then
Nenue@93 295 VeneerPaperDoll.KnownRelics[guid][k] = nil
Nenue@93 296 end
Nenue@93 297 end
Nenue@93 298 end
Nenue@93 299
Nenue@93 300
Nenue@93 301 if not relicCache then
Nenue@93 302 relicCache = {}
Nenue@93 303 VeneerPaperDoll.KnownRelics[guid] = VeneerPaperDoll.KnownRelics[guid] or {}
Nenue@93 304 VeneerPaperDoll.KnownRelics[guid][itemID] = relicCache
Nenue@93 305 end
Nenue@93 306
Nenue@93 307 local numRelics = C_ArtifactUI.GetNumRelicSlots()
Nenue@93 308 local isEquipped = C_ArtifactUI.IsViewedArtifactEquipped()
Nenue@93 309 local tooltip = VeneerPaperDollTooltip
Nenue@93 310
Nenue@133 311 for i = 1, numRelics do
Nenue@133 312 local relicName, relicIcon, relicType, relicLink = C_ArtifactUI.GetRelicInfo(i);
Nenue@133 313 local relicLevel = relicCache[i][2] or ""
Nenue@133 314 local relicForge = relicCache[i][5] or {}
Nenue@133 315 local relicType = C_ArtifactUI.GetRelicSlotType(i);
Nenue@133 316
Nenue@133 317 if relicType then
Nenue@133 318 if relicLink then
Nenue@133 319 tooltip:SetSocketedRelic(i)
Nenue@133 320 print(tooltip:NumLines())
Nenue@133 321
Nenue@133 322 local numLines = tooltip:NumLines()
Nenue@133 323 if numLines >= 1 then
Nenue@133 324 wipe(relicForge)
Nenue@133 325 local foundRank = 0
Nenue@133 326 for line = 1, numLines do
Nenue@133 327 --print( _G[tooltipName .. 'TextLeft' .. line]:GetText(), _G[tooltipName .. 'TextLeft' .. line]:GetTextColor())
Nenue@133 328 local lineText = _G[tooltipName .. 'TextLeft' .. line]:GetText()
Nenue@133 329
Nenue@133 330 if lineText then
Nenue@133 331 local iLevel = lineText:match('Item Level (%d+)')
Nenue@133 332 local rank = lineText:match('+1 Rank: (.+)')
Nenue@133 333
Nenue@133 334 if iLevel then
Nenue@133 335 relicLevel = iLevel
Nenue@133 336 print('iLevel = ',iLevel)
Nenue@133 337 end
Nenue@133 338
Nenue@133 339 tinsert(relicForge, {lineText, _G[tooltipName .. 'TextLeft' .. line]:GetTextColor()})
Nenue@133 340 end
Nenue@105 341 end
Nenue@93 342 end
Nenue@93 343 end
Nenue@93 344
Nenue@133 345 print('storing', i, relicIcon, relicLevel, relicType, relicLink, relicForge)
Nenue@93 346
Nenue@133 347 relicCache[i] = {relicIcon, relicLevel, relicType, relicLink, relicForge}
Nenue@93 348 end
Nenue@93 349 end
Nenue@133 350
Nenue@133 351
Nenue@133 352 end
Nenue@133 353
Nenue@133 354 function VeneerPaperDollSlotMixin:OnLeave()
Nenue@133 355
Nenue@93 356 end
Nenue@93 357
Nenue@96 358 function VeneerPaperDollSlotMixin:Update(forced)
Nenue@93 359 local id = self:GetID()
Nenue@93 360
Nenue@93 361 self.SocketInfo = self.SocketInfo or {}
Nenue@93 362 table.wipe(self.SocketInfo)
Nenue@93 363 self.ItemLevel:SetText(nil)
Nenue@93 364
Nenue@93 365 local tooltip = VeneerPaperDollTooltip
Nenue@93 366 tooltip:SetOwner(self, 'ANCHOR_NONE')
Nenue@96 367 if forced then
Nenue@96 368 print('refresh', self.unit, id)
Nenue@96 369 end
Nenue@96 370
Nenue@93 371 tooltip:SetInventoryItem(self.unit or 'player', id)
Nenue@93 372 tooltip:Show()
Nenue@93 373
Nenue@93 374 local numLines = tooltip:NumLines()
Nenue@93 375 local numTextures = 0
Nenue@93 376 local itemLevel
Nenue@131 377 local ignoreIL = IsAddOnLoaded("DejaCharacterStats")
Nenue@93 378 local itemLevelLine
Nenue@96 379 --print('|cFFFFFF00Sockets scan:', numLines)
Nenue@133 380 for i = 1, numLines do
Nenue@133 381 local line = _G['VeneerPaperDollTooltipTextLeft'..i]
Nenue@133 382 local text = line and line:GetText()
Nenue@133 383 if text and not ignoreIL then
Nenue@133 384 itemLevel = text:match('Item Level (%d+)')
Nenue@133 385 if itemLevel then
Nenue@133 386 self.ItemLevel:SetText(itemLevel)
Nenue@133 387 break
Nenue@93 388 end
Nenue@93 389 end
Nenue@133 390
Nenue@133 391 local texture = _G['VeneerPaperDollTooltipTexture'..i]
Nenue@133 392 if texture and texture:IsShown() then
Nenue@133 393 numTextures = numTextures + 1
Nenue@133 394 --print('picked up socket', numTextures, texture:GetTexture())
Nenue@133 395 self.SocketInfo[numTextures] = texture:GetTexture()
Nenue@133 396 end
Nenue@133 397 end
Nenue@133 398
Nenue@93 399 if self.checkRelic then
Nenue@93 400 self:UpdateRelicInfo()
Nenue@93 401 end
Nenue@93 402
Nenue@93 403
Nenue@93 404 local relativeIcon
Nenue@93 405 local socketsWidth = 0
Nenue@93 406 local socketsHeight = 24
Nenue@93 407 for index, icon in ipairs(self.Sockets.SocketIcon) do
Nenue@93 408 if self.SocketInfo[index] then
Nenue@116 409 print('|cFF0088FFsocketInfo|r', index, self.SocketType[index], self.SocketInfo[index])
Nenue@93 410 icon:ClearAllPoints()
Nenue@93 411
Nenue@93 412 icon:SetTexture(self.SocketInfo[index])
Nenue@93 413 icon:SetSize(16, 16)
Nenue@93 414 icon:Show()
Nenue@93 415 if index == 1 then
Nenue@93 416 icon:SetPoint('LEFT', self.Sockets, 'LEFT', 0, 0)
Nenue@93 417 socketsWidth = socketsWidth + icon:GetWidth()
Nenue@93 418 socketsHeight = icon:GetHeight()
Nenue@93 419 else
Nenue@93 420 if id == 16 then
Nenue@93 421 icon:SetPoint('LEFT', relativeIcon, 'RIGHT', 14, 0)
Nenue@93 422 socketsWidth = socketsWidth + 14
Nenue@93 423 else
Nenue@93 424 icon:SetPoint('LEFT', relativeIcon, 'RIGHT', 2, 0)
Nenue@93 425 socketsWidth = socketsWidth + 2
Nenue@93 426 end
Nenue@93 427 socketsWidth = socketsWidth + icon:GetWidth()
Nenue@93 428 end
Nenue@96 429 print( '|cFFFF4400', icon:GetPoint(1))
Nenue@93 430
Nenue@93 431 local label = self.Sockets.SocketLabel[index]
Nenue@93 432 label:ClearAllPoints()
Nenue@93 433 label:SetPoint('BOTTOM', icon, 'TOP',0, 2)
Nenue@93 434 label:SetFontObject(VeneerNumberFont)
Nenue@93 435 label:SetText(self.SocketText[index])
Nenue@93 436
Nenue@105 437 if self.checkRelic and self.SocketType[index] then
Nenue@105 438 print(self.SocketType[index])
Nenue@116 439 self.Sockets.SocketBg = self.Sockets.SocketBg or {}
Nenue@116 440 self.Sockets.SocketBg[index] = self.Sockets.SocketBg[index] or self.Sockets:CreateTexture(nil, 'OVERLAY')
Nenue@116 441
Nenue@116 442
Nenue@116 443 local relicBG = self.Sockets.SocketBg[index]
Nenue@93 444 local relicAtlasName = ("Relic-%s-Slot"):format(self.SocketType[index]);
Nenue@116 445 relicBG:SetMask(nil)
Nenue@116 446 relicBG:SetAtlas(relicAtlasName)
Nenue@116 447 relicBG:SetPoint('TOPRIGHT', icon, 'TOPRIGHT', 10, 10)
Nenue@116 448 relicBG:SetPoint('BOTTOMLEFT', icon, 'BOTTOMLEFT', -10,-10)
Nenue@96 449 --print('', self.SocketType[index], relicAtlasName)
Nenue@105 450 if self.SocketInfo[index] == 0 then
Nenue@105 451 icon:SetAtlas("Relic-SlotBG")
Nenue@116 452 else
Nenue@116 453 icon:SetMask(nil);
Nenue@116 454 icon:SetTexCoord(0, 1, 0, 1); -- Masks may overwrite our tex coords (even ones set by an atlas), force it back to using the full item icon texture
Nenue@116 455 icon:SetMask("Interface\\CharacterFrame\\TempPortraitAlphaMask");
Nenue@116 456 icon:SetTexture(self.SocketInfo[index])
Nenue@116 457
Nenue@105 458 end
Nenue@93 459
Nenue@93 460 socketsHeight = self.Sockets.SocketBg[index]:GetHeight()
Nenue@96 461 print(socketsWidth, socketsHeight)
Nenue@93 462 end
Nenue@93 463
Nenue@93 464
Nenue@93 465 relativeIcon = icon
Nenue@93 466 else
Nenue@93 467 if self.checkRelic and self.Sockets.SocketBg and self.Sockets.SocketBg[index] then
Nenue@93 468 self.Sockets.SocketBg[index]:SetTexture(nil)
Nenue@93 469 self.Sockets.SocketLabel[index]:SetText(nil)
Nenue@93 470 end
Nenue@93 471
Nenue@93 472 icon:Hide()
Nenue@93 473 end
Nenue@93 474
Nenue@93 475
Nenue@93 476 end
Nenue@93 477 self.Sockets:SetWidth(socketsWidth)
Nenue@93 478 self.Sockets:SetHeight(socketsHeight)
Nenue@93 479
Nenue@93 480
Nenue@93 481
Nenue@93 482
Nenue@93 483
Nenue@93 484 self.isDirty = nil
Nenue@93 485 end