comparison Modules/WorldState.lua @ 115:8c94bee4fdfc

- AddHandler simplified - Centralized combat start/stop hooks - WorldState removed
author Nenue
date Tue, 28 Mar 2017 07:02:26 -0400
parents 6748c98a6c6c
children ddfe19d70a34
comparison
equal deleted inserted replaced
114:6748c98a6c6c 115:8c94bee4fdfc
3 -- Created: 10/7/2016 10:55 PM 3 -- Created: 10/7/2016 10:55 PM
4 -- %file-revision% 4 -- %file-revision%
5 -- An extensible panel group for HUD values 5 -- An extensible panel group for HUD values
6 6
7 local print = DEVIAN_WORKSPACE and function(...) print('VnWorldState', ...) end or nop 7 local print = DEVIAN_WORKSPACE and function(...) print('VnWorldState', ...) end or nop
8 local WorldStateBlockMixin = {} 8
9 VeneerOrderHallMixin = { 9 VeneerOrderHallMixin = {
10 anchorPoint = 'TOP', 10 anchorPoint = 'TOP',
11 anchorFrom = 'TOP', 11 anchorFrom = 'TOP',
12 anchorPriority = 1, 12 anchorPriority = 1,
13 anchorX = 0, 13 anchorX = 0,
14 anchorY = 0, 14 anchorY = 0,
15 addonTrigger = 'Blizzard_OrderHallUI', 15 addonTrigger = 'Blizzard_OrderHallUI',
16 addonFrame = 'OrderHallCommandBar', 16 addonFrame = 'OrderHallCommandBar',
17 } 17 }
18
19 VeneerWorldStateMixin = {
20 maxHeight = 0,
21 detectedFrames = {},
22 anchorPoint = 'TOP',
23 modules = {}
24 }
25
26 function VeneerWorldStateMixin:Reset()
27 for i, frame in ipairs(self.modules) do
28 if frame.Reset then
29 frame:Reset()
30 end
31 end
32 self:Update()
33 end
34
35 function VeneerWorldStateMixin:Setup()
36 --DEFAULT_CHAT_FRAME:AddMessage('Loaded')
37 print('|cFFFFFF00'..self:GetName()..'|r:Setup()')
38
39 for i, frame in ipairs(self.modules) do
40 print('--'.. frame:GetName()..' exists')
41 if frame.Setup then
42 print('--'.. frame:GetName()..':Setup()')
43 frame:Setup()
44 end
45
46
47 for k,v in pairs(WorldStateBlockMixin) do
48 if not frame[k] then
49 frame[k] = v
50 if k:match('^On') then
51 frame:SetScript(k, v)
52 end
53 end
54 end
55
56 end
57 self:UnregisterEvent('PLAYER_LOGIN')
58 end
59
60 function VeneerWorldStateMixin:SetOrderHallUIMods()
61 print('|cFFFF4400remove me', debugstack())
62 end
63
64
65 function VeneerWorldStateMixin:OnLoad ()
66 self.modules = {self:GetChildren()}
67 print('|cFFFFFF00'..self:GetName()..'|r!')
68 self:RegisterEvent('PLAYER_ENTERING_WORLD')
69 self:RegisterEvent('PLAYER_REGEN_ENABLED')
70 self:RegisterEvent('PLAYER_REGEN_DISABLED')
71 Veneer:AddHandler(self, self.anchorPoint, self.anchorPriority)
72 SLASH_VENEERWORLDSTATE1 = "/vws"
73 SLASH_VENEERWORLDSTATE2 = "/worldstate"
74 SlashCmdList.VENEERWORLDSTATE = function()
75 self:Reset()
76 end
77 end
78
79 function VeneerWorldStateMixin:OnEvent(event, arg)
80 print(event, arg)
81 if event == 'PLAYER_ENTERING_WORLD' then
82 self:Update()
83 elseif event == 'PLAYER_REGEN_ENABLED' then
84 self:Update(true)
85 elseif event == 'PLAYER_REGEN_DISABLED' then
86 self:Update(true)
87 end
88 end
89
90 function VeneerWorldStateMixin:Update(isBatchUpdate)
91 print('|cFFFFFF00All:Update()|r')
92 local canShow = false
93 for index, frame in ipairs(self.modules) do
94 if frame.Update then
95 print(' '..index..' |cFFFF00FFUpdate:|r '.. frame:GetName())
96 frame:Update(isBatchUpdate)
97 print(' ', frame:IsVisible(), frame:IsShown())
98 if frame:IsShown() then
99 canShow = true
100 end
101
102 end
103 end
104 self:SetShown(canShow)
105 end
106
107 function VeneerWorldStateMixin:OnShow()
108 print('OnShow()', debugstack())
109 end
110
111 function VeneerWorldStateMixin:Reanchor(isUpdate)
112 print(' |cFF0088FF'..self:GetName()..':Reanchor()|r', #self.modules, 'blocks')
113 self.maxHeight = 0
114 local lastFrame
115 for i, frame in ipairs(self.modules) do
116 print(' '..frame:GetName()..':',frame:IsShown(), frame:GetHeight())
117 if frame:IsShown() then
118 if lastFrame then
119 frame:SetPoint('TOP', lastFrame, 'BOTTOM')
120 else
121 frame:SetPoint('TOP', self, 'TOP')
122 end
123
124 self.maxHeight = self.maxHeight + frame:GetHeight()
125 lastFrame = frame
126 end
127 end
128 if (self.maxHeight == 0) or InCombatLockdown() then
129 print (' hiding; combat =', InCombatLockdown())
130 self:SetShown(false)
131 else
132 print (' height update:', self.maxHeight)
133 self:SetHeight(self.maxHeight)
134 self:SetShown(true)
135 end
136
137 if not isUpdate then
138 Veneer:InternalReanchor(self, print)
139 end
140
141 WorldStateAlwaysUpFrame:ClearAllPoints()
142 WorldStateAlwaysUpFrame:SetPoint('TOP', self, 'BOTTOM', 0, 0)
143 end
144
145
146
147 function VeneerWorldStateMixin:OnMouseDown()
148 end
149
150 --- Order Hall mod 18 --- Order Hall mod
151 local requiresUpdate 19 local requiresUpdate
152 local ocb 20 local ocb
153 function VeneerOrderHallMixin:Setup() 21 function VeneerOrderHallMixin:Setup()
154 print('|cFFFFFF00'..self:GetName()..':Setup()') 22 print('|cFFFFFF00'..self:GetName()..':Setup()')
198 end 66 end
199 67
200 end 68 end
201 69
202 function VeneerOrderHallMixin:OnLoad() 70 function VeneerOrderHallMixin:OnLoad()
203 Veneer:AddHandler(self, 'TOP', 1) 71 Veneer:AddHandler(self)
204 self:EnableMouse(false) 72 self:EnableMouse(false)
205 end 73 end
206 74
207 75
208 function VeneerOrderHallMixin:OnShow() 76 function VeneerOrderHallMixin:OnShow()
246 Veneer:DynamicReanchor() 114 Veneer:DynamicReanchor()
247 end 115 end
248 116
249 117
250 118
251 do
252 function WorldStateBlockMixin:ShowPanel()
253 print('|cFF0088FF'..self:GetName()..':ShowPanel()')
254 self:SetShown(true)
255 self:SetAlpha(1)
256 VeneerWorldState:Show()
257 end
258 function WorldStateBlockMixin:HidePanel()
259 print('|cFF0088FF'..self:GetName()..':HidePanel()')
260 self:SetShown(false)
261 VeneerWorldState:Reanchor()
262 end
263 119
264 function WorldStateBlockMixin:OnSizeChanged ()
265 local h = self:GetHeight()
266 if h > VeneerWorldState.maxHeight then
267 VeneerWorldState.maxHeight = h
268 VeneerWorldState:SetHeight(h)
269 print('updating max height:', h)
270 elseif h < VeneerWorldState.maxHeight then
271 VeneerWorldState:Reanchor()
272 end
273 end
274 function WorldStateBlockMixin:OnHide ()
275 print('|cFF0088FF'..self:GetName()..':OnHide()')
276 VeneerWorldState:Reanchor()
277 end
278 function WorldStateBlockMixin:OnShow ()
279 self.timeLived = 0
280 print('|cFF0088FF'..self:GetName()..':OnShow()')
281 VeneerWorldState:Reanchor()
282 end
283 function WorldStateBlockMixin:Setup()
284 print('|cFF0088FF'..self:GetName()..':Setup()|r -- nop')
285 self:Update()
286 end
287 function WorldStateBlockMixin:Reset()
288 print('|cFF0088FF'..self:GetName()..':Reset()')
289 self.keepOpen = true
290 self:Setup()
291 end
292 end
293
294