annotate Modules/WorldState.lua @ 113:2105b6e5095f

- Added Blood of Sargeras to currency list - Fixed panel ordering issues when a module is loaded on the fly.
author Nick@Zahhak
date Sun, 26 Mar 2017 06:25:18 -0400
parents 7c77fde36287
children 6748c98a6c6c
rev   line source
Nenue@80 1 -- Veneer
Nenue@84 2 -- WorldState.lua
Nenue@80 3 -- Created: 10/7/2016 10:55 PM
Nenue@80 4 -- %file-revision%
Nick@113 5 -- An extensible panel group for HUD values
Nenue@80 6
Nenue@97 7 local print = DEVIAN_WORKSPACE and function(...) print('VnWorldState', ...) end or nop
Nenue@87 8 local WorldStateBlockMixin = {}
Nenue@87 9 VeneerOrderHallMixin = {
Nenue@87 10 anchorPoint = 'TOP',
Nenue@90 11 anchorFrom = 'TOP',
Nick@113 12 anchorPriority = 1,
Nenue@90 13 anchorX = 0,
Nenue@90 14 anchorY = 0,
Nenue@90 15 addonTrigger = 'Blizzard_OrderHallUI',
Nenue@90 16 addonFrame = 'OrderHallCommandBar',
Nenue@87 17 }
Nenue@97 18
Nenue@81 19 VeneerWorldStateMixin = {
Nenue@82 20 maxHeight = 0,
Nenue@87 21 detectedFrames = {},
Nenue@87 22 anchorPoint = 'TOP',
Nick@113 23 modules = {}
Nenue@81 24 }
Nenue@80 25
Nenue@87 26 function VeneerWorldStateMixin:Reset()
Nenue@87 27 for i, frame in ipairs(self.modules) do
Nenue@87 28 if frame.Reset then
Nenue@87 29 frame:Reset()
Nenue@87 30 end
Nenue@87 31 end
Nenue@87 32 self:Update()
Nenue@87 33 end
Nenue@87 34
Nenue@80 35 function VeneerWorldStateMixin:Setup()
Nenue@80 36 --DEFAULT_CHAT_FRAME:AddMessage('Loaded')
Nenue@84 37 print('|cFFFFFF00'..self:GetName()..'|r:Setup()')
Nenue@81 38
Nenue@81 39 for i, frame in ipairs(self.modules) do
Nenue@84 40 print('--'.. frame:GetName()..' exists')
Nenue@81 41 if frame.Setup then
Nenue@84 42 print('--'.. frame:GetName()..':Setup()')
Nenue@81 43 frame:Setup()
Nenue@81 44 end
Nenue@82 45
Nenue@87 46
Nenue@87 47 for k,v in pairs(WorldStateBlockMixin) do
Nenue@87 48 if not frame[k] then
Nenue@87 49 frame[k] = v
Nenue@87 50 if k:match('^On') then
Nenue@87 51 frame:SetScript(k, v)
Nenue@87 52 end
Nenue@82 53 end
Nenue@87 54 end
Nenue@82 55
Nenue@81 56 end
Nenue@84 57 self:UnregisterEvent('PLAYER_LOGIN')
Nenue@80 58 end
Nenue@80 59
Nenue@82 60 function VeneerWorldStateMixin:SetOrderHallUIMods()
Nenue@87 61 print('|cFFFF4400remove me', debugstack())
Nenue@80 62 end
Nenue@84 63
Nenue@84 64
Nenue@84 65 function VeneerWorldStateMixin:OnLoad ()
Nenue@87 66 self.modules = {self:GetChildren()}
Nenue@84 67 print('|cFFFFFF00'..self:GetName()..'|r!')
Nenue@84 68 self:RegisterEvent('PLAYER_ENTERING_WORLD')
Nenue@84 69 self:RegisterEvent('PLAYER_REGEN_ENABLED')
Nenue@84 70 self:RegisterEvent('PLAYER_REGEN_DISABLED')
Nick@113 71 Veneer:AddHandler(self, self.anchorPoint, self.anchorPriority)
Nenue@87 72 SLASH_VENEERWORLDSTATE1 = "/vws"
Nenue@87 73 SLASH_VENEERWORLDSTATE2 = "/worldstate"
Nenue@87 74 SlashCmdList.VENEERWORLDSTATE = function()
Nenue@87 75 self:Reset()
Nenue@87 76 end
Nenue@84 77 end
Nenue@84 78
Nenue@80 79 function VeneerWorldStateMixin:OnEvent(event, arg)
Nenue@80 80 print(event, arg)
Nenue@90 81 if event == 'PLAYER_ENTERING_WORLD' then
Nenue@80 82 self:Update()
Nenue@81 83 elseif event == 'PLAYER_REGEN_ENABLED' then
Nick@108 84 self:Update(true)
Nenue@81 85 elseif event == 'PLAYER_REGEN_DISABLED' then
Nick@108 86 self:Update(true)
Nenue@80 87 end
Nenue@80 88 end
Nenue@80 89
Nenue@88 90 function VeneerWorldStateMixin:Update(isBatchUpdate)
Nenue@80 91 print('|cFFFFFF00All:Update()|r')
Nick@111 92 local canShow = false
Nenue@88 93 for index, frame in ipairs(self.modules) do
Nenue@82 94 if frame.Update then
Nenue@88 95 print(' '..index..' |cFFFF00FFUpdate:|r '.. frame:GetName())
Nenue@88 96 frame:Update(isBatchUpdate)
Nenue@88 97 print(' ', frame:IsVisible(), frame:IsShown())
Nick@111 98 if frame:IsShown() then
Nick@111 99 canShow = true
Nick@111 100 end
Nick@111 101
Nenue@82 102 end
Nenue@82 103 end
Nick@111 104 self:SetShown(canShow)
Nenue@82 105 end
Nenue@82 106
Nick@108 107 function VeneerWorldStateMixin:OnShow()
Nick@108 108 print('OnShow()', debugstack())
Nick@108 109 end
Nick@108 110
Nenue@87 111 function VeneerWorldStateMixin:Reanchor(isUpdate)
Nenue@88 112 print(' |cFF0088FF'..self:GetName()..':Reanchor()|r', #self.modules, 'blocks')
Nenue@81 113 self.maxHeight = 0
Nenue@89 114 local lastFrame
Nenue@81 115 for i, frame in ipairs(self.modules) do
Nick@108 116 print(' '..frame:GetName()..':',frame:IsShown(), frame:GetHeight())
Nick@108 117 if frame:IsShown() then
Nenue@89 118 if lastFrame then
Nenue@89 119 frame:SetPoint('TOP', lastFrame, 'BOTTOM')
Nenue@89 120 else
Nenue@89 121 frame:SetPoint('TOP', self, 'TOP')
Nenue@89 122 end
Nenue@89 123
Nenue@89 124 self.maxHeight = self.maxHeight + frame:GetHeight()
Nenue@89 125 lastFrame = frame
Nenue@80 126 end
Nenue@80 127 end
Nick@108 128 if (self.maxHeight == 0) or InCombatLockdown() then
Nick@108 129 print (' hiding; combat =', InCombatLockdown())
Nick@108 130 self:SetShown(false)
Nenue@82 131 else
Nenue@87 132 print (' height update:', self.maxHeight)
Nenue@82 133 self:SetHeight(self.maxHeight)
Nick@108 134 self:SetShown(true)
Nenue@82 135 end
Nenue@82 136
Nenue@87 137 if not isUpdate then
Nenue@87 138 Veneer:InternalReanchor(self, print)
Nenue@87 139 end
Nenue@93 140
Nenue@93 141 WorldStateAlwaysUpFrame:ClearAllPoints()
Nenue@93 142 WorldStateAlwaysUpFrame:SetPoint('TOP', self, 'BOTTOM', 0, 0)
Nenue@80 143 end
Nenue@80 144
Nenue@80 145
Nenue@80 146
Nenue@84 147 function VeneerWorldStateMixin:OnMouseDown()
Nenue@80 148 end
Nenue@80 149
Nenue@87 150 function VeneerOrderHallMixin:Setup()
Nenue@87 151 print('|cFFFFFF00'..self:GetName()..':Setup()')
Nenue@88 152 self:SetParent(OrderHallCommandBar)
Nick@113 153 self:RegisterEvent("UNIT_AURA");
Nick@113 154 self:RegisterEvent("GARRISON_FOLLOWER_CATEGORIES_UPDATED")
Nick@113 155 self:RegisterEvent("GARRISON_FOLLOWER_ADDED")
Nick@113 156 self:RegisterEvent("GARRISON_FOLLOWER_REMOVED")
Nick@113 157
Nenue@88 158 self:SetShown(true)
Nenue@88 159 end
Nenue@88 160
Nenue@90 161 function VeneerOrderHallMixin:OnLoad()
Nick@108 162 Veneer:AddHandler(self, 'TOP', 1)
Nick@113 163 self:EnableMouse(false)
Nenue@90 164 end
Nenue@90 165
Nenue@88 166 function VeneerOrderHallMixin:OnEvent(event, ...)
Nenue@88 167
Nenue@88 168 print('|cFF00AAFF'..self:GetName()..'|r:'.. event, ...)
Nenue@88 169 self:Update()
Nenue@88 170 end
Nenue@88 171
Nenue@88 172 function VeneerOrderHallMixin:OnShow()
Nenue@90 173 if OrderHallCommandBar then
Nenue@90 174 print('|cFF00AAFF'..self:GetName()..'|r:OnShow()', OrderHallCommandBar:IsShown(), self:IsShown())
Nenue@90 175 self:Update()
Nenue@90 176 end
Nenue@99 177 Veneer:DynamicReanchor()
Nenue@88 178 end
Nenue@88 179
Nenue@88 180 function VeneerOrderHallMixin:OnHide()
Nenue@90 181 if OrderHallCommandBar then
Nenue@90 182 print('|cFF00AAFF'..self:GetName()..'|r:OnHide()', OrderHallCommandBar:IsShown(), self:IsShown())
Nenue@90 183 end
Nenue@88 184 Veneer:Reanchor()
Nenue@87 185 end
Nenue@87 186
Nenue@87 187 function VeneerOrderHallMixin:Update()
Nenue@87 188 if not OrderHallCommandBar then
Nenue@87 189 print('|cFFFF4400'..self:GetName()..' updater called without target')
Nenue@87 190 return
Nenue@87 191 end
Nenue@87 192
Nenue@87 193 OrderHallCommandBar:ClearAllPoints()
Nick@108 194 OrderHallCommandBar:SetAllPoints(self)
Nick@112 195
Nenue@87 196 OrderHallCommandBar.Background:SetColorTexture(0,0,0,0.5)
Nenue@87 197 OrderHallCommandBar.WorldMapButton:Hide()
Nenue@87 198 OrderHallCommandBar:EnableMouse(false)
Nick@113 199 self:SetSize(700, 22)
Nick@113 200
Nick@113 201 local troops = OrderHallCommandBar.TroopSummary
Nick@113 202 if troops then
Nick@113 203 for _, category in ipairs(troops) do
Nick@113 204 category.Count:SetFontObject(VeneerNumberFont)
Nick@113 205 category.Count:ClearAllPoints()
Nick@113 206 category.Count:SetPoint('BOTTOMRIGHT', category.Icon, 'BOTTOMRIGHT', -1, 1)
Nick@113 207 end
Nick@113 208 end
Nick@113 209
Nick@112 210
Nenue@87 211
Nenue@88 212 print('|cFF00AAFF'..self:GetName()..'|r:Update()', OrderHallCommandBar:IsVisible(), self:IsShown())
Nenue@88 213 print(debugstack(6))
Nenue@98 214 Veneer:DynamicReanchor()
Nenue@87 215 end
Nenue@87 216
Nenue@80 217
Nenue@87 218
Nenue@87 219 do
Nenue@87 220 function WorldStateBlockMixin:ShowPanel()
Nenue@87 221 print('|cFF0088FF'..self:GetName()..':ShowPanel()')
Nenue@87 222 self:SetShown(true)
Nenue@93 223 self:SetAlpha(1)
Nenue@87 224 VeneerWorldState:Show()
Nenue@87 225 end
Nenue@87 226 function WorldStateBlockMixin:HidePanel()
Nenue@87 227 print('|cFF0088FF'..self:GetName()..':HidePanel()')
Nenue@87 228 self:SetShown(false)
Nenue@87 229 VeneerWorldState:Reanchor()
Nenue@87 230 end
Nenue@87 231
Nenue@87 232 function WorldStateBlockMixin:OnSizeChanged ()
Nenue@87 233 local h = self:GetHeight()
Nenue@87 234 if h > VeneerWorldState.maxHeight then
Nenue@87 235 VeneerWorldState.maxHeight = h
Nenue@87 236 VeneerWorldState:SetHeight(h)
Nenue@87 237 print('updating max height:', h)
Nenue@87 238 elseif h < VeneerWorldState.maxHeight then
Nenue@87 239 VeneerWorldState:Reanchor()
Nenue@87 240 end
Nenue@87 241 end
Nenue@87 242 function WorldStateBlockMixin:OnHide ()
Nenue@87 243 print('|cFF0088FF'..self:GetName()..':OnHide()')
Nenue@87 244 VeneerWorldState:Reanchor()
Nenue@87 245 end
Nenue@87 246 function WorldStateBlockMixin:OnShow ()
Nenue@87 247 self.timeLived = 0
Nenue@87 248 print('|cFF0088FF'..self:GetName()..':OnShow()')
Nenue@87 249 VeneerWorldState:Reanchor()
Nenue@87 250 end
Nenue@87 251 function WorldStateBlockMixin:Setup()
Nenue@87 252 print('|cFF0088FF'..self:GetName()..':Setup()|r -- nop')
Nenue@88 253 self:Update()
Nenue@87 254 end
Nenue@87 255 function WorldStateBlockMixin:Reset()
Nenue@87 256 print('|cFF0088FF'..self:GetName()..':Reset()')
Nenue@87 257 self.keepOpen = true
Nenue@87 258 self:Setup()
Nenue@87 259 end
Nenue@93 260 end
Nenue@93 261
Nick@113 262