# HG changeset patch # User Nenue # Date 1500306691 14400 # Node ID 1f68c46bc4de40f0d74f94692644a286f0e8fb0d # Parent 5f1ba488c395b40b82fa8a1fe97746dd3b60d078 BuffFrame: - Added interface framework for selectively hiding certain buff's auxiliary values. diff -r 5f1ba488c395 -r 1f68c46bc4de Modules/ArtifactPower.lua --- a/Modules/ArtifactPower.lua Sun Jun 04 18:20:40 2017 -0400 +++ b/Modules/ArtifactPower.lua Mon Jul 17 11:51:31 2017 -0400 @@ -14,9 +14,10 @@ worldQuestAP = 0, worldQuestItems = {}, ItemButtons = {}, + anchorGroup = 'TOP', anchorPoint = 'TOP', anchorPriority = 3, - anchorFrom = 'TOP', + anchorFrom = 'BOTTOMLEFT', moduleName = 'Artifactor', HideCombat = true } diff -r 5f1ba488c395 -r 1f68c46bc4de Modules/BuffFrame.lua --- a/Modules/BuffFrame.lua Sun Jun 04 18:20:40 2017 -0400 +++ b/Modules/BuffFrame.lua Mon Jul 17 11:51:31 2017 -0400 @@ -47,7 +47,8 @@ Buttons = {}, DetectedFrames = {}, - AuraCache = {} + AuraCache = {}, + ValueMasks = {} } VeneerBuffFrameButtonMixin = {} local Facade = VeneerBuffFrameButtonMixin @@ -70,6 +71,7 @@ local expirationCache = {} local visibility = {} local isHooked = {} +local valueMasks plugin.options = { nameString = 'Buff Frames', @@ -303,13 +305,32 @@ self:SetupButton('TempEnchant'..i) _G['TempEnchant'..i..'Border']:SetVertexColor(0.5,0,1,1) end + + VeneerData.BuffFrame = VeneerData.BuffFrame or {} + VeneerData.BuffFrame.ValueMasks = VeneerData.BuffFrame.ValueMasks or {} + valueMasks = VeneerData.BuffFrame.ValueMasks end function plugin:SetHidden(region) if not self.hiddenRegions[region] then self.hiddenRegions[region] = true region:SetShown(false) - hooksecurefunc(region) + + end +end + +local lastAuditName = '' +local lastAuditIndex = '' +local Audit_OnClick = function(self) + + local facade = self:GetParent() + local index = self.index + local name = facade.buffName + if name then + DEFAULT_CHAT_FRAME:AddMessage('|cFF00FFFFVeneer|r: Hiding |cFF00FF88'..name..' value'..index..'|r, type /vn buffs reset to undo.') + valueMasks[name] = valueMasks[name] or {} + valueMasks[name][index] = false + print('AuditClick', name, index, false) end end @@ -366,6 +387,16 @@ facade:SetShown(isShown) end) + facade.Audit = facade.Audit or {} + for i = 1, 3 do + local button = CreateFrame('Button', nil, facade, 'VeneerBuffAuditTemplate') + button.index = i + button:RegisterForClicks('AnyUp') + button:SetScript('OnClick', Audit_OnClick) + button:SetPoint('TOPLEFT', 0, (i-1) * 16 * -1) + facade.Audit[i] = button + end + facade.IsAcquired = true facade:SetParent(UIParent) facade:SetAllPoints(frame) @@ -374,6 +405,7 @@ --- Set widgets to reflect the passed parameters +local values = {} function plugin:UpdateButton (name, duration, expires) local frame = _G[name] local facade = self:Acquire(name) @@ -382,7 +414,6 @@ print('|cFFFF4400detected', name) self:SetupButton(name) end - print(facade:GetParent():GetName(), facade:GetPoint(1)) --[[ if frame.count then frame.count:SetText('test') @@ -391,8 +422,11 @@ --]] local name, rank, icon, count, dispelType, duration, expires, caster, isStealable, nameplateShowPersonal, spellID, canApplyAura, isBossDebuff, _, nameplateShowAll, timeMod, value1, value2, value3 = UnitAura(frame.unit, frame:GetID(), frame.filter) + values[1] = value1 + values[2] = value2 + values[3] = value3 - + facade.buffName = name if expires and duration then if duration ~= 0 then @@ -425,13 +459,13 @@ end) - facade.cooldown:Show() - facade.cooldown:SetCooldown(startTime, duration) + --facade.cooldown:Show() + --facade.cooldown:SetCooldown(startTime, duration) else print('|cFF00FF88'..frame:GetName()..'|r', 'duration zero') facade.progress:SetScript('OnUpdate', nil) facade.progress:Hide() - facade.cooldown:Hide() + --facade.cooldown:Hide() end if count and count > 1 then @@ -442,15 +476,22 @@ facade.count:Hide() end + for i, button in ipairs(facade.Audit) do + local isShown = (values[i] and true) + if valueMasks[name] and valueMasks[name][i] ~= nil then + print(':: use value mask', name, i) + isShown = (values[i] == 1) and true or false + end - facade.overlay.Value1:SetText(value1) - facade.overlay.Value2:SetText(value2) - facade.overlay.Value3:SetText(value3) + facade.Audit[i]:SetShown(isShown) + facade.Audit[i].Value:SetText(values[i]) + end + else facade.progress:Hide() - facade.cooldown:SetCooldown(0,0) - facade.cooldown:Hide() + --facade.cooldown:SetCooldown(0,0) + --facade.cooldown:Hide() print('|cFF88FF00'..frame:GetName()..'|r', 'nil duration') end facade:Show() diff -r 5f1ba488c395 -r 1f68c46bc4de Modules/BuffFrame.xml --- a/Modules/BuffFrame.xml Sun Jun 04 18:20:40 2017 -0400 +++ b/Modules/BuffFrame.xml Mon Jul 17 11:51:31 2017 -0400 @@ -6,6 +6,23 @@ + + + @@ -33,11 +50,6 @@ - - - - - diff -r 5f1ba488c395 -r 1f68c46bc4de Modules/FriendsFrame.lua --- a/Modules/FriendsFrame.lua Sun Jun 04 18:20:40 2017 -0400 +++ b/Modules/FriendsFrame.lua Mon Jul 17 11:51:31 2017 -0400 @@ -3,9 +3,8 @@ -- Created: 10/27/2016 8:50 PM -- %file-revision% -- - -VeneerLFGMixin = {} -local Module = VeneerLFGMixin +local m = {} +VeneerLFGMixin = m local _, db = ... local print = DEVIAN_WORKSPACE and function(...) print('VnTweaks', ...) end or nop @@ -76,4 +75,4 @@ -end) \ No newline at end of file +end) diff -r 5f1ba488c395 -r 1f68c46bc4de Modules/GuildInfo.lua --- a/Modules/GuildInfo.lua Sun Jun 04 18:20:40 2017 -0400 +++ b/Modules/GuildInfo.lua Mon Jul 17 11:51:31 2017 -0400 @@ -2,10 +2,12 @@ local print = DEVIAN_WORKSPACE and function(...) print('VnRoster', ...) end or nop VeneerRosterKunMixin = { - addonTrigger = 'Blizzard_GuildUI', + anchorFrame = 'LFGListFrame', + anchorPoint = 'TOPLEFT', - anchorFrame = 'GuildFrame', - anchorPoint = 'TOPLEFT', + AchievementsDirty = true, + GuildInfoDirty = true, + blocks = {}, } @@ -13,18 +15,35 @@ function module:OnLoad() Veneer:AddHandler(self, self.anchorPoint) - self:RegisterEvent('GUILD_ROSTER_UPDATE') - self:RegisterEvent('GUILD_TRADESKILL_UPDATE') + --self:RegisterEvent('GUILD_ROSTER_UPDATE') + --self:RegisterEvent('GUILD_TRADESKILL_UPDATE') self:RegisterEvent('LFG_LIST_SEARCH_RESULT_UPDATED') - self:RegisterEvent('LFG_LIST_SEARCH_RESULTS_RECEIVED') - self:RegisterEvent('LFG_LIST_AVAILABILITY_UPDATE') - self:RegisterEvent('LFG_LIST_LOCK_INFO_RECEIVED') + --self:RegisterEvent('LFG_LIST_SEARCH_RESULTS_RECEIVED') + --self:RegisterEvent('LFG_LIST_AVAILABILITY_UPDATE') + --self:RegisterEvent('LFG_LIST_LOCK_INFO_RECEIVED') + self:RegisterEvent('ADDON_LOADED') + + hooksecurefunc("LFGListSearchPanel_SelectResult", function(obj) + print('LFGListSearchPanel_SelectResult') + self.selectedID = obj.selectedResult + print('selected =', self.selectedID) + self:UpdateAchievementLinks() + end) + hooksecurefunc("LFGListSearchPanel_SignUp", function(obj) + print('LFGListSearchPanel_SignUp', obj.selectedResult) + + + self.selectedID = obj.selectedResult + print('selected =', self.selectedID) + self:UpdateAchievementLinks() + end) end function module:Setup() VeneerHandlerMixin.Setup(self) - self:SetParent(GuildFrame) + self:SetParent(LFGListFrame) + self:SetPoint('TOPLEFT', LFGListFrame,'TOPRIGHT') self:SetShown(true) end @@ -33,31 +52,149 @@ self:Update() else self.GuildInfoDirty = true + self.AchievementsDirty = true end end - +local firstLoad = true function module:OnShow() print('|cFF00FFFFOnShow()|r') - if self.GuildInfoDirty then - self:UpdateGuildInfo() - end + self:Update(firstLoad) + firstLoad = nil end function module:UpdateGuildInfo() local numMembers = GetNumGuildMembers() print(numMembers) for i = 1, numMembers do - print(GetGuildRosterInfo(i)) + --print(GetGuildRosterInfo(i)) + end + self.GuildInfoDirty = nil +end + +-- cheevos to link +local cheevos = { + -- Mythic Prog: Tomb + { + 11781, -- kj + 11780, -- avatar + 11779, -- maiden + 11776, -- mistress + 11777, -- sisters + 11778, -- host, + 11775, -- harjatan, + 11774, -- di, + 11773, -- goroth + }, + -- Completion: Tomb + { + 11875, -- CE KJ + 11874, -- AotC KJ + 11790 -- Deceiver's Fall, + + + }, + -- Mythic+ + { + 11162, -- master + 11185, -- conqueror + } +} + +local cheev = {} + +function cheev:OnClick() + local resultID = LFGListFrame.SearchPanel.selectedResult or self:GetParent().selectedID + print('current selection = ', resultID) + if ACTIVE_CHAT_EDIT_BOX then + ChatEdit_InsertLink(self.link) + elseif resultID then + local id, activityID, name, comment, voiceChat, iLvl, honorLevel, age, numBNetFriends, numCharFriends, numGuildMates, isDelisted, leaderName = C_LFGList.GetSearchResultInfo(resultID); + --print(name, comment, leaderName) + ChatFrame_OpenChat("/w "..leaderName.." "..self.link, DEFAULT_CHAT_FRAME) end end -function module:Update() end +function module:UpdateAchievementLinks() + print('UpdateAchievementLinks()') + + local resultID = LFGListFrame.SearchPanel.selectedResult or self.selectedID + self:Show() + + + local index = 0 + local lastBlock + local contentsHeight = 0 + for _, group in ipairs(cheevos) do + for _, id in ipairs(group) do + local _, name, points, completed, month, day, year, description, flags, icon = GetAchievementInfo(id) + if completed then + index = index + 1 + --print(index) + local block =self.blocks[index] + if not block then + block = CreateFrame('Button', 'VeneerRosterKunBlock'..index, self, 'VeneerRosterKunBlock') + block:SetScript('OnClick', cheev.OnClick) + block:SetID(index) + self.blocks[index] = block + end + + block.link = GetAchievementLink(id) + block.Icon:SetTexture(icon) + block.Label:SetText(name) + block:ClearAllPoints() + if lastBlock then + block:SetPoint('TOPLEFT', lastBlock, 'BOTTOMLEFT', 0, 0) + else + block:SetPoint('TOPLEFT') + end + --print(block:GetHeight(), block:GetPoint(1)) + block:Show() + + contentsHeight = contentsHeight + block:GetHeight() + + --print(index, name, icon) + lastBlock = block + break; + end + end + end + + --print(index, #self.blocks) + if index < #self.blocks then + for i = index+1, #self.blocks do + --print('hiding', i) + self.blocks[i]:Hide() + end + + end + + self:SetHeight(contentsHeight) + +end + +function module:Update(forced) + + + if self.GuildInfoDirty or forced then + self:UpdateGuildInfo() + end + if self.AchievementsDirty or forced then + self:UpdateAchievementLinks() + end + +end +function module:SetupGuildUI() + self:UnregisterEvent('ADDON_LOADED') +end function module:OnEvent(event, ...) print('|cFFFF0088OnEvent()|r', event, ...) - if event == 'LFG_LIST_SEARCH_RESULTS_RECEIVED' then + if event == 'ADDON_LOADED' then + local addon = ... + if addon == 'Blizzard_GuildUI' then + self:SetupGuildUI() + end + elseif event == 'LFG_LIST_SEARCH_RESULTS_RECEIVED' then elseif event == 'LFG_LIST_SEARCH_RESULT_UPDATED' then - elseif event == 'GUILD_ROSTER_UPDATE' then - self:SetDirty() end -end \ No newline at end of file +end diff -r 5f1ba488c395 -r 1f68c46bc4de Modules/GuildInfo.xml --- a/Modules/GuildInfo.xml Sun Jun 04 18:20:40 2017 -0400 +++ b/Modules/GuildInfo.xml Mon Jul 17 11:51:31 2017 -0400 @@ -4,7 +4,41 @@ + + + + + + + + + + + \ No newline at end of file diff -r 5f1ba488c395 -r 1f68c46bc4de Modules/TalkingHead.lua --- a/Modules/TalkingHead.lua Sun Jun 04 18:20:40 2017 -0400 +++ b/Modules/TalkingHead.lua Mon Jul 17 11:51:31 2017 -0400 @@ -5,32 +5,34 @@ -- local print = DEVIAN_WORKSPACE and function(...) print('VnTalkingHead', ...) end or nop - -VeneerTalkingHeadMixin = { +local thf = TalkingHeadFrame +local m = { anchorPoint = 'BOTTOMLEFT', anchorFrom = 'TOPLEFT', anchorX = -4, anchorY = 96, anchorFrame = 'ChatFrame1', - addonTrigger = 'Blizzard_TalkingHeadUI' } +VeneerTalkingHeadMixin = m local qf = {} -function VeneerTalkingHeadMixin:OnLoad() +function m:OnLoad() Veneer:AddHandler(self, self.anchorPoint) + -- force this so we can implant + LoadAddOn('Blizzard_TalkingHeadUI') + thf = TalkingHeadFrame end -function VeneerTalkingHeadMixin:Setup() - print('|cFF00AAFF'..self:GetName()..'|r:Setup()', TalkingHeadFrame:IsShown(), self:IsShown()) +function m:Setup() + print('|cFF00AAFF'..self:GetName()..'|r:Setup()', thf:IsShown(), self:IsShown()) - self:SetSize(TalkingHeadFrame:GetSize()) - self:SetParent(TalkingHeadFrame) + self:SetSize(thf:GetSize()) - hooksecurefunc(TalkingHeadFrame, 'SetPoint', function(...) + hooksecurefunc(thf, 'SetPoint', function(...) print('SetPoint', ...) print(debugstack()) end) @@ -39,44 +41,44 @@ self:ClearAnchor() end -function VeneerTalkingHeadMixin:ClearAnchor() +function m:ClearAnchor() UIPARENT_MANAGED_FRAME_POSITIONS["TalkingHeadFrame"] = nil for i, alertSubSystem in pairs(AlertFrame.alertFrameSubSystems) do - if alertSubSystem.anchorFrame == TalkingHeadFrame then + if alertSubSystem.anchorFrame == thf then tremove(AlertFrame.alertFrameSubSystems, i) return end end end -function VeneerTalkingHeadMixin:OnShow() - if TalkingHeadFrame then - print('|cFF00AAFF'..self:GetName()..'|r:OnShow()', TalkingHeadFrame:IsShown(), self:IsShown()) +function m:OnShow() + if thf then + print('|cFF00AAFF'..self:GetName()..'|r:OnShow()', thf:IsShown(), self:IsShown()) print(debugstack()) self:Update() end end -function VeneerTalkingHeadMixin:Reanchor() +function m:Reanchor() self:ClearAllPoints() self:SetPoint('BOTTOMLEFT', _G[self.anchorFrame], 'TOPLEFT', -4, 24) self:SetPoint('RIGHT', _G[self.anchorFrame], 'RIGHT', 2, 0) -- independent module, end -function VeneerTalkingHeadMixin:OnHide() - if TalkingHeadFrame then - print('|cFF00AAFF'..self:GetName()..'|r:OnHide()', TalkingHeadFrame:IsShown(), self:IsShown()) +function m:OnHide() + if thf then + print('|cFF00AAFF'..self:GetName()..'|r:OnHide()', thf:IsShown(), self:IsShown()) end Veneer:Reanchor() end -function VeneerTalkingHeadMixin:Update() +function m:Update() - print('|cFF00AAFF'..self:GetName()..'|r:OnShow()', TalkingHeadFrame:IsShown(), self:IsShown()) - TalkingHeadFrame:ClearAllPoints() - TalkingHeadFrame:SetAllPoints(self) + print('|cFF00AAFF'..self:GetName()..'|r:OnShow()', thf:IsShown(), self:IsShown()) + thf:ClearAllPoints() + thf:SetAllPoints(self) Veneer:InternalReanchor(self) end diff -r 5f1ba488c395 -r 1f68c46bc4de Templates.lua --- a/Templates.lua Sun Jun 04 18:20:40 2017 -0400 +++ b/Templates.lua Mon Jul 17 11:51:31 2017 -0400 @@ -22,6 +22,9 @@ Veneer.ConfigLayerBase = ConfigLayer Veneer.AnimationBase = Animation +local ANCHOR_BUTTON_TYPES = { + 'TOPLEFT', 'TOP', 'TOPRIGHT', 'RIGHT', 'LEFT', 'CENTER', 'BOTTOMLEFT', 'BOTTOM', 'BOTTOMRIGHT' +} function ConfigLayer:OnLoad() local handler = self:GetParent() @@ -30,6 +33,43 @@ for i, region in ipairs(handler.ConfigLayers) do region:SetShown(Veneer.ConfigMode) end + self.handler = handler +end + +function ConfigLayer:OnShow() + self:Update() +end + +function ConfigLayer:Update() + if not self.anchorButtons then + self.anchorButtons = {} + for _, anchorPoint in ipairs(ANCHOR_BUTTON_TYPES) do + local button = CreateFrame('Button', nil, self, 'VeneerAnchorButtonTemplate') + button.anchorPoint = anchorPoint + button:SetScript('OnMouseDown', function() end) + button:SetScript('OnMouseUp', function() end) + button:SetPoint(anchorPoint) + button:SetSize(16,16) + + self.anchorButtons[anchorPoint] = button + end + end + + for anchorPoint, button in pairs(self.anchorButtons) do + if anchorPoint == self.handler.anchorPoint then + button:GetNormalTexture():SetColorTexture(0,1,0,1) + else + button:GetNormalTexture():SetColorTexture(0.5,0.5,0.5,1) + end + end + + self:RegisterForDrag('LeftButton') +end + +function ConfigLayer:OnDragStart() + +end +function ConfigLayer:OnDragStop() end diff -r 5f1ba488c395 -r 1f68c46bc4de Templates.xml --- a/Templates.xml Sun Jun 04 18:20:40 2017 -0400 +++ b/Templates.xml Mon Jul 17 11:51:31 2017 -0400 @@ -74,6 +74,15 @@ + + @@ -140,6 +149,12 @@ + + + + + + @@ -147,12 +162,6 @@ - - > - - - - diff -r 5f1ba488c395 -r 1f68c46bc4de Veneer.lua --- a/Veneer.lua Sun Jun 04 18:20:40 2017 -0400 +++ b/Veneer.lua Mon Jul 17 11:51:31 2017 -0400 @@ -331,6 +331,7 @@ end + -- Recursives updates frame group anchors function Veneer:EvaluateAnchors(parent) parent = parent or self