annotate Modules/WorldState.lua @ 87:27db212af783

- polished position management code; goes something like: - core:Reanchor() to soft fix all anchors - module:Reanchor() or core:InternalReanchor(module) to position a specific set of neighboring frames
author Nenue
date Wed, 19 Oct 2016 16:51:17 -0400
parents 1196b8175674
children b107b4df7eb6
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%
Nenue@80 5 --
Nenue@80 6
Nenue@87 7 local WorldStateBlockMixin = {}
Nenue@87 8 VeneerOrderHallMixin = {
Nenue@87 9 anchorPoint = 'TOP',
Nenue@87 10 }
Nenue@87 11 VeneerWorldStateCurrencyMixin = {
Nenue@87 12 }
Nenue@84 13 VeneerWorldStateProgressMixin = {
Nenue@84 14 keepOpen = true
Nenue@84 15 }
Nenue@81 16 VeneerWorldStateMixin = {
Nenue@82 17 maxHeight = 0,
Nenue@87 18 detectedFrames = {},
Nenue@87 19 anchorPoint = 'TOP',
Nenue@81 20 }
Nenue@80 21 local print = DEVIAN_WORKSPACE and function(...) print('VnWorldState', ...) end or nop
Nenue@80 22
Nenue@87 23 function VeneerWorldStateMixin:Reset()
Nenue@87 24 for i, frame in ipairs(self.modules) do
Nenue@87 25 if frame.Reset then
Nenue@87 26 frame:Reset()
Nenue@87 27 end
Nenue@87 28 end
Nenue@87 29 self:Update()
Nenue@87 30 end
Nenue@87 31
Nenue@80 32 function VeneerWorldStateMixin:Setup()
Nenue@80 33 --DEFAULT_CHAT_FRAME:AddMessage('Loaded')
Nenue@84 34 print('|cFFFFFF00'..self:GetName()..'|r:Setup()')
Nenue@81 35
Nenue@81 36 self.modules = self.modules or {self:GetChildren()}
Nenue@81 37 for i, frame in ipairs(self.modules) do
Nenue@84 38 print('--'.. frame:GetName()..' exists')
Nenue@81 39 if frame.Setup then
Nenue@84 40 print('--'.. frame:GetName()..':Setup()')
Nenue@81 41 frame:Setup()
Nenue@81 42 end
Nenue@82 43
Nenue@87 44
Nenue@87 45 for k,v in pairs(WorldStateBlockMixin) do
Nenue@87 46 if not frame[k] then
Nenue@87 47 frame[k] = v
Nenue@87 48 if k:match('^On') then
Nenue@87 49 frame:SetScript(k, v)
Nenue@87 50 end
Nenue@82 51 end
Nenue@87 52 end
Nenue@82 53
Nenue@81 54 end
Nenue@84 55 self:UnregisterEvent('PLAYER_LOGIN')
Nenue@80 56 end
Nenue@80 57
Nenue@82 58 function VeneerWorldStateMixin:SetOrderHallUIMods()
Nenue@87 59 print('|cFFFF4400remove me', debugstack())
Nenue@80 60 end
Nenue@84 61
Nenue@84 62
Nenue@84 63 function VeneerWorldStateMixin:OnLoad ()
Nenue@87 64 self.modules = {self:GetChildren()}
Nenue@84 65 print('|cFFFFFF00'..self:GetName()..'|r!')
Nenue@84 66 self:RegisterEvent('ARTIFACT_UPDATE')
Nenue@84 67 self:RegisterEvent('ARTIFACT_XP_UPDATE')
Nenue@84 68 self:RegisterEvent('PLAYER_ENTERING_WORLD')
Nenue@84 69 self:RegisterEvent('PLAYER_REGEN_ENABLED')
Nenue@84 70 self:RegisterEvent('PLAYER_REGEN_DISABLED')
Nenue@87 71 self:RegisterEvent('ZONE_CHANGED_NEW_AREA')
Nenue@87 72 self:RegisterEvent('ADDON_LOADED')
Nenue@87 73 Veneer:AddHandler(self, self.anchorPoint, true)
Nenue@87 74 SLASH_VENEERWORLDSTATE1 = "/vws"
Nenue@87 75 SLASH_VENEERWORLDSTATE2 = "/worldstate"
Nenue@87 76 SlashCmdList.VENEERWORLDSTATE = function()
Nenue@87 77 self:Reset()
Nenue@87 78 end
Nenue@84 79 end
Nenue@84 80
Nenue@80 81 function VeneerWorldStateMixin:OnEvent(event, arg)
Nenue@80 82 print(event, arg)
Nenue@81 83
Nenue@84 84 if event == 'PLAYER_LOGIN' then
Nenue@84 85 if IsLoggedIn() and not self.initialized then
Nenue@84 86 self.initialized = true
Nenue@80 87 self:Setup()
Nenue@81 88 end
Nenue@87 89 elseif event == 'ZONE_CHANGED_NEW_AREA' or event == 'ADDON_LOADED' then
Nenue@87 90 if OrderHallCommandBar then
Nenue@87 91 self:UnregisterEvent('ZONE_CHANGED_NEW_AREA')
Nenue@87 92 self:UnregisterEvent('ADDON_LOADED')
Nenue@87 93 Veneer:AddHandler(VeneerOrderHallHandler, 'TOP', true)
Nenue@82 94 end
Nenue@82 95 elseif event == 'PLAYER_ENTERING_WORLD' then
Nenue@80 96 self:Update()
Nenue@81 97 elseif event == 'PLAYER_REGEN_ENABLED' then
Nenue@83 98 self:SetShown(true)
Nenue@81 99 elseif event == 'PLAYER_REGEN_DISABLED' then
Nenue@83 100 self:SetShown(false)
Nenue@80 101 end
Nenue@80 102 end
Nenue@80 103
Nenue@80 104 function VeneerWorldStateMixin:Update()
Nenue@80 105 print('|cFFFFFF00All:Update()|r')
Nenue@82 106 for i, frame in ipairs(self.modules) do
Nenue@82 107 if frame.Update then
Nenue@82 108 print(' |cFFFF00FF'.. frame:GetName() .. ':Update()')
Nenue@82 109 frame:Update()
Nenue@82 110 end
Nenue@82 111 end
Nenue@82 112 end
Nenue@82 113
Nenue@87 114 function VeneerWorldStateMixin:Reanchor(isUpdate)
Nenue@87 115 print('|cFFFFFF00'..self:GetName()..':Reanchor()|r', #self.modules, 'blocks')
Nenue@81 116 self.maxHeight = 0
Nenue@81 117 for i, frame in ipairs(self.modules) do
Nenue@82 118 print(' '..frame:GetName()..':',frame:IsShown(), frame:IsVisible(), frame:GetHeight())
Nenue@82 119 if frame:IsShown() then
Nenue@82 120 self.maxHeight = max(self.maxHeight, frame:GetHeight())
Nenue@80 121 end
Nenue@80 122 end
Nenue@82 123 if self.maxHeight == 0 then
Nenue@87 124 print (' hiding because there are no blocks')
Nenue@82 125 self:Hide()
Nenue@82 126 else
Nenue@82 127 self:Show()
Nenue@87 128 print (' height update:', self.maxHeight)
Nenue@82 129 self:SetHeight(self.maxHeight)
Nenue@82 130 end
Nenue@82 131
Nenue@87 132 if not isUpdate then
Nenue@87 133 Veneer:InternalReanchor(self, print)
Nenue@87 134 end
Nenue@80 135 end
Nenue@80 136
Nenue@80 137
Nenue@80 138
Nenue@84 139 function VeneerWorldStateMixin:OnMouseDown()
Nenue@80 140 end
Nenue@80 141
Nenue@87 142 function VeneerOrderHallMixin:Setup()
Nenue@87 143 print('|cFFFFFF00'..self:GetName()..':Setup()')
Nenue@87 144 hooksecurefunc(OrderHallCommandBar,'Show', function()
Nenue@87 145 self:Update()
Nenue@87 146 end)
Nenue@87 147 hooksecurefunc(OrderHallCommandBar,'Hide', function()
Nenue@87 148 self:Update()
Nenue@87 149 end)
Nenue@87 150 end
Nenue@87 151
Nenue@87 152 function VeneerOrderHallMixin:Update()
Nenue@87 153
Nenue@87 154 if not OrderHallCommandBar then
Nenue@87 155 print('|cFFFF4400'..self:GetName()..' updater called without target')
Nenue@87 156 return
Nenue@87 157 end
Nenue@87 158
Nenue@87 159 print('|cFF0044FF'..self:GetName()..' update')
Nenue@87 160 OrderHallCommandBar:ClearAllPoints()
Nenue@87 161 OrderHallCommandBar:SetPoint('TOP', self, 'TOP')
Nenue@87 162 OrderHallCommandBar:SetWidth(600)
Nenue@87 163 OrderHallCommandBar.Background:SetColorTexture(0,0,0,0.5)
Nenue@87 164 OrderHallCommandBar.WorldMapButton:Hide()
Nenue@87 165 OrderHallCommandBar:EnableMouse(false)
Nenue@87 166
Nenue@87 167 self:SetSize(OrderHallCommandBar:GetSize())
Nenue@87 168 end
Nenue@87 169
Nenue@80 170 function VeneerWorldStateCurrencyMixin:OnLoad ()
Nenue@80 171
Nenue@84 172 self:RegisterEvent("PLAYER_ENTERING_WORLD");
Nenue@84 173 self:RegisterEvent("ZONE_CHANGED");
Nenue@84 174 self:RegisterEvent("ZONE_CHANGED_INDOORS");
Nenue@84 175 self:RegisterEvent("ZONE_CHANGED_NEW_AREA");
Nenue@80 176 self:RegisterEvent('CURRENCY_DISPLAY_UPDATE')
Nenue@80 177 self:RegisterEvent('CHAT_MSG_CURRENCY')
Nenue@80 178
Nenue@80 179 end
Nenue@80 180
Nenue@80 181 function VeneerWorldStateCurrencyMixin:OnEvent (event, arg)
Nenue@80 182 self:Update()
Nenue@80 183 end
Nenue@80 184
Nenue@80 185
Nenue@80 186 function VeneerWorldStateCurrencyMixin:Update()
Nenue@81 187
Nenue@82 188 print(' Zone:', GetZoneText())
Nenue@81 189 if GetZoneText() == 'Suramar' then
Nenue@80 190 local name, earned, texture, earnedThisWeek, weeklyMax, totalMax = GetCurrencyInfo(1155)
Nenue@80 191
Nenue@80 192 self.Icon:SetTexture(texture)
Nenue@80 193 self.Label:SetFormattedText("%d / %d", earned, totalMax)
Nenue@80 194 self:Show()
Nenue@80 195 self:SetWidth(self.Icon:GetWidth() + self.Label:GetStringWidth() + 6)
Nenue@82 196 self:SetSize(200,16)
Nenue@80 197 else
Nenue@80 198 self:Hide()
Nenue@80 199 end
Nenue@81 200
Nenue@82 201
Nenue@81 202 end
Nenue@81 203
Nenue@82 204 function VeneerWorldStateProgressMixin:OnUpdate(sinceLast)
Nenue@87 205 self.timeLived = (self.timeLived or 0) + sinceLast
Nenue@84 206 if self.keepOpen then
Nenue@84 207 return
Nenue@84 208 end
Nenue@82 209 if self.timeLived >= 3 and not self.TransitionFadeOut:IsPlaying() then
Nenue@82 210 if not self.timeOut then
Nenue@82 211 self.timeOut = true
Nenue@84 212 self.TimedFadeOut:Play()
Nenue@82 213 end
Nenue@82 214 end
Nenue@82 215 end
Nenue@82 216
Nenue@82 217
Nenue@81 218 function VeneerWorldStateProgressMixin:OnLoad()
Nenue@82 219 self:RegisterEvent('PLAYER_EQUIPMENT_CHANGED')
Nenue@81 220
Nenue@82 221 self:RegisterEvent("PLAYER_XP_UPDATE");
Nenue@82 222 self:RegisterEvent("UPDATE_EXHAUSTION");
Nenue@82 223 self:RegisterEvent("PLAYER_LEVEL_UP");
Nenue@82 224 self:RegisterEvent("PLAYER_UPDATE_RESTING");
Nenue@82 225
Nenue@82 226 self:RegisterEvent("ARTIFACT_UPDATE");
Nenue@82 227 self:RegisterEvent("ARTIFACT_XP_UPDATE");
Nenue@82 228 self:RegisterEvent("ARTIFACT_CLOSE");
Nenue@82 229 self:RegisterEvent("ARTIFACT_MAX_RANKS_UPDATE");
Nenue@82 230
Nenue@82 231 self.progressPercent = 0
Nenue@82 232 self.progressAmount = 0
Nenue@82 233 self.progressMax = 1
Nenue@82 234 self.progressOverflow = 0
Nenue@84 235
Nenue@81 236 end
Nenue@81 237
Nenue@81 238 function VeneerWorldStateProgressMixin:Setup()
Nenue@81 239 self:UpdateXPGain()
Nenue@82 240 if self.canGainXP then
Nenue@81 241 self.mode = 'xp'
Nenue@81 242 else
Nenue@81 243 self.mode = 'artifact'
Nenue@81 244 end
Nenue@81 245 print('setup mode:', self.mode)
Nenue@81 246 end
Nenue@81 247
Nenue@82 248 function VeneerWorldStateProgressMixin:OnEvent(event, ...)
Nenue@82 249 local lastMode = self.mode
Nenue@82 250 if event == 'PLAYER_LEVEL_UP' or event == 'ENABLE_XP_GAIN' or event == 'DISABLE_XP_GAIN' then
Nenue@81 251 self:UpdateXPGain()
Nenue@81 252 elseif event == 'ARTIFACT_XP_UPDATE' or event == 'ARTIFACT_UPDATE' then
Nenue@81 253 self.mode = 'artifact'
Nenue@82 254
Nenue@82 255 elseif event == 'PLAYER_EQUIPMENT_CHANGED' then
Nenue@82 256 local slot, hasEquip = ...
Nenue@82 257 if slot == 16 then
Nenue@82 258 self.mode = 'artifact'
Nenue@82 259 lastMode = nil
Nenue@82 260 end
Nenue@82 261 elseif event == 'PLAYER_XP_UPDATE' or event == 'PLAYER_LEVEL_UP' then
Nenue@82 262 print('forcing to XP mode')
Nenue@81 263 self.mode = 'xp'
Nenue@81 264 end
Nenue@82 265 self.modeChanged = (lastMode ~= self.mode)
Nenue@82 266 if self.modeChanged and self:IsVisible() then
Nenue@82 267 print('|cFF88FF00'..self:GetName()..'.TransitionFadeOut:Play()', event, ...)
Nenue@84 268 self:AnimateMode()
Nenue@82 269 else
Nenue@82 270 print('|cFFFFFF00'..self:GetName()..':Update()', event, ...)
Nenue@82 271 self:Update()
Nenue@82 272 end
Nenue@81 273 end
Nenue@81 274 function VeneerWorldStateProgressMixin:UpdateXPGain()
Nenue@82 275 self.canGainXP = (UnitLevel('player') < GetMaxPlayerLevel()) and (not IsXPUserDisabled())
Nenue@82 276 if not self.canGainXP then
Nenue@81 277 self.ProgressBar:SetColorTexture(0.75,0.75,0.75)
Nenue@81 278 end
Nenue@81 279 end
Nenue@81 280
Nenue@81 281 local GetEquippedArtifactInfo = _G.C_ArtifactUI.GetEquippedArtifactInfo
Nenue@81 282 local GetCostForPointAtRank = _G.C_ArtifactUI.GetCostForPointAtRank
Nenue@87 283
Nenue@87 284 function VeneerWorldStateProgressMixin:AnimateProgress(progressChange)
Nenue@87 285
Nenue@87 286 local progressWidth = self:GetWidth() * progressChange
Nenue@87 287
Nenue@87 288 print(' Render change:', progressChange, progressWidth)
Nenue@87 289 self.ProgressAdded:Show()
Nenue@87 290 self.ProgressAdded:ClearAllPoints()
Nenue@87 291 self.ProgressAdded:SetPoint('TOPRIGHT', self.ProgressBar, 'TOPRIGHT', 0, 0)
Nenue@87 292 self.ProgressAdded:SetPoint('BOTTOMLEFT', self.ProgressBar, 'BOTTOMRIGHT', - (progressWidth), 0)
Nenue@87 293
Nenue@87 294
Nenue@87 295 self.ProgressFlash.translation:SetOffset(progressWidth, 0)
Nenue@87 296 self.ProgressFlash:Play()
Nenue@87 297 end
Nenue@87 298
Nenue@81 299 function VeneerWorldStateProgressMixin:Update()
Nenue@82 300 local hasNewInfo = false
Nenue@82 301 local progressChange = false
Nenue@82 302 print(' current mode:', self.mode)
Nenue@81 303
Nenue@81 304
Nenue@81 305 if self.mode == 'xp' then
Nenue@81 306 local xp = UnitXP('player')
Nenue@81 307 local xpMax = UnitXPMax('player')
Nenue@81 308 local bonusXP = GetXPExhaustion()
Nenue@81 309 if xp then
Nenue@81 310 self.progressPercent = xp / xpMax
Nenue@81 311 end
Nenue@84 312 self.progressText = '|cFFFFCC00' .. UnitLevel('player') .. '|r ' .. xp .. '/' .. xpMax
Nenue@82 313 if bonusXP then
Nenue@82 314 self.ProgressBar:SetColorTexture(0, 0.5,1)
Nenue@82 315 self.OverflowBar:Show()
Nenue@82 316 self.OverflowBar:ClearAllPoints()
Nenue@82 317 self.OverflowBar:SetPoint('BOTTOMLEFT', self.ProgressBar, 'BOTTOMRIGHT', 0, 0)
Nenue@82 318 else
Nenue@82 319 self.ProgressBar:SetColorTexture(0.5,0,1)
Nenue@82 320 end
Nenue@82 321 hasNewInfo = (self.progressAmount ~= xp)
Nenue@83 322 progressChange = (hasNewInfo and not self.modeChanged) and ((xp - self.progressAmount) / xpMax)
Nenue@85 323 self.progressOverflow = bonusXP
Nenue@82 324 self.progressAmount = xp
Nenue@82 325 self.progressMax = xpMax
Nenue@85 326
Nenue@81 327 elseif self.mode == 'artifact' then
Nenue@81 328 local itemID, altItemID, name, icon, totalXP, pointsSpent = GetEquippedArtifactInfo()
Nenue@82 329
Nenue@82 330 if itemID then
Nenue@82 331 local nextRankCost = GetCostForPointAtRank(pointsSpent) or 0
Nenue@85 332 print(' C_AUI:', itemID, name, 'XP:', totalXP, 'Points:', pointsSpent, 'Next:', nextRankCost)
Nenue@82 333 hasNewInfo = (self.progressAmount ~= totalXP)
Nenue@83 334 progressChange = (hasNewInfo and not self.modeChanged) and (((totalXP - self.progressAmount) / nextRankCost))
Nenue@82 335
Nenue@82 336 if totalXP > nextRankCost then
Nenue@82 337 self.progressPercent = 1
Nenue@85 338 else
Nenue@82 339 self.progressPercent = totalXP / nextRankCost
Nenue@82 340 end
Nenue@82 341
Nenue@82 342 self.progressText = name .. ' ('..pointsSpent .. '): '.. totalXP .. ' / ' .. nextRankCost
Nenue@82 343
Nenue@82 344 self.ProgressBar:SetColorTexture(1,0.5,0,1)
Nenue@82 345 self.OverflowBar:Hide()
Nenue@82 346
Nenue@85 347 self.progressOverflow = 0
Nenue@82 348 self.progressAmount = totalXP
Nenue@82 349 self.progressMax = nextRankCost
Nenue@82 350 else
Nenue@82 351 self.progressAmount = 0
Nenue@82 352 self.progressMax = 1
Nenue@82 353 self.progressText = ''
Nenue@82 354 end
Nenue@82 355 end
Nenue@82 356
Nenue@82 357 if self.mode then
Nenue@82 358 self:SetSize(600,16)
Nenue@82 359 if hasNewInfo then
Nenue@82 360 self.timeOut = nil
Nenue@82 361 self.timeLived = 0
Nenue@82 362 if self.TransitionFadeOut:IsPlaying() then
Nenue@82 363 self.TransitionFadeOut:Stop()
Nenue@82 364 self:SetAlpha(1)
Nenue@82 365 end
Nenue@82 366 if not self:IsVisible() then
Nenue@82 367 self.TransitionFadeIn:Play()
Nenue@82 368 else
Nenue@82 369 self:ShowPanel()
Nenue@82 370 end
Nenue@82 371
Nenue@81 372 end
Nenue@81 373
Nenue@85 374 print(self:IsVisible())
Nenue@85 375 print(self:GetWidth())
Nenue@85 376 print(self.ProgressBG:GetWidth())
Nenue@82 377 print(' Percent:', floor(self.progressPercent*100)/100, 'BarLength:', floor(self:GetWidth()* self.progressPercent), 'NewInfo:', hasNewInfo, 'IsShown:', self:IsShown())
Nenue@81 378
Nenue@81 379
Nenue@82 380 if progressChange then
Nenue@87 381 self:AnimateProgress(progressChange)
Nenue@81 382 end
Nenue@81 383
Nenue@82 384
Nenue@82 385 if self.progressPercent > 0 then
Nenue@82 386 self.ProgressBar:Show()
Nenue@82 387 self.ProgressBar:SetPoint('TOPRIGHT', self.ProgressBG, 'TOPLEFT', self:GetWidth()* self.progressPercent , 0)
Nenue@84 388 self.Label:SetText(self.progressText)
Nenue@82 389
Nenue@84 390 self.progressLeft = self.progressMax - self.progressAmount
Nenue@84 391 if self.progressOverflow >= self.progressLeft then
Nenue@84 392
Nenue@84 393 self.OverflowBar:SetPoint('TOPRIGHT', self.ProgressBar, 'TOPRIGHT', (self.progressOverflow / self.progressMax) * self:GetWidth(), 0)
Nenue@84 394 else
Nenue@84 395 self.OverflowBar:SetPoint('TOPRIGHT', self.ProgressBG, 'TOPRIGHT', 0, 0)
Nenue@84 396 end
Nenue@84 397
Nenue@82 398 else
Nenue@82 399 self.ProgressBar:Hide()
Nenue@82 400 end
Nenue@81 401 else
Nenue@85 402 self:HidePanel()
Nenue@81 403 end
Nenue@81 404
Nenue@82 405 self.modeChanged = nil
Nenue@84 406 end
Nenue@84 407
Nenue@84 408 function VeneerWorldStateProgressMixin:OnMouseDown(button)
Nenue@84 409 if button == 'RightButton' then
Nenue@84 410 if self.keepOpen then
Nenue@84 411 self.keepOpen = nil
Nenue@87 412 self.timeLived = 1000
Nenue@84 413 else
Nenue@84 414 self.keepOpen = true
Nenue@84 415 end
Nenue@84 416 print('keepOpen =', self.keepOpen)
Nenue@84 417 else
Nenue@84 418 if self.mode == 'xp' then
Nenue@84 419 self.mode = 'artifact'
Nenue@84 420 else
Nenue@85 421 if not self.canGainXP then
Nenue@85 422 return
Nenue@85 423 end
Nenue@84 424 self.mode = 'xp'
Nenue@84 425 end
Nenue@84 426 self:AnimateMode()
Nenue@84 427 end
Nenue@84 428
Nenue@84 429 end
Nenue@84 430
Nenue@84 431 function VeneerWorldStateProgressMixin:AnimateMode()
Nenue@84 432
Nenue@84 433 self.TransitionFadeIn:Stop()
Nenue@84 434 print('|cFF88FF00'..self:GetName()..'.TransitionFadeOut:Play()')
Nenue@84 435 self.modeChanged = true
Nenue@84 436 self.TransitionFadeOut:Play()
Nenue@87 437 end
Nenue@87 438
Nenue@87 439 do
Nenue@87 440 function WorldStateBlockMixin:ShowPanel()
Nenue@87 441 print('|cFF0088FF'..self:GetName()..':ShowPanel()')
Nenue@87 442 self:SetShown(true)
Nenue@87 443 VeneerWorldState:Show()
Nenue@87 444 end
Nenue@87 445 function WorldStateBlockMixin:HidePanel()
Nenue@87 446 print('|cFF0088FF'..self:GetName()..':HidePanel()')
Nenue@87 447 self:SetShown(false)
Nenue@87 448 VeneerWorldState:Reanchor()
Nenue@87 449 end
Nenue@87 450
Nenue@87 451 function WorldStateBlockMixin:OnSizeChanged ()
Nenue@87 452 local h = self:GetHeight()
Nenue@87 453 if h > VeneerWorldState.maxHeight then
Nenue@87 454 VeneerWorldState.maxHeight = h
Nenue@87 455 VeneerWorldState:SetHeight(h)
Nenue@87 456 print('updating max height:', h)
Nenue@87 457 elseif h < VeneerWorldState.maxHeight then
Nenue@87 458 VeneerWorldState:Reanchor()
Nenue@87 459 end
Nenue@87 460 end
Nenue@87 461 function WorldStateBlockMixin:OnHide ()
Nenue@87 462 print('|cFF0088FF'..self:GetName()..':OnHide()')
Nenue@87 463 VeneerWorldState:Reanchor()
Nenue@87 464 end
Nenue@87 465 function WorldStateBlockMixin:OnShow ()
Nenue@87 466 self.timeLived = 0
Nenue@87 467 print('|cFF0088FF'..self:GetName()..':OnShow()')
Nenue@87 468 VeneerWorldState:Reanchor()
Nenue@87 469 end
Nenue@87 470 function WorldStateBlockMixin:Setup()
Nenue@87 471 print('|cFF0088FF'..self:GetName()..':Setup()|r -- nop')
Nenue@87 472 end
Nenue@87 473 function WorldStateBlockMixin:Reset()
Nenue@87 474 print('|cFF0088FF'..self:GetName()..':Reset()')
Nenue@87 475 self.keepOpen = true
Nenue@87 476 self:Setup()
Nenue@87 477 end
Nenue@80 478 end