comparison Modules/WorldState.lua @ 108:a41f6b74709a

- Handler number and boolean cluster arguments as positioning priority layer and "always top" respectively - Use SetShown and IsShown instead of IsVisible in doing full re-anchor checks
author Nick@Zahhak
date Sat, 25 Feb 2017 11:42:07 -0500
parents 74d6d97a2d24
children 1196c2bad31c
comparison
equal deleted inserted replaced
107:ff00679a7817 108:a41f6b74709a
73 self.modules = {self:GetChildren()} 73 self.modules = {self:GetChildren()}
74 print('|cFFFFFF00'..self:GetName()..'|r!') 74 print('|cFFFFFF00'..self:GetName()..'|r!')
75 self:RegisterEvent('PLAYER_ENTERING_WORLD') 75 self:RegisterEvent('PLAYER_ENTERING_WORLD')
76 self:RegisterEvent('PLAYER_REGEN_ENABLED') 76 self:RegisterEvent('PLAYER_REGEN_ENABLED')
77 self:RegisterEvent('PLAYER_REGEN_DISABLED') 77 self:RegisterEvent('PLAYER_REGEN_DISABLED')
78 Veneer:AddHandler(self, self.anchorPoint, true) 78 Veneer:AddHandler(self, self.anchorPoint, 2)
79 SLASH_VENEERWORLDSTATE1 = "/vws" 79 SLASH_VENEERWORLDSTATE1 = "/vws"
80 SLASH_VENEERWORLDSTATE2 = "/worldstate" 80 SLASH_VENEERWORLDSTATE2 = "/worldstate"
81 SlashCmdList.VENEERWORLDSTATE = function() 81 SlashCmdList.VENEERWORLDSTATE = function()
82 self:Reset() 82 self:Reset()
83 end 83 end
84 end 84 end
85 85
86 function VeneerWorldStateMixin:OnEvent(event, arg) 86 function VeneerWorldStateMixin:OnEvent(event, arg)
87 print(event, arg) 87 print(event, arg)
88 if event == 'PLAYER_ENTERING_WORLD' then 88 if event == 'PLAYER_ENTERING_WORLD' then
89 self:Show()
90 self:Update() 89 self:Update()
91 elseif event == 'PLAYER_REGEN_ENABLED' then 90 elseif event == 'PLAYER_REGEN_ENABLED' then
92 self:SetShown(true) 91 self:Update(true)
93 elseif event == 'PLAYER_REGEN_DISABLED' then 92 elseif event == 'PLAYER_REGEN_DISABLED' then
94 self:SetShown(false) 93 self:Update(true)
95 end 94 end
96 end 95 end
97 96
98 function VeneerWorldStateMixin:Update(isBatchUpdate) 97 function VeneerWorldStateMixin:Update(isBatchUpdate)
99 print('|cFFFFFF00All:Update()|r') 98 print('|cFFFFFF00All:Update()|r')
104 print(' ', frame:IsVisible(), frame:IsShown()) 103 print(' ', frame:IsVisible(), frame:IsShown())
105 end 104 end
106 end 105 end
107 end 106 end
108 107
108 function VeneerWorldStateMixin:OnShow()
109 print('OnShow()', debugstack())
110 end
111
109 function VeneerWorldStateMixin:Reanchor(isUpdate) 112 function VeneerWorldStateMixin:Reanchor(isUpdate)
110 print(' |cFF0088FF'..self:GetName()..':Reanchor()|r', #self.modules, 'blocks') 113 print(' |cFF0088FF'..self:GetName()..':Reanchor()|r', #self.modules, 'blocks')
111 self.maxHeight = 0 114 self.maxHeight = 0
112 local lastFrame 115 local lastFrame
113 for i, frame in ipairs(self.modules) do 116 for i, frame in ipairs(self.modules) do
114 print(' '..frame:GetName()..':',frame:IsShown(), frame:IsVisible(), frame:GetHeight()) 117 print(' '..frame:GetName()..':',frame:IsShown(), frame:GetHeight())
115 if frame:IsVisible() then 118 if frame:IsShown() then
116 if lastFrame then 119 if lastFrame then
117 frame:SetPoint('TOP', lastFrame, 'BOTTOM') 120 frame:SetPoint('TOP', lastFrame, 'BOTTOM')
118 else 121 else
119 frame:SetPoint('TOP', self, 'TOP') 122 frame:SetPoint('TOP', self, 'TOP')
120 end 123 end
121 124
122 self.maxHeight = self.maxHeight + frame:GetHeight() 125 self.maxHeight = self.maxHeight + frame:GetHeight()
123 lastFrame = frame 126 lastFrame = frame
124 end 127 end
125 end 128 end
126 if self.maxHeight == 0 then 129 if (self.maxHeight == 0) or InCombatLockdown() then
127 print (' hiding because there are no blocks') 130 print (' hiding; combat =', InCombatLockdown())
128 self:Hide() 131 self:SetShown(false)
129 else 132 else
130 self:Show()
131 print (' height update:', self.maxHeight) 133 print (' height update:', self.maxHeight)
132 self:SetHeight(self.maxHeight) 134 self:SetHeight(self.maxHeight)
135 self:SetShown(true)
133 end 136 end
134 137
135 if not isUpdate then 138 if not isUpdate then
136 Veneer:InternalReanchor(self, print) 139 Veneer:InternalReanchor(self, print)
137 end 140 end
153 self:RegisterEvent("ZONE_CHANGED_NEW_AREA"); 156 self:RegisterEvent("ZONE_CHANGED_NEW_AREA");
154 self:SetShown(true) 157 self:SetShown(true)
155 end 158 end
156 159
157 function VeneerOrderHallMixin:OnLoad() 160 function VeneerOrderHallMixin:OnLoad()
158 Veneer:AddHandler(self, 'TOP', true) 161 Veneer:AddHandler(self, 'TOP', 1)
159 end 162 end
160 163
161 function VeneerOrderHallMixin:OnEvent(event, ...) 164 function VeneerOrderHallMixin:OnEvent(event, ...)
162 165
163 print('|cFF00AAFF'..self:GetName()..'|r:'.. event, ...) 166 print('|cFF00AAFF'..self:GetName()..'|r:'.. event, ...)
185 print('|cFFFF4400'..self:GetName()..' updater called without target') 188 print('|cFFFF4400'..self:GetName()..' updater called without target')
186 return 189 return
187 end 190 end
188 191
189 OrderHallCommandBar:ClearAllPoints() 192 OrderHallCommandBar:ClearAllPoints()
190 OrderHallCommandBar:SetPoint('TOP', UIParent, 'TOP') 193 OrderHallCommandBar:SetAllPoints(self)
191 OrderHallCommandBar:SetWidth(600) 194 OrderHallCommandBar:SetWidth(600)
192 OrderHallCommandBar.Background:SetColorTexture(0,0,0,0.5) 195 OrderHallCommandBar.Background:SetColorTexture(0,0,0,0.5)
193 OrderHallCommandBar.WorldMapButton:Hide() 196 OrderHallCommandBar.WorldMapButton:Hide()
194 OrderHallCommandBar:EnableMouse(false) 197 OrderHallCommandBar:EnableMouse(false)
195 self:SetSize(OrderHallCommandBar:GetSize()) 198 self:SetSize(OrderHallCommandBar:GetSize())