# HG changeset patch # User Nenue # Date 1483313126 18000 # Node ID caded26687015b95a545e994a9e84c8a752343d7 # Parent d41c7dc3012f0b5d4bef2bec38308e5db0630dfd Curseforge migration and source tree cleaning diff -r d41c7dc3012f -r caded2668701 Constants.lua --- a/Constants.lua Tue Oct 25 12:33:20 2016 -0400 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,347 +0,0 @@ ---- ${PACKAGE_NAME} --- @file-author@ --- @project-revision@ @project-hash@ --- @file-revision@ @file-hash@ --- Created: 3/22/2016 3:14 PM -local _, A = ... -local B = A.frame - ------------------------ --- Buff frames metadata ------------------------ -local legendAlpha = 0.5 -B.displays.BuffButton = { - legendColor = {0, 1, 0, legendAlpha}, - maxIcons = BUFF_MAX_DISPLAY, - actualIcons = function () return _G.BUFF_ACTUAL_DISPLAY end, - buffName = 'BuffButton', - drawCount = {}, - filters = 'HELPFUL', - anchorTemplate = 'VeneerAnchorTemplate', -} -B.displays.DebuffButton = { - legendColor = {1, 0, 0, legendAlpha}, - maxIcons = DEBUFF_MAX_DISPLAY, - actualIcons = function () return _G.DEBUFF_ACTUAL_DISPLAY end, - buffName = 'DebuffButton', - drawCount = {}, - filters = 'HARMFUL', - anchorTemplate = 'VeneerAnchorTemplate', -} -B.displays.TempEnchant = { - legendColor = {1, 0, 0.5, legendAlpha}, - maxIcons = NUM_TEMP_ENCHANT_FRAMES, - actualIcons = function () return BuffFrame.numEnchants end, - buffName = 'TempEnchant', - drawCount = {}, - anchorTemplate = 'VeneerAnchorTemplate', -} -B.displays.ConsolidatedBuff = { - legendColor = {0.5, 0.5, 0.5, legendAlpha}, - maxIcons = 9, - actualIcons = function() return select(2, GetRaidBuffInfo()) end, - buffName = 'ConsolidatedBuff', - anchorTemplate = 'VeneerConsolidatedBuffsAnchor', - buffTemplate = 'VeneerRaidBuffTemplate', - drawCount = {}, - filters = 'HELPFUL', -} - ------------------------ --- RaidBuff visual args ------------------------ -B.BuffStyles = { - ["active"] = { - SetDesaturated = false, - Color = {1, 1, 1, 1}, - SetBlendMode = 'BLEND', - TextColor = {1,1,1,1}, - }, - ["missing"] = { - SetDesaturated = false, - Color = {1, 0, 0, 0.5}, - SetBlendMode = 'ADD', - TextColor = {1,0,0,1}, - }, - ["available"] = { - SetDesaturated = true, - Color = {0.35, 1, 0.35, 0.5}, - SetBlendMode = 'ADD', - TextColor = {1, 1, 0, 1}, - }, -} - ---- RaidBuff availability criteria --- @field spellID - UnitAura() == true --- @field spec - test for spec choice --- @field auraType - UnitAura() == true, and no other tests of the same value have returned true prior --- @field talent - test for talent selection --- @field petFamily - test pet family --- @field [true] - passive group aura -B.ClassRaidBuffs = { - -- stats - [1] = { - ['HUNTER'] = { - {talent = {155228}, spellID = 160206, spellName = 'Lone Wolf: Power of the Primates', auraType = 'lonewolf'}, - {petFamily = 'Dog'}, -- active pet family - {petFamily = 'Gorilla'}, - {petFamily = 'Shale Spider'}, - {petFamily = 'Worm'}, - }, - ['DRUID'] = { - {spellID = 1126, spellName = 'Mark of the Wild'}, - }, - ['MONK'] = { - {spellID = 115921, spellName = 'Legacy of the Emperor'}, - {spellID = 116781, spellName = 'Legacy of the White Tiger'} -- windwalker, replaces emperor internally - }, - ['PALADIN'] = {spellID = 20217, spellName = 'Blessing of Kings', auraType = 'blessing'}, - }, - - -- stamina - [2] = { - ['HUNTER'] = { - {talent = {155228}, spellID = 160199, spellName = 'Lone Wolf: Fortitude of the Bear', auraType = 'lonewolf'}, - {petFamily = 'Bear'}, -- active pet family - {petFamily = 'Goat'}, - {petFamily = 'Rylak'}, - {petFamily = 'Silithid'}, - }, - ['PRIEST'] = { - {spellID = 21562, 'Power Word: Fortitude'} - }, - ['WARRIOR'] = { - {spellID = 469, spellName = 'Commanding Shout', auraType = 'shout'} - }, - ['WARLOCK'] = { - {true} - } - }, - - -- attack power - [3] = { - ['HUNTER'] = { - {true}, - }, - ['DEATHKNIGHT'] = { - {spec = 2}, - {spec = 3}, - }, - ['WARRIOR'] = { - {spellName = 'Battle Shout', auraType = 'shout'} - } - }, - - -- HASTE - [4] = { - ['HUNTER'] = { - {talent = {155228}, spellID = 160203, spellName = 'Lone Wolf: Haste of the Hyena', auraType = 'lonewolf'}, - {petFamily = 'Hyena'}, -- active pet family - {petFamily = 'Sporebat'}, - {petFamily = 'Rylak'}, - {petFamily = 'Wasp'}, - }, - ['DEATHKNIGHT'] = { - {spec = 2}, -- unholy aura - {spec = 3}, - }, - ['PRIEST'] = { - {spec = 3}, -- mind quickening - }, - ['ROGUE'] = { - true -- swiftblade's - }, - ['SHAMAN'] = { - true -- grace of air - }, - }, - - -- SPELL POWER - [5] = { - ['HUNTER'] = { - {talent = {155228}, spellID = 160205, spellName = 'Lone Wolf: Wisdom of the Serpent', auraType = 'lonewolf'}, - {petFamily = 'Waterstrider'}, -- active pet family - {petFamily = 'Serpent'}, - {petFamily = 'Silithid'}, - }, - ['MAGE'] = { - {spellID = 1459, spellName = 'Arcane Brilliance'}, -- arcane brilliance - {spellID = 61316, spellName = 'Dalaran Brilliance'}, -- dalaran brilliance - }, - ['WARLOCK'] = { - {spellID = 109773,spellName = 'Dark Intent' } - }, - }, - - -- CRITICAL STRIKE - [6] = { - ['HUNTER'] = { - {talent = {155228}, spellID = 160200, spellName = 'Lone Wolf: Ferocity of the Raptor', auraType = 'lonewolf'}, - {petFamily = 'Devilsaur'}, -- active pet family - {petFamily = 'Quilen'}, - {petFamily = 'Raptor'}, - {petFamily = 'Shale Spider'}, - {petFamily = 'Waterstrider'}, - {petFamily = 'Wolf'}, - }, - ['DRUID'] = { - {spec = 2, spellID = 17007, auraType = 'druidform'} - }, - ['MAGE'] = { - {spellID = 1459, spellName = 'Arcane Brilliance'}, -- arcane brilliance - {spellID = 61316, spellName = 'Dalaran Brilliance'}, -- dalaran brilliance - }, - ['MONK'] = { - {spellID = 116781, spellName = 'Legacy of the White Tiger', spec = 2} -- windwalker - } - }, - - -- MASTERY - [7] = { - ['HUNTER'] = { - {talent = {155228}, spellID = 160198, spellName = 'Lone Wolf: Grace of the Cat', auraType = 'lonewolf'}, - {petFamily = 'Cat'}, -- active pet family - {petFamily = 'Hydra'}, - {petFamily = 'Spirit Beast'}, - {petFamily = 'Tallstrider'}, - }, - ['DEATHKNIGHT'] = { - {spec = 1} - }, - ['DRUID'] = { - {spec = 1, spellID = 24907, auraType = 'druidform'}, - }, - ['PALADIN'] = { - {spec = 1, spellID = 19740, spellName = 'Blessing of Might', auraType = 'blessing'} - }, - ['SHAMAN'] = {true}, - }, - - -- MULTISTRIKE - [8] = { - ['HUNTER'] = { - {talent = {155228}, spellID = 172968, spellName = 'Lone Wolf: Quickness of the Dragonhawk', auraType = 'lonewolf'}, - {petFamily = 'Bat'}, -- active pet family - {petFamily = 'Clefthoof'}, - {petFamily = 'Corehound'}, - {petFamily = 'Dragonhawk'}, - {petFamily = 'Wind Serpent'}, - }, - ['MONK'] = { - {spec = 2 } - }, -- Windflurry, - ['PRIEST'] = { - {spec = 3 } - }, -- quickening, - ['ROGUE'] = {true}, -- swiftblade's - ['WARLOCK'] = { - {spellID = 109773,spellName = 'Dark Intent' } - }, - }, - - -- VERSATILITY - [9] = { - ['HUNTER'] = { - {talent = {155228}, spellID = 172967, spellName = 'Lone Wolf: Versatility of the Ravager', auraType = 'lonewolf'}, - {petFamily = 'Ravager'}, -- active pet family - {petFamily = 'Boar'}, - {petFamily = 'Porcupine'}, - {petFamily = 'Clefthoof'}, - {petFamily = 'Stag'}, - {petFamily = 'Worm'}, - {petFamily = 'Bird of Prey'}, - }, - ['DEATH KNIGHT'] = { - {spec = 2}, -- unholy aura - {spec = 3}, - }, - ['DRUID'] = { - {spellID = 1126, spellName = 'Mark of the Wild'}, - }, - ['PALADIN'] = { - {spec = 2}, -- retribution - }, - ['WARRIOR'] = { - {spec = 2}, -- arms or fury - {spec = 3}, - }, - } -} - -------------------------- --- Default config values -------------------------- -B.ConfDefaults = { - -- defaulted to on for first-time setup - ConfigMode = true, - GuidesMode = true, - - BuffButtonAnchor = {'TOPRIGHT', 'UIParent', 'TOPRIGHT', -200, -5}, - BuffButtonMax = 24, - BuffButtonPerRow = 10, - BuffButtonSize = 50, - BuffButtonSpacing = 4, - BuffButtonZoom = 15, - BuffButtonVertexColor = {}, - BuffButtonPoint = {'TOPRIGHT', 'TOPRIGHT'}, - BuffButtonDurationSize = 16, - BuffButtonDurationPoint = {'BOTTOM', 'BOTTOM', 0, -1}, - BuffButtonCountSize = 18, - BuffButtonCountPoint = {'TOPRIGHT', 'TOPRIGHT', -3, -3}, - BuffButtonRelativeX = -1, - BuffButtonRelativeY = -1, - - BuffButtonColor = {1, 1, 1, 1}, - BuffButtonPlayerColor = {1,1,1,1}, - BuffButtonRaidColor = {0.25,1,0.25,1}, - BuffButtonBossColor = {1,0.5,0,1}, - BuffButtonBorder = 1, - - BuffButtonWarningFade = true, - BuffButtonShowSelfCast = true, - - DebuffButtonAnchor = {'TOPRIGHT', 'UIParent', 'TOPRIGHT', -200, -200}, - DebuffButtonMax = 12, - DebuffButtonPerRow = 10, - DebuffButtonSize = 50, - DebuffButtonSpacing = 4, - DebuffButtonDurationSize = 16, - DebuffButtonZoom = 15, - DebuffButtonVertexColor = {}, - DebuffButtonPoint = {'TOPRIGHT','TOPRIGHT'}, - DebuffButtonRelativeX = -1, - DebuffButtonRelativeY = -1, - - - TempEnchantAnchor = {'TOPRIGHT', 'UIParent', 'TOPRIGHT', -200, -300}, - TempEnchantMax = 2, - TempEnchantPerRow = 10, - TempEnchantSize = 50, - TempEnchantSpacing = 4, - TempEnchantDurationSize = 16, - TempEnchantZoom = 15, - TempEnchantVertexColor = {}, - TempEnchantPoint = {'TOPRIGHT', 'TOPRIGHT'}, - TempEnchantRelativeX = -1, - TempEnchantRelativeY = -1, - TempEnchantColor = {1,0,0.5,1}, - - ConsolidatedBuffAnchor = {'TOPRIGHT', 'UIParent', 'TOPRIGHT', 0, 0}, - ConsolidatedBuffIcon = false, - ConsolidatedBuffMax = 9, - ConsolidatedBuffSize = 16, - ConsolidatedBuffParent = 'BuffButton', - ConsolidatedBuffPosition = 1, - ConsolidatedBuffSpacing = 1, - ConsolidatedBuffBorder = 0, - ConsolidatedBuffPerRow = 3, - ConsolidatedBuffPoint = {'TOPRIGHT', 'TOPRIGHT'}, - ConsolidatedBuffRelativeX = -1, - ConsolidatedBuffRelativeY = -1, - ConsolidatedBuffDurationSize = 0, - ConsolidatedBuffDurationPoint = {'BOTTOM', 'BOTTOM', 0, 0}, - ConsolidatedBuffCountPoint = {'BOTTOM', 'BOTTOM', 0, 0}, - - RaidShowMissing = true, - -} \ No newline at end of file diff -r d41c7dc3012f -r caded2668701 Modules/BuffFrame.lua --- a/Modules/BuffFrame.lua Tue Oct 25 12:33:20 2016 -0400 +++ b/Modules/BuffFrame.lua Sun Jan 01 18:25:26 2017 -0500 @@ -133,7 +133,7 @@ end region:Hide() - tprint('|cFF0088FFborder:SetVertexColor|r', r,g,b,a) + --tprint('|cFF0088FFborder:SetVertexColor|r', r,g,b,a) self.progress.fg:SetColorTexture(r,g,b,a) self.border:SetColorTexture(r,g,b,a) self.border:Show() @@ -157,17 +157,17 @@ end) else hooksecurefunc(region, method, function(self,...) - tprint('|cFF0088FF'.. self:GetName().. ':', method) + --tprint('|cFF0088FF'.. self:GetName().. ':', method) self:ClearAllPoints() veneer:Show() veneer[method](veneer, ...) if self:GetName():match('Debuff.+Count') then - print('|cFF00FFFF'.. self:GetName().. ':'.. method, '->', veneer:GetName()..':'..method..'(', ...,')') - print(veneer:IsVisible(),veneer:GetStringWidth(),veneer:GetText()) - print(veneer:GetTop(), veneer:GetLeft()) - print(veneer:GetPoint(1)) + --print('|cFF00FFFF'.. self:GetName().. ':'.. method, '->', veneer:GetName()..':'..method..'(', ...,')') + --print(veneer:IsVisible(),veneer:GetStringWidth(),veneer:GetText()) + --print(veneer:GetTop(), veneer:GetLeft()) + --print(veneer:GetPoint(1)) end end) @@ -180,11 +180,12 @@ local frame = self.Buttons[target] if not (self.Buttons[target]) then + local name = target:GetName() local id = target:GetID() print('|cFF88FF00Creating', name,'Veneer') + frame = vn:Acquire(target, 'VeneerBuffTemplate') - frame = vn:Acquire(target, 'VeneerBuffTemplate') frame.progress[OFFSET_PARALLELS[PROGRESS_ANCHOR][3]](frame.progress, BUFF_PROGRESS_SIZE + (BUFF_PROGRESS_INSET * 2)) print(BUFF_PROGRESS_SIZE + (BUFF_PROGRESS_INSET * 2)) @@ -241,7 +242,7 @@ hooksecurefunc("BuffFrame_Update", function(...) self:OnBuffFrameUpdate(...) end) - hooksecurefunc("AuraButton_UpdateDuration", function(...) self:OnUpdateDuration(...) end) + --hooksecurefunc("AuraButton_UpdateDuration", function(...) self:OnUpdateDuration(...) end) hooksecurefunc("AuraButton_Update", function(...) self:OnAuraButton_Update(...) end) hooksecurefunc("BuffFrame_UpdateAllBuffAnchors", function(...) self:OnUpdateAllBuffAnchors(...) end) hooksecurefunc("TemporaryEnchantFrame_Update", function(...) self:OnTemporaryEnchantFrameUpdate(...) end) @@ -251,6 +252,13 @@ end end +function VeneerBuffFrameMixin:SetHidden(region) + if not self.hiddenRegions[region] then + self.hiddenRegions[region] = true + region:SetShown(false) + hooksecurefunc(region) + end +end function VeneerBuffFrameMixin:SetupButton (name) local frame = _G[name ] @@ -287,9 +295,12 @@ veneer.border:Show() end - if count and count:GetText() then + if count then count:ClearAllPoints() - veneer.count:SetText(count:GetText()) + hooksecurefunc(count, 'Show', function(self) self:Hide() end) + if count:GetText() then + veneer.count:SetText(count:GetText()) + end end if duration then duration:ClearAllPoints() @@ -354,7 +365,7 @@ local nw = (w - (w * progress)) if veneer.elapsed >= 0.25 then - tprint(t, startTime, floor(progress*100), w * progress, nw, w) + --tprint(t, startTime, floor(progress*100), w * progress, nw, w) veneer.elapsed = 0.25 - veneer.elapsed end if (progress >= 1) or not frame:IsVisible() then @@ -481,16 +492,15 @@ local debuff = _G['DebuffButton'..i] if debuff then numBuffs = numBuffs + 1 - if numBuffs == 1 then - if topBuff then - debuff:SetPoint('TOPRIGHT', topBuff, 'BOTTOMRIGHT', 0, -BUFF_BUTTON_SPACING_V) - else - debuff:SetPoint('TOPRIGHT', UIParent, 'TOPRIGHT', -120, -6) - end - topBuff = debuff - elseif mod(numBuffs, BUFFS_PER_ROW) == 1 then - debuff:SetPoint('TOPRIGHT', topBuff, 'BOTTOMRIGHT', 0, -BUFF_BUTTON_SPACING_V) - topBuff = debuff + if mod(numBuffs, BUFFS_PER_ROW) == 1 then + + if topBuff then + debuff:SetPoint('TOPRIGHT', topBuff, 'BOTTOMRIGHT', 0, -BUFF_BUTTON_SPACING_V) + else + debuff:SetPoint('TOPRIGHT', UIParent, 'TOPRIGHT', BUFF_FRAMES_X, BUFF_FRAMES_Y) + end + topBuff = debuff + else debuff:SetPoint('TOPRIGHT', lastBuff, 'TOPLEFT', -BUFF_BUTTON_SPACING_H, 0) end @@ -509,6 +519,9 @@ end function VeneerBuffFrameMixin:UpdateConfigLayers (configMode) self:SetShown(configMode) + for _, button in pairs(self.Buttons) do + button:SetShown(configMode) + end end function VeneerBuffFrameMixin:OnUpdateDuration (frame, timeLeft) local veneer = self:Acquire(frame) diff -r d41c7dc3012f -r caded2668701 Modules/ObjectiveTracker.lua --- a/Modules/ObjectiveTracker.lua Tue Oct 25 12:33:20 2016 -0400 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,62 +0,0 @@ --- Veneer --- ObjectiveTracker.lua --- Created: 8/16/2016 8:19 AM --- %file-revision% --- Fixes objective tracker positioning in relation to buff frame alterations - -local plugin = CreateFrame('Frame', 'VeneerObjectives', UIParent) -local vn, print = LibStub("LibKraken").register(VeneerController, plugin) -local ot -local otvn - -local INSET_V = -20 - -local GetVeneer = function() - - print('|cFFFF4400ObjectiveTracker_Initialize|r') - otvn = vn.GetVeneer(ot) - print(otvn:GetHeight()) - - - for i = 1, #ot.MODULES do - print(i, ot.MODULES[i]) - end - ot:ClearAllPoints() - ot:SetPoint('TOPRIGHT', UIParent, 'TOPRIGHT', -5, -140) - - --vn.GetVeneer(ot):SetAllPoints(ot) -end - -local UpdateVeneer = function() - if not ot.initialized or not otvn then - return - end - - - - ot:ClearAllPoints() - ot:SetPoint('TOPRIGHT', UIParent, 'TOPRIGHT', -5, -140) - -end - -local CreateVeneer = function() - ot = ObjectiveTrackerFrame - hooksecurefunc('ObjectiveTracker_Initialize', GetVeneer) - hooksecurefunc('ObjectiveTracker_Update', UpdateVeneer) -end - -plugin.init = function() - if ObjectiveTrackerFrame then - print('tracker is already loaded') - CreateVeneer() - else - plugin:RegisterEvent('ADDON_LOADED') - plugin.ADDON_LOADED = function(self, addon) - if addon == 'Blizzard_ObjectiveTracker' then - print('responding to blizzard tracker loadin') - CreateVeneer() - end - end - end -end - diff -r d41c7dc3012f -r caded2668701 Modules/PaperDoll.lua --- a/Modules/PaperDoll.lua Tue Oct 25 12:33:20 2016 -0400 +++ b/Modules/PaperDoll.lua Sun Jan 01 18:25:26 2017 -0500 @@ -3,248 +3,418 @@ -- Created: 8/16/2016 8:18 AM -- %file-revision% -- Displays the item level and modifications of character sheet equipment, including artifact power +local print = DEVIAN_WORKSPACE and function(...) print('PaperDoll', ...) end or nop -local plugin = CreateFrame('Frame', 'VeneerPaper', UIParent) -local vn, print = LibStub("LibKraken").register(Veneer, plugin) +local slot_overlays = {} +VeneerPaperDollMixin = { + anchorFrame = 'CharacterFrame', + anchorPoint = 'TOPLEFT', + KnownRelics = {}, +} + +local relic_slot_paths = { + Arcane = {"Relic-Arcane-Slot", [[Interface\Artifacts\Artifacts.BLP]], 72, 72, 0.849609375, 0.919921875, 0.1181640625, 0.1884765625, false, false}, + Blood = {"Relic-Blood-Slot", [[Interface\Artifacts\Artifacts.BLP]], 72, 72, 0.921875, 0.9921875, 0.1181640625, 0.1884765625, false, false}, + Fel = {"Relic-Fel-Slot", [[Interface\Artifacts\Artifacts.BLP]], 72, 72, 0.59765625, 0.66796875, 0.572265625, 0.642578125, false, false}, + Fire = {"Relic-Fire-Slot", [[Interface\Artifacts\Artifacts.BLP]], 72, 72, 0.669921875, 0.740234375, 0.572265625, 0.642578125, false, false}, + Frost = {"Relic-Frost-Slot", [[Interface\Artifacts\Artifacts.BLP]], 72, 72, 0.7421875, 0.8125, 0.572265625, 0.642578125, false, false}, + Holy = {"Relic-Holy-Slot", [[Interface\Artifacts\Artifacts.BLP]], 72, 72, 0.814453125, 0.884765625, 0.572265625, 0.642578125, false, false}, + Iron = {"Relic-Iron-Slot", [[Interface\Artifacts\Artifacts.BLP]], 72, 72, 0.88671875, 0.95703125, 0.572265625, 0.642578125, false, false}, + Life = {"Relic-Life-Slot", [[Interface\Artifacts\Artifacts.BLP]], 72, 72, 0.59765625, 0.66796875, 0.64453125, 0.71484375, false, false}, + Shadow = {"Relic-Shadow-Slot", [[Interface\Artifacts\Artifacts.BLP]], 72, 72, 0.59765625, 0.66796875, 0.716796875, 0.787109375, false, false}, + Water = {"Relic-Water-Slot", [[Interface\Artifacts\Artifacts.BLP]], 72, 72, 0.59765625, 0.66796875, 0.7890625, 0.859375, false, false}, + Wind = {"Relic-Wind-Slot", [[Interface\Artifacts\Artifacts.BLP]], 72, 72, 0.59765625, 0.66796875, 0.861328125, 0.931640625, false, false}, +} + +local slots_left = {'TOPLEFT', 'TOPRIGHT', 1, 0, 'TOPLEFT', 'BOTTOMLEFT', 0, -1} +local slots_right = {'TOPRIGHT', 'TOPLEFT', -1, 0, 'TOPRIGHT', 'BOTTOMRIGHT', 0, -1} +local slots_bottomleft = {'BOTTOMRIGHT', 'TOPRIGHT', 0, 1, 'BOTTOMRIGHT', 'TOPRIGHT', 0, 1 } +local slots_bottomright = {'BOTTOMLEFT', 'TOPLEFT', 0, -1, 'BOTTOMLEFT', 'TOPLEFT', 0, 1} local slot_anchors = { - [1] = 'TOPLEFT', - [2] = 'TOPLEFT', - [3] = 'TOPLEFT', - [15] = 'TOPLEFT', - [5] = 'TOPLEFT', - [9] = 'TOPLEFT', + [1] = slots_left, + [2] = slots_left, + [3] = slots_left, + [15] = slots_left, + [5] = slots_left, + [9] = slots_left, - [10] = 'TOPRIGHT', - [6] = 'TOPRIGHT', - [7] = 'TOPRIGHT', - [8] = 'TOPRIGHT', - [11] = 'TOPRIGHT', - [12] = 'TOPRIGHT', - [13] = 'TOPRIGHT', - [14] = 'TOPRIGHT', + [10] = slots_right, + [6] = slots_right, + [7] = slots_right, + [8] = slots_right, + [11] = slots_right, + [12] = slots_right, + [13] = slots_right, + [14] = slots_right, - [16] = 'BOTTOMRIGHT', - [17] = 'BOTTOMLEFT', + [16] = slots_bottomleft, + [17] = slots_bottomright, } -local slot_relative = { - [1] = 'TOPRIGHT', - [2] = 'TOPRIGHT', - [3] = 'TOPRIGHT', - [15] = 'TOPRIGHT', - [5] = 'TOPRIGHT', - [9] = 'TOPRIGHT', - [10] = 'TOPLEFT', - [6] = 'TOPLEFT', - [7] = 'TOPLEFT', - [8] = 'TOPLEFT', - [11] = 'TOPLEFT', - [12] = 'TOPLEFT', - [13] = 'TOPLEFT', - [14] = 'TOPLEFT', +function VeneerPaperDollMixin:OnLoad() + hooksecurefunc("PaperDollItemSlotButton_Update", function(...) + self:GetSlotButton(PaperDollItemsFrame, ...) + end) - [16] = 'TOPRIGHT', - [17] = 'TOPLEFT', -} -local ticker -local vnslot = {} -local pendingSlots = {} + hooksecurefunc("PaperDollFrame_UpdateStats", function(...) + self:GetStats(PaperDollItemsFrame, ...) + end) + self:RegisterEvent('ADDON_LOADED') + self:RegisterEvent('INSPECT_READY') -local GetEquippedArtifactInfo = _G.C_ArtifactUI.GetEquippedArtifactInfo -local GetCostForPointAtRank = _G.C_ArtifactUI.GetCostForPointAtRank -local tooltip = CreateFrame('GameTooltip', 'VeneerTooltip', UIParent, 'GameTooltipTemplate') -local jewel = {} - -local artifactBar_OnEvent = function (self) - local itemID, altItemID, name, icon, totalXP, pointsSpent = GetEquippedArtifactInfo() - if not itemID then - self:Hide() - return - end - - local numRelicSlots = C_ArtifactUI.GetNumRelicSlots() or 0; - for i = 1, numRelicSlots do - - end - - local pointsAvailable = 0 - local nextRankCost = GetCostForPointAtRank(pointsSpent + pointsAvailable) or 0 - - while totalXP >= nextRankCost do - totalXP = totalXP - nextRankCost - pointsAvailable = pointsAvailable + 1 - nextRankCost = GetCostForPointAtRank(pointsSpent + pointsAvailable) or 0 - end - self.Header:SetText(name) - self.Level:SetText((pointsAvailable >= 1) and (pointsSpent .. ' ('.. pointsAvailable..')') or (pointsSpent)) - self.ProgressText:SetFormattedText("|cFF00FFFF%d|r / %d", totalXP, nextRankCost) - - self.ProgressBar:SetPoint('TOPRIGHT', self.ProgressBG, 'TOPLEFT', self:GetWidth()*(totalXP/nextRankCost), 0) - self.ProgressBar:SetColorTexture(1,.5,0) - - self:Show() + self.SocketType = {} end - -local artifactBar = CreateFrame('Frame', 'VnPaperDollArtifact', CharacterModelFrame, 'VeneerStatusBarTemplate') -artifactBar:ClearAllPoints() -artifactBar:SetHeight(28) -artifactBar:SetPoint('LEFT', CharacterModelFrame, 'LEFT', 30, 0) -artifactBar:SetPoint('RIGHT', CharacterModelFrame, 'RIGHT', -30, 0) -artifactBar:SetPoint('BOTTOM', CharacterMainHandSlotFrame, 'TOP', 0, 1) -artifactBar.ProgressBG:SetColorTexture(0.5, 0.5, 0.5) -artifactBar.Header:Show() -artifactBar:RegisterEvent('ARTIFACT_UPDATE') -artifactBar:SetScript('OnEvent', artifactBar_OnEvent) - -plugin.artifactBar = artifactBar -print(CharacterMainHandSlotFrame:GetPoint(1)) -print(artifactBar:GetPoint(3)) - -for i = 1, 3 do - local relicSlot = CreateFrame('Frame', 'VnPaperDollRelic'..i, artifactBar) - relicSlot:SetSize(40,40) - relicSlot:SetPoint('BOTTOM', artifactBar, 'TOP', (i-2)*40, 24) - relicSlot.relicArt = relicSlot:CreateTexture(nil, 'BACKGROUND') - artifactBar['RelicSlot'..i] = relicSlot +function VeneerPaperDollMixin:SetupInspectFrame() + hooksecurefunc("InspectPaperDollItemSlotButton_Update", function(...) + self:GetSlotButton(InspectFrame, ...) + end) + self:RegisterEvent('INSPECT_READY') +end +function VeneerPaperDollMixin:SetupArtifactUI() + self:RegisterEvent('ARTIFACT_UPDATE') end +function VeneerPaperDollMixin:Setup() + VeneerData.PaperDoll = VeneerData.PaperDoll or {} + VeneerData.PaperDoll.KnownRelics = VeneerData.PaperDoll.KnownRelics or {} + self.KnownRelics = VeneerData.PaperDoll.KnownRelics -artifactBar:EnableMouse(true) -artifactBar:SetScript('OnMouseUp', function() - SocketInventoryItem(16) -end) + self:RegisterEvent('UNIT_INVENTORY_CHANGED') + self:RegisterEvent('PLAYER_EQUIPMENT_CHANGED') + self:RegisterEvent('PLAYER_SPECIALIZATION_CHANGED') -local UpdateVeneer = function(itemslot, frame) - local slot = itemslot:GetID() - if itemslot.hasItem then - local unit = frame.target.unit or 'player' - frame.link = GetInventoryItemLink(unit, slot) - tooltip:SetOwner(frame, 'ANCHOR_NONE') - tooltip:SetInventoryItem(unit, slot) - tooltip:Show() - --print(tooltip:NumLines()) - if tooltip:NumLines() >= 3 then - - local ilvl - if _G['VeneerTooltipTextLeft2'] then - ilvl = _G['VeneerTooltipTextLeft2']:GetText():match("Item Level (%d+)") - --print('l2', ilvl) - end - - if _G['VeneerTooltipTextLeft3'] then - if not ilvl then - ilvl = _G['VeneerTooltipTextLeft3']:GetText():match("Item Level (%d+)") - --print('l3', ilvl) - end - end - - if ilvl then - frame.label:SetText(ilvl) - end - end - - local quality = GetInventoryItemQuality(unit, slot) - if slot == 16 and quality == LE_ITEM_QUALITY_ARTIFACT then - artifactBar_OnEvent(plugin.artifactBar) - end - - - - - frame:Show() - else - frame:Hide() - end + self:MarkForUpdate() end -local UpdateNext = function(frame) - - plugin.next(function() - print('updating', frame:GetName()) - UpdateVeneer(frame:GetParent(), frame) - end) -end - - -local UpdateAll = function() - for index, frame in pairs(vnslot) do - if frame:IsVisible() then - print('forcing', index, frame:GetName()) - UpdateNext(frame) +function VeneerPaperDollMixin:MarkForUpdate() + for frame, overlays in pairs(slot_overlays) do + for slot, overlay in pairs(overlays) do + if overlay:IsVisible() then + overlay:Update() + else + overlay.isDirty = true + end end end end +function VeneerPaperDollMixin:GetStats() +end +function VeneerPaperDollMixin:GetSlotButton(panel, frame) + print('|cFF00FF88'..self:GetName()..':GetSlotButton()', frame:GetName(), frame:GetID()) + local slot = frame:GetID() + local unit = panel.unit or 'player' + if slot_anchors[slot] then + slot_overlays[panel] = slot_overlays[panel] or {} + local overlay = slot_overlays[panel][slot] + if not overlay then + overlay = CreateFrame('Frame', 'VeneerPaperDollSlot' .. unit .. slot, frame, 'VeneerPaperDollSlotInfoTemplate') + overlay:SetID(slot) + slot_overlays[panel][slot] = overlay + overlay.checkRelic = frame.checkRelic --- PaperDollFrame is separate from InspectUI handlers -local PaperDollItemSlotButton_Update = function(self) - local name = self:GetName() - local slot = self:GetID() - if not slot_anchors[slot] then - return + local anchorPoint, relativePoint, dX, dY, statPoint, statRelative, statdX, statdY = unpack(slot_anchors[slot]) + local offset = 7 + overlay:SetPoint(anchorPoint, frame, relativePoint, dX * offset, dY * offset) + overlay:SetSize(frame:GetWidth()*3, frame:GetHeight()) + + local relativeFrame = overlay + for i, region in ipairs(overlay.StatsLeft) do + region:ClearAllPoints() + print(statPoint, relativeFrame, (i == 1) and statPoint or statRelative) + region:SetPoint(statPoint, relativeFrame, (i == 1) and statPoint or statRelative, 0, 0) + relativeFrame = region + end + if slot == 16 then + overlay.Sockets:ClearAllPoints() + overlay.Sockets:SetPoint('BOTTOM', CharacterFrameInsetBg, 'BOTTOM', 0, frame:GetHeight() + 14) + overlay.ItemLevel:SetFontObject(VeneerNumberFontLarge) + overlay.ItemLevel:ClearAllPoints() + overlay.ItemLevel:SetPoint('BOTTOM', overlay.Sockets, 'TOP', 0, 4) + end + + print(overlay.Sockets:GetPoint(1)) + overlay.anchors = slot_anchors[slot] + end + + overlay.unit = unit + overlay.checkRelic = (unit == 'player' and slot == 16) + + + if frame.hasItem then + overlay.isDirty = true + overlay:Show() + else + overlay:Hide() + end end - print(self:GetName()) - - local frame = _G[name .. 'Veneer'] - - if not frame then - - frame = CreateFrame('Frame', name..'Veneer', self) - vnslot[slot] = frame - - frame.label = frame:CreateFontString(nil, 'OVERLAY', 'VeneerNumberFont') - frame.gemslot = {} - - - frame.target = self - frame.gemslot = {} - frame:SetAllPoints(self) - frame:SetParent(self) - frame.label:SetPoint('BOTTOMLEFT', self, 'BOTTOMLEFT', 2, 2) - - tinsert(pendingSlots, frame) - end - - UpdateVeneer(self, frame) - end -local PaperDollFrame_UpdateStats = function() -end +function VeneerPaperDollMixin:OnEvent(event, arg) + print(event, arg) + if event == 'ADDON_LOADED' then + if IsLoggedIn() and not self.initialized then + self:Setup() + self.initialized = true + end -plugin.event = function(self, event, ...) - print(self, event, ...) - - if event == 'PLAYER_EQUIPMENT_CHANGED' then - local slot, hasItem = ... - if vnslot[slot] then - UpdateVeneer(vnslot[slot]:GetParent(), vnslot[slot]) + if arg == 'Blizzard_InspectUI' then + self:SetupInspectFrame() + end + if arg == 'Blizzard_ArtifactUI' then + self:SetupArtifactUI() + self:MarkForUpdate() + end + elseif event == 'ARTIFACT_UPDATE' then + self:MarkForUpdate() + else + if (event == 'PLAYER_SPECIALIZATION_CHANGED' or event == 'UNIT_INVENTORY_CHANGED') then + if arg ~= 'player' then + return + end + elseif event == 'INSPECT_READY' then end - elseif event == 'PLAYER_ENTERING_WORLD' then - UpdateAll() + self:MarkForUpdate() end - -end -local artifactBarCreated -plugin.init = function() - LoadAddOn('Blizzard_ArtifactUI') end ---plugin:SetScript('OnEvent', plugin.event) -plugin:RegisterEvent('PLAYER_EQUIPMENT_CHANGED') -plugin:RegisterEvent('PLAYER_ENTERING_WORLD') +VeneerPaperDollSlotMixin = {} -hooksecurefunc("PaperDollItemSlotButton_Update", PaperDollItemSlotButton_Update) +function VeneerPaperDollSlotMixin:OnLoad() + self.SocketText = {} + self.SocketType = {} + self.SocketLink = {} +end +function VeneerPaperDollSlotMixin:OnShow() + if self.isDirty then + self:Update() + end +end +function VeneerPaperDollSlotMixin:OnUpdate() + if self.isDirty then + --print('|cFF00FF00pushing update for', self:GetID()) + self:Update() + end -hooksecurefunc("PaperDollFrame_UpdateStats", PaperDollFrame_UpdateStats) \ No newline at end of file + if self.checkRelic then + self.tooltipLink = nil + for i = 1, 3 do + if self.SocketLink[i] and self.Sockets.SocketIcon[i]:IsMouseOver() then + self.tooltipLink = self.SocketLink[i] + end + end + + if self.tooltipLink then + if not GameTooltip:IsOwned(self) then + GameTooltip:SetOwner(self, 'ANCHOR_CURSOR') + GameTooltip:SetHyperlink(self.tooltipLink) + + GameTooltip:Show() + end + else + if GameTooltip:IsOwned(self) then + GameTooltip:Hide() + end + end + end +end + +function VeneerPaperDollSlotMixin:UpdateRelicInfo() + + + local itemID = GetInventoryItemID(self.unit, 16) + if not itemID then + return + end + print('|cFF00FFFFRelic Sweep:', itemID) + + + local guid = UnitGUID(self.unit or 'player') + local relicCache = VeneerPaperDoll.KnownRelics[guid] and VeneerPaperDoll.KnownRelics[guid][itemID] + if VeneerPaperDoll.KnownRelics[guid] then + for k, v in pairs(VeneerPaperDoll.KnownRelics[guid]) do + if tonumber(k) and tonumber(k) < 72 then + VeneerPaperDoll.KnownRelics[guid][k] = nil + end + end + end + + + if not relicCache then + relicCache = {} + VeneerPaperDoll.KnownRelics[guid] = VeneerPaperDoll.KnownRelics[guid] or {} + VeneerPaperDoll.KnownRelics[guid][itemID] = relicCache + end + + local numRelics = C_ArtifactUI.GetNumRelicSlots() + local isEquipped = C_ArtifactUI.IsViewedArtifactEquipped() + local tooltip = VeneerPaperDollTooltip + tooltip:SetOwner(self, 'ANCHOR_NONE') + self.hasRelicSlots = true + if numRelics and isEquipped then + print('Relic Query:', itemID, numRelics) + self.checkRelic = nil + for i = 1, numRelics do + local lockedReason, relicName, relicIcon, relicLink = C_ArtifactUI.GetRelicInfo(i); + local relicType = C_ArtifactUI.GetRelicSlotType(i); + if relicIcon then + tooltip:SetHyperlink(relicLink) + print(tooltip:NumLines()) + + local line1 = _G['VeneerPaperDollTooltipTextLeft2'] + local line2 = _G['VeneerPaperDollTooltipTextLeft3'] + local text1 = line1 and line1:GetText() + local text2 = line2 and line2:GetText() + if text1 or text2 then + self.SocketText[i] = text1:match('Item Level (%d+)') or text2:match('Item Level (%d+)') + end + + self.SocketInfo[i] = relicIcon + self.SocketType[i] = relicType + self.SocketLink[i] = relicLink + print('storing', i, self.SocketInfo[i], self.SocketText[i], self.SocketType[i], self.SocketLink[i]) + else + + self.SocketInfo[i] = "Interface\\CharacterFrame\\TempPortraitAlphaMask" + self.SocketType[i] = relicType + self.SocketLink[i] = nil + end + + relicCache[i] = {self.SocketInfo[i], self.SocketText[i], self.SocketType[i], self.SocketLink[i]} + end + end + + for i = 1, 3 do + if relicCache[i] then + local relicIcon, relicLevel, relicType, relicLink = unpack(relicCache[i]) + + print('loading', i, relicIcon, relicLevel, relicType, relicLink) + self.SocketInfo[i] = relicIcon + self.SocketText[i] = relicLevel + self.SocketType[i] = relicType + self.SocketLink[i] = relicLink + end + end +end + +local SocketIcon_Update = function(frame) +end + +function VeneerPaperDollSlotMixin:Update() + local id = self:GetID() + + self.SocketInfo = self.SocketInfo or {} + table.wipe(self.SocketInfo) + self.ItemLevel:SetText(nil) + + local tooltip = VeneerPaperDollTooltip + tooltip:SetOwner(self, 'ANCHOR_NONE') + print('refresh', self.unit, id) + tooltip:SetInventoryItem(self.unit or 'player', id) + tooltip:Show() + + local numLines = tooltip:NumLines() + local numTextures = 0 + local itemLevel + local itemLevelLine + print('|cFFFFFF00Sockets scan:', numLines) + for i = 1, numLines do + local line = _G['VeneerPaperDollTooltipTextLeft'..i] + local text = line and line:GetText() + if text then + itemLevel = text:match('Item Level (%d+)') + if itemLevel then + self.ItemLevel:SetText(itemLevel) + break + end + end + + local texture = _G['VeneerPaperDollTooltipTexture'..i] + if texture and texture:IsShown() then + numTextures = numTextures + 1 + print('picked up socket', numTextures, texture:GetTexture()) + self.SocketInfo[numTextures] = texture:GetTexture() + end + end + if self.checkRelic then + self:UpdateRelicInfo() + end + + + local relativeIcon + local socketsWidth = 0 + local socketsHeight = 24 + for index, icon in ipairs(self.Sockets.SocketIcon) do + if self.SocketInfo[index] then + print('|cFF0088FFsocketInfo|r', index, self.SocketInfo[index]) + icon:ClearAllPoints() + + icon:SetTexture(self.SocketInfo[index]) + icon:SetSize(16, 16) + icon:Show() + if index == 1 then + icon:SetPoint('LEFT', self.Sockets, 'LEFT', 0, 0) + socketsWidth = socketsWidth + icon:GetWidth() + socketsHeight = icon:GetHeight() + else + if id == 16 then + icon:SetPoint('LEFT', relativeIcon, 'RIGHT', 14, 0) + socketsWidth = socketsWidth + 14 + else + icon:SetPoint('LEFT', relativeIcon, 'RIGHT', 2, 0) + socketsWidth = socketsWidth + 2 + end + socketsWidth = socketsWidth + icon:GetWidth() + end + + local label = self.Sockets.SocketLabel[index] + label:ClearAllPoints() + label:SetPoint('BOTTOM', icon, 'TOP',0, 2) + label:SetFontObject(VeneerNumberFont) + label:SetText(self.SocketText[index]) + + if self.checkRelic then + local relicAtlasName = ("Relic-%s-Slot"):format(self.SocketType[index]); + self.Sockets.SocketBg = self.Sockets.SocketBg or {} + self.Sockets.SocketBg[index] = self.Sockets.SocketBg[index] or self.Sockets:CreateTexture() + self.Sockets.SocketBg[index]:SetAtlas(relicAtlasName) + self.Sockets.SocketBg[index]:SetPoint('TOPRIGHT', icon, 'TOPRIGHT', 12, 12) + self.Sockets.SocketBg[index]:SetPoint('BOTTOMLEFT', icon, 'BOTTOMLEFT', -12,-12) + print('', self.SocketType[index], relicAtlasName) + + socketsHeight = self.Sockets.SocketBg[index]:GetHeight() + end + + + relativeIcon = icon + else + if self.checkRelic and self.Sockets.SocketBg and self.Sockets.SocketBg[index] then + self.Sockets.SocketBg[index]:SetTexture(nil) + self.Sockets.SocketLabel[index]:SetText(nil) + end + + icon:Hide() + end + + + end + self.Sockets:SetWidth(socketsWidth) + self.Sockets:SetHeight(socketsHeight) + + + + + + self.isDirty = nil +end \ No newline at end of file diff -r d41c7dc3012f -r caded2668701 Modules/TalkingHead.lua --- a/Modules/TalkingHead.lua Tue Oct 25 12:33:20 2016 -0400 +++ b/Modules/TalkingHead.lua Sun Jan 01 18:25:26 2017 -0500 @@ -17,19 +17,19 @@ addonTrigger = 'Blizzard_TalkingHeadUI' } + +local qf = {} + + function VeneerTalkingHeadMixin:OnLoad() Veneer:AddHandler(self, self.anchorPoint) end - - function VeneerTalkingHeadMixin:Setup() print('|cFF00AAFF'..self:GetName()..'|r:Setup()', TalkingHeadFrame:IsShown(), self:IsShown()) self:SetSize(TalkingHeadFrame:GetSize()) self:SetParent(TalkingHeadFrame) - TalkingHeadFrame:ClearAllPoints() - TalkingHeadFrame:SetPoint('BOTTOM', self, 'BOTTOM') hooksecurefunc(TalkingHeadFrame, 'SetPoint', function(...) print('SetPoint', ...) diff -r d41c7dc3012f -r caded2668701 Modules/WorldState.lua --- a/Modules/WorldState.lua Tue Oct 25 12:33:20 2016 -0400 +++ b/Modules/WorldState.lua Sun Jan 01 18:25:26 2017 -0500 @@ -13,10 +13,14 @@ addonTrigger = 'Blizzard_OrderHallUI', addonFrame = 'OrderHallCommandBar', } +VeneerWorldStateHeadsUpMixin = { + +} + VeneerWorldStateCurrencyMixin = { } VeneerWorldStateProgressMixin = { - keepOpen = true, + keepOpen = false, } VeneerWorldStateMixin = { maxHeight = 0, @@ -107,7 +111,7 @@ local lastFrame for i, frame in ipairs(self.modules) do print(' '..frame:GetName()..':',frame:IsShown(), frame:IsVisible(), frame:GetHeight()) - if frame:IsShown() then + if frame:IsVisible() then if lastFrame then frame:SetPoint('TOP', lastFrame, 'BOTTOM') else @@ -130,6 +134,9 @@ if not isUpdate then Veneer:InternalReanchor(self, print) end + + WorldStateAlwaysUpFrame:ClearAllPoints() + WorldStateAlwaysUpFrame:SetPoint('TOP', self, 'BOTTOM', 0, 0) end @@ -204,23 +211,34 @@ function VeneerWorldStateCurrencyMixin:OnEvent (event, arg) self:Update() end +local zoneCurrency = { + ['Suramar'] = 1155, + ["Sashj'tar Ruins"] = 1155, + ["Faronaar Ruins"] = 1155 +} +local zoneBountyInfo = { + ['Suramar'] = 1859, + ["Sashj'tar Ruins"] = 1859, + ["Faronaar Ruins"] = 1859, - + ['Azsuna'] = 1900, +} +local globalBountyInfo = { +} function VeneerWorldStateCurrencyMixin:Update(isBatchUpdate) - - print(' Zone:', GetZoneText()) - if GetZoneText() == 'Suramar' then - local name, earned, texture, earnedThisWeek, weeklyMax, totalMax = GetCurrencyInfo(1155) - - self.Icon:SetTexture(texture) - self.Label:SetFormattedText("%d / %d", earned, totalMax) - self:Show() - self:SetWidth(self.Icon:GetWidth() + self.Label:GetStringWidth() + 6) + local zoneText = GetRealZoneText() + if zoneText then + local currency = zoneCurrency[zoneText] + if currency then + local name, earned, texture, earnedThisWeek, weeklyMax, totalMax = GetCurrencyInfo(zoneCurrency[zoneText]) + self.Icon:SetTexture(texture) + self.Label:SetFormattedText("%d / %d", earned, totalMax) + self:Show() + self:SetWidth(self.Icon:GetWidth() + self.Label:GetStringWidth() + 6) + end else self:Hide() end - - end function VeneerWorldStateProgressMixin:OnUpdate(sinceLast) @@ -228,15 +246,11 @@ if self.keepOpen then return end - if self.timeLived >= 3 and not self.TransitionFadeOut:IsPlaying() then - if not self.timeOut then - self.timeOut = true - self.TimedFadeOut:Play() - end + if self.timeLived >= 3 and not self.TimedFadeOut:IsPlaying() then + self.TimedFadeOut:Play() end end - function VeneerWorldStateProgressMixin:OnLoad() self:RegisterEvent('PLAYER_EQUIPMENT_CHANGED') @@ -375,7 +389,7 @@ function VeneerWorldStateProgressMixin:Update(isBatchUpdate) local progressChange = false - print(' current mode:', self.mode) + print(' current mode:', self.mode, 'vis:', self:IsVisible()) if (not self.mode) or (not progressHandlers[self.mode]) then self:HidePanel() return @@ -388,6 +402,7 @@ self.timeLived = 0 end + if not self:IsVisible() then self.TransitionFadeIn:Play() else @@ -454,8 +469,11 @@ self.timeLived = 1000 else self.keepOpen = true + + self.modeChanged = true end print('keepOpen =', self.keepOpen) + self:Update() else if self.mode == 'xp' then @@ -486,6 +504,7 @@ function WorldStateBlockMixin:ShowPanel() print('|cFF0088FF'..self:GetName()..':ShowPanel()') self:SetShown(true) + self:SetAlpha(1) VeneerWorldState:Show() end function WorldStateBlockMixin:HidePanel() @@ -522,4 +541,5 @@ self.keepOpen = true self:Setup() end -end \ No newline at end of file +end + diff -r d41c7dc3012f -r caded2668701 Modules/WorldState.xml --- a/Modules/WorldState.xml Tue Oct 25 12:33:20 2016 -0400 +++ b/Modules/WorldState.xml Sun Jan 01 18:25:26 2017 -0500 @@ -3,12 +3,13 @@