# HG changeset patch
# User Nenue
# Date 1490698946 14400
# Node ID 8c94bee4fdfcb8470b418d3c92ed06bc4b1d3914
# Parent 6748c98a6c6cf7c96449e206d270f8407006ddcb
- AddHandler simplified
- Centralized combat start/stop hooks
- WorldState removed
diff -r 6748c98a6c6c -r 8c94bee4fdfc Modules/ArtifactPower.lua
--- a/Modules/ArtifactPower.lua Mon Mar 27 00:39:29 2017 -0400
+++ b/Modules/ArtifactPower.lua Tue Mar 28 07:02:26 2017 -0400
@@ -13,7 +13,10 @@
scanQueue = {},
ItemButtons = {},
anchorPoint = 'TOP',
+ anchorPriority = 2,
anchorFrom = 'TOP',
+ moduleName = 'Artifactor',
+ HideCombat = true
}
local defaultSettings = {
firstUse = true,
@@ -53,7 +56,7 @@
self:RegisterEvent('PLAYER_REGEN_DISABLED')
self:RegisterEvent('PLAYER_ENTERING_WORLD')
self:RegisterEvent('ITEM_LOCK_CHANGED') -- use to clear bag slot cache data
- Veneer:AddHandler(self, self.anchorPoint, 2)
+ Veneer:AddHandler(self)
SLASH_VENEER_AP1 = "/vap"
SLASH_VENEER_AP2 = "/veneerap"
SlashCmdList.VENEER_AP = function(arg)
diff -r 6748c98a6c6c -r 8c94bee4fdfc Modules/BuffFrame.lua
--- a/Modules/BuffFrame.lua Mon Mar 27 00:39:29 2017 -0400
+++ b/Modules/BuffFrame.lua Tue Mar 28 07:02:26 2017 -0400
@@ -41,10 +41,10 @@
VeneerBuffFrameMixin = {
moduleName = 'Buff Frames',
- defaultCluster = 'TOPRIGHT',
+ anchorPoint = 'TOPRIGHT',
anchorX = BUFF_FRAMES_X,
anchorY = BUFF_FRAMES_Y,
- anchorPoint = 'TOPRIGHT',
+
Buttons = {},
DetectedFrames = {},
AuraCache = {}
@@ -288,12 +288,12 @@
end
function plugin:OnLoad()
- Veneer:AddHandler(self, self.defaultCluster)
+ print(self:GetName(), 'OnLoad()')
+ Veneer:AddHandler(self)
end
function plugin:Setup()
-
-
+ print(self:GetName(), 'Setup()')
hooksecurefunc("BuffFrame_Update", function(...) self:OnBuffFrameUpdate(...) end)
hooksecurefunc("AuraButton_UpdateDuration", function(...) self:OnUpdateDuration(...) end)
hooksecurefunc("AuraButton_Update", function(...) self:OnAuraButton_Update(...) end)
diff -r 6748c98a6c6c -r 8c94bee4fdfc Modules/Currency.lua
--- a/Modules/Currency.lua Mon Mar 27 00:39:29 2017 -0400
+++ b/Modules/Currency.lua Tue Mar 28 07:02:26 2017 -0400
@@ -7,6 +7,7 @@
--
local print = DEVIAN_WORKSPACE and function(...) print('VnWorldState', ...) end or nop
+local profileUpdate, needsUpdate
local zoneEvents = {
"ZONE_CHANGED_NEW_AREA", "ZONE_CHANGED_INDOORS", "ZONE_CHANGED"
@@ -31,13 +32,19 @@
itemID = 124124,
}
}
-local items = {}
+local items, currencies = {}, {}
-VeneerWorldStateCurrencyMixin = { Blocks = {} }
-VeneerWorldStateCurrencyBlockMixin = {}
-local module = VeneerWorldStateCurrencyMixin
-local block = VeneerWorldStateCurrencyBlockMixin
+VeneerCurrencyMixin = {
+ Blocks = {},
+ HideCombat = true,
+ EventList = {'PLAYER_ENTERING_WORLD'},
+ moduleName = 'Currency Watch',
+ anchorPoint = 'TOP',
+}
+VeneerCurrencyBlockMixin = {}
+local module = VeneerCurrencyMixin
+local block = VeneerCurrencyBlockMixin
@@ -49,9 +56,7 @@
end
function module:OnLoad ()
- self:RegisterEvent("PLAYER_ENTERING_WORLD");
- self:RegisterEvent('PLAYER_REGEN_ENABLED')
- self:RegisterEvent('PLAYER_REGEN_DISABLED')
+ Veneer:AddHandler(self)
for name, info in pairs(blocks) do
local frame = CreateFrame('Frame', nil, self, 'VeneerCurrencyTemplate')
@@ -138,15 +143,16 @@
local texture, count = GetContainerItemInfo(i,j)
if items[itemID] then
items[itemID].count = items[itemID].count + (count or 1)
- items[itemID].texture = texture
- print('tracked currency tally', items[itemID].count, '|T'..texture..':16:16|t')
- items[itemID].frame.Icon:SetTexture(texture)
+ if not items[itemID].texture then
+ items[itemID].texture = texture
+ print('tracked currency tally', items[itemID].count, '|T'..texture..':16:16|t')
+ items[itemID].frame.Icon:SetTexture(texture)
+ end
end
end
end
- for itemID, info in pairs(items) do
- end
+
local lastBlock
local totalWidth = 0
@@ -170,21 +176,36 @@
totalWidth = totalWidth + block:GetWidth()
end
print(block:IsShown(), '|cFF0088FF'..block.name..'|r', block:GetSize())
-
end
+ self:UpdateProfile()
self:SetWidth(totalWidth)
- self.needsUpdate = nil
+ needsUpdate = nil
print(self:IsShown(), '|cFF00FF88'..self:GetName()..'|r', self:GetSize())
self:SetShown(canShow)
- VeneerWorldState:Reanchor(true)
+ Veneer:DynamicReanchor()
+end
+
+function module:UpdateProfile()
+ if not self.profile then
+ profileUpdate = true
+ return
+ end
+
+ for itemID, info in pairs(items) do
+ self.profile.Items = self.profile.Items or {}
+ self.profile.Items[itemID] = info
+ end
end
function module:OnUpdate()
- if self.needsUpdate then
+ if needsUpdate then
self:Update()
+ elseif profileUpdate then
+ self:UpdateProfile()
end
+
end
function block:OnEnter()
diff -r 6748c98a6c6c -r 8c94bee4fdfc Modules/Currency.xml
--- a/Modules/Currency.xml Mon Mar 27 00:39:29 2017 -0400
+++ b/Modules/Currency.xml Tue Mar 28 07:02:26 2017 -0400
@@ -2,7 +2,7 @@
..\FrameXML\UI.xsd">
-
+
@@ -36,7 +36,7 @@
-
+
diff -r 6748c98a6c6c -r 8c94bee4fdfc Modules/FriendsFrame.lua
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/Modules/FriendsFrame.lua Tue Mar 28 07:02:26 2017 -0400
@@ -0,0 +1,6 @@
+-- Veneer
+-- FriendsFrame.lua
+-- Created: 10/27/2016 8:50 PM
+-- %file-revision%
+--
+
diff -r 6748c98a6c6c -r 8c94bee4fdfc Modules/FriendsFrame.xml
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/Modules/FriendsFrame.xml Tue Mar 28 07:02:26 2017 -0400
@@ -0,0 +1,9 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff -r 6748c98a6c6c -r 8c94bee4fdfc Modules/PaperDoll.xml
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/Modules/PaperDoll.xml Tue Mar 28 07:02:26 2017 -0400
@@ -0,0 +1,54 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff -r 6748c98a6c6c -r 8c94bee4fdfc Modules/WorldState.lua
--- a/Modules/WorldState.lua Mon Mar 27 00:39:29 2017 -0400
+++ b/Modules/WorldState.lua Tue Mar 28 07:02:26 2017 -0400
@@ -5,7 +5,7 @@
-- An extensible panel group for HUD values
local print = DEVIAN_WORKSPACE and function(...) print('VnWorldState', ...) end or nop
-local WorldStateBlockMixin = {}
+
VeneerOrderHallMixin = {
anchorPoint = 'TOP',
anchorFrom = 'TOP',
@@ -15,138 +15,6 @@
addonTrigger = 'Blizzard_OrderHallUI',
addonFrame = 'OrderHallCommandBar',
}
-
-VeneerWorldStateMixin = {
- maxHeight = 0,
- detectedFrames = {},
- anchorPoint = 'TOP',
- modules = {}
-}
-
-function VeneerWorldStateMixin:Reset()
- for i, frame in ipairs(self.modules) do
- if frame.Reset then
- frame:Reset()
- end
- end
- self:Update()
-end
-
-function VeneerWorldStateMixin:Setup()
- --DEFAULT_CHAT_FRAME:AddMessage('Loaded')
- print('|cFFFFFF00'..self:GetName()..'|r:Setup()')
-
- for i, frame in ipairs(self.modules) do
- print('--'.. frame:GetName()..' exists')
- if frame.Setup then
- print('--'.. frame:GetName()..':Setup()')
- frame:Setup()
- end
-
-
- for k,v in pairs(WorldStateBlockMixin) do
- if not frame[k] then
- frame[k] = v
- if k:match('^On') then
- frame:SetScript(k, v)
- end
- end
- end
-
- end
- self:UnregisterEvent('PLAYER_LOGIN')
-end
-
-function VeneerWorldStateMixin:SetOrderHallUIMods()
- print('|cFFFF4400remove me', debugstack())
-end
-
-
-function VeneerWorldStateMixin:OnLoad ()
- self.modules = {self:GetChildren()}
- print('|cFFFFFF00'..self:GetName()..'|r!')
- self:RegisterEvent('PLAYER_ENTERING_WORLD')
- self:RegisterEvent('PLAYER_REGEN_ENABLED')
- self:RegisterEvent('PLAYER_REGEN_DISABLED')
- Veneer:AddHandler(self, self.anchorPoint, self.anchorPriority)
- SLASH_VENEERWORLDSTATE1 = "/vws"
- SLASH_VENEERWORLDSTATE2 = "/worldstate"
- SlashCmdList.VENEERWORLDSTATE = function()
- self:Reset()
- end
-end
-
-function VeneerWorldStateMixin:OnEvent(event, arg)
- print(event, arg)
- if event == 'PLAYER_ENTERING_WORLD' then
- self:Update()
- elseif event == 'PLAYER_REGEN_ENABLED' then
- self:Update(true)
- elseif event == 'PLAYER_REGEN_DISABLED' then
- self:Update(true)
- end
-end
-
-function VeneerWorldStateMixin:Update(isBatchUpdate)
- print('|cFFFFFF00All:Update()|r')
- local canShow = false
- for index, frame in ipairs(self.modules) do
- if frame.Update then
- print(' '..index..' |cFFFF00FFUpdate:|r '.. frame:GetName())
- frame:Update(isBatchUpdate)
- print(' ', frame:IsVisible(), frame:IsShown())
- if frame:IsShown() then
- canShow = true
- end
-
- end
- end
- self:SetShown(canShow)
-end
-
-function VeneerWorldStateMixin:OnShow()
- print('OnShow()', debugstack())
-end
-
-function VeneerWorldStateMixin:Reanchor(isUpdate)
- print(' |cFF0088FF'..self:GetName()..':Reanchor()|r', #self.modules, 'blocks')
- self.maxHeight = 0
- local lastFrame
- for i, frame in ipairs(self.modules) do
- print(' '..frame:GetName()..':',frame:IsShown(), frame:GetHeight())
- if frame:IsShown() then
- if lastFrame then
- frame:SetPoint('TOP', lastFrame, 'BOTTOM')
- else
- frame:SetPoint('TOP', self, 'TOP')
- end
-
- self.maxHeight = self.maxHeight + frame:GetHeight()
- lastFrame = frame
- end
- end
- if (self.maxHeight == 0) or InCombatLockdown() then
- print (' hiding; combat =', InCombatLockdown())
- self:SetShown(false)
- else
- print (' height update:', self.maxHeight)
- self:SetHeight(self.maxHeight)
- self:SetShown(true)
- end
-
- if not isUpdate then
- Veneer:InternalReanchor(self, print)
- end
-
- WorldStateAlwaysUpFrame:ClearAllPoints()
- WorldStateAlwaysUpFrame:SetPoint('TOP', self, 'BOTTOM', 0, 0)
-end
-
-
-
-function VeneerWorldStateMixin:OnMouseDown()
-end
-
--- Order Hall mod
local requiresUpdate
local ocb
@@ -200,7 +68,7 @@
end
function VeneerOrderHallMixin:OnLoad()
- Veneer:AddHandler(self, 'TOP', 1)
+ Veneer:AddHandler(self)
self:EnableMouse(false)
end
@@ -248,47 +116,4 @@
-do
- function WorldStateBlockMixin:ShowPanel()
- print('|cFF0088FF'..self:GetName()..':ShowPanel()')
- self:SetShown(true)
- self:SetAlpha(1)
- VeneerWorldState:Show()
- end
- function WorldStateBlockMixin:HidePanel()
- print('|cFF0088FF'..self:GetName()..':HidePanel()')
- self:SetShown(false)
- VeneerWorldState:Reanchor()
- end
- function WorldStateBlockMixin:OnSizeChanged ()
- local h = self:GetHeight()
- if h > VeneerWorldState.maxHeight then
- VeneerWorldState.maxHeight = h
- VeneerWorldState:SetHeight(h)
- print('updating max height:', h)
- elseif h < VeneerWorldState.maxHeight then
- VeneerWorldState:Reanchor()
- end
- end
- function WorldStateBlockMixin:OnHide ()
- print('|cFF0088FF'..self:GetName()..':OnHide()')
- VeneerWorldState:Reanchor()
- end
- function WorldStateBlockMixin:OnShow ()
- self.timeLived = 0
- print('|cFF0088FF'..self:GetName()..':OnShow()')
- VeneerWorldState:Reanchor()
- end
- function WorldStateBlockMixin:Setup()
- print('|cFF0088FF'..self:GetName()..':Setup()|r -- nop')
- self:Update()
- end
- function WorldStateBlockMixin:Reset()
- print('|cFF0088FF'..self:GetName()..':Reset()')
- self.keepOpen = true
- self:Setup()
- end
-end
-
-
diff -r 6748c98a6c6c -r 8c94bee4fdfc Modules/WorldState.xml
--- a/Modules/WorldState.xml Mon Mar 27 00:39:29 2017 -0400
+++ b/Modules/WorldState.xml Tue Mar 28 07:02:26 2017 -0400
@@ -3,14 +3,6 @@
-
-
-
-
-
-
-
-
\ No newline at end of file
diff -r 6748c98a6c6c -r 8c94bee4fdfc Templates.lua
--- a/Templates.lua Mon Mar 27 00:39:29 2017 -0400
+++ b/Templates.lua Tue Mar 28 07:02:26 2017 -0400
@@ -5,7 +5,7 @@
--
-- Mover Widget base
local ADDON, Veneer = ...
-local print = DEVIAN_WORKSPACE and function(...) _G.print('VnTemplate', ...) end or nop
+local print = DEVIAN_WORKSPACE and function(...) _G.print('Veneer', ...) end or nop
local PlaySoundKitID = DEVIAN_WORKSPACE and PlaySoundKitID or nop
local ipairs, pairs = ipairs, pairs
local pack, unpack = pack, unpack
@@ -30,6 +30,7 @@
for i, region in ipairs(handler.ConfigLayers) do
region:SetShown(Veneer.ConfigMode)
end
+
end
function ConfigLayer:OnUpdate()
@@ -71,6 +72,7 @@
-- Replace if module needs to do more than reconcile SavedVariables pointers
function Handler:Setup()
+ print(self:GetName(), '|cFF00FF88Setup()')
local configName = self:GetName():gsub('^Veneer', '')
VeneerData[configName] = VeneerData[configName] or self.defaultSettings or {}
@@ -80,6 +82,14 @@
VeneerData[configName][k] = v
end
end
+
+ if self.EventList then
+ for _, event in ipairs(self.EventList) do
+ print(self:GetName(), event, 'registered')
+ self:RegisterEvent(event)
+ end
+ end
+
local guid = UnitGUID('player')
self.data = VeneerData[configName]
self.data[guid] = self.data[guid] or {}
diff -r 6748c98a6c6c -r 8c94bee4fdfc Veneer.lua
--- a/Veneer.lua Mon Mar 27 00:39:29 2017 -0400
+++ b/Veneer.lua Tue Mar 28 07:02:26 2017 -0400
@@ -24,6 +24,7 @@
Veneer:UpdateConfigLayers()
end
+Veneer.modules = {}
Veneer.Frames = {}
Veneer.ConfigLayers = {}
Veneer.FrameClusters = {
@@ -94,6 +95,8 @@
print('|cFFFFFF00Veneer!|r')
self:RegisterEvent('ADDON_LOADED')
self:RegisterEvent('PLAYER_LOGIN')
+ self:RegisterEvent('PLAYER_REGEN_ENABLED')
+ self:RegisterEvent('PLAYER_REGEN_DISABLED')
self.DEVIAN_PNAME = 'Veneer'
self:RegisterForDrag('LeftButton')
@@ -133,6 +136,19 @@
end
end
end
+ elseif event == 'PLAYER_REGEN_ENABLED' then
+ for _, module in pairs(self.modules) do
+ if module:IsShown() and module.hideCombat then
+ module:Hide()
+ end
+ end
+
+ elseif event == 'PLAYER_REGEN_DISABLED' then
+ for _, module in pairs(self.modules) do
+ if module:IsShown() and module.hideCombat then
+ module:Show()
+ end
+ end
end
end
@@ -211,83 +227,55 @@
end
-- args: frame object, list of anchor groups, true for forced top, number for priority layer
+local mixins = {}
function Veneer:AddHandler(handler, ...)
- print('|cFFFFFF00*** Adding handler:', handler.moduleName or handler:GetName())
+ print('|cFFFFFF00'..handler:GetName()..':|r', handler.moduleName, ...)
-
+ wipe(mixins)
for k,v in pairs(VeneerHandlerMixin) do
if not handler[k] then
- print(' * from mixin:', k)
+ tinsert(mixins, k)
handler[k] = v
end
end
+ if #mixins >= 1 then
+ print('* Mixins:|cFF00FF88', table.concat(mixins, ', '))
+ end
+
+ self.modules[handler] = handler
if not handler.anchorFrame then
- local primaryAnchor
+ local primaryAnchor = handler.anchorPoint or 'CENTER'
+ local clusterPriority = handler.anchorPriority
+ self.FrameClusters[primaryAnchor] = self.FrameClusters[primaryAnchor] or {}
+ local clusterTable = self.FrameClusters[primaryAnchor]
local clusterIndex
- local clusterPriority = handler.anchorPriority
- local clusterDepth = 0
-
- local clusterTable = self.FrameClusters
- for i = 1, select('#', ...) do
- local arg = select(i, ...)
- local argType = type(arg)
- if argType == 'string' then
-
- if not primaryAnchor then
- primaryAnchor = arg
- end
- clusterDepth = clusterDepth + 1
- clusterTable[arg] = clusterTable[arg] or {}
- clusterTable = clusterTable[arg]
- print('clusterGroup =', clusterDepth ..'.'.. arg)
- elseif argType == 'boolean' then
- if arg == true then
- print('anchorFirst =', arg)
- clusterPriority = nil
- end
- elseif argType == 'number' then
- if arg ~= clusterPriority then
- print('anchorPriority =', arg)
- clusterPriority = arg
- end
-
- end
- end
if clusterPriority then
for i = 1, #clusterTable do
- clusterIndex = i
+
if clusterTable[i].anchorPriority and (clusterTable[i].anchorPriority > clusterPriority) then
+ clusterIndex = i
print('|cFF00BB00insert position:', clusterPriority, clusterIndex)
break
else
- print('passing lower priority frame:', clusterTable[i]:GetName())
+ print('pass', clusterTable[i])
+ clusterIndex = i+1
end
end
else
print('|cFF00BB00inserting at front')
- clusterIndex = 1
+ clusterIndex = #clusterTable + 1
end
-
- if not primaryAnchor then
- primaryAnchor = 'CENTER'
- clusterTable[primaryAnchor] = clusterTable[primaryAnchor] or {}
- clusterTable = clusterTable[primaryAnchor]
- end
-
- if not clusterPriority then
- clusterIndex = #clusterTable + 1
- end
if not clusterIndex then
clusterIndex = #clusterTable + 1
end
tinsert(clusterTable, clusterIndex, handler)
- print(' cluster', primaryAnchor, 'table', clusterTable, 'priority', clusterPriority, 'position', clusterIndex)
+ print(' cluster', (clusterDepth or 1) .. '.' .. primaryAnchor, clusterTable, 'priority', clusterPriority, 'position', clusterIndex)
handler.anchorCluster = clusterTable
handler.anchorIndex = clusterIndex
@@ -305,6 +293,7 @@
tinsert(self.AddOnCheck[handler.addonTrigger], handler)
end
+
if self.initialized then
print(' -- initialization check')
if handler.Setup then
@@ -450,7 +439,7 @@
end
-
+-- execute a function on all clusters in display order
function Veneer:ExecuteOnClusters(layer, method)
local print = eprint
self.parserDepth = self.parserDepth + 1