annotate Modules/WorldState.lua @ 89:74e714637d6a

WorldStateProgress fade-in is called for all visibility check falses
author Nenue
date Fri, 21 Oct 2016 18:03:35 -0400
parents b107b4df7eb6
children 6e2cb847c3c6
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@89 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('PLAYER_ENTERING_WORLD')
Nenue@84 67 self:RegisterEvent('PLAYER_REGEN_ENABLED')
Nenue@84 68 self:RegisterEvent('PLAYER_REGEN_DISABLED')
Nenue@87 69 self:RegisterEvent('ZONE_CHANGED_NEW_AREA')
Nenue@87 70 self:RegisterEvent('ADDON_LOADED')
Nenue@87 71 Veneer:AddHandler(self, self.anchorPoint, true)
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@88 81 if event == 'ZONE_CHANGED_NEW_AREA' or event == 'ADDON_LOADED' then
Nenue@87 82 if OrderHallCommandBar then
Nenue@87 83 self:UnregisterEvent('ZONE_CHANGED_NEW_AREA')
Nenue@87 84 self:UnregisterEvent('ADDON_LOADED')
Nenue@87 85 Veneer:AddHandler(VeneerOrderHallHandler, 'TOP', true)
Nenue@82 86 end
Nenue@82 87 elseif event == 'PLAYER_ENTERING_WORLD' then
Nenue@80 88 self:Update()
Nenue@81 89 elseif event == 'PLAYER_REGEN_ENABLED' then
Nenue@83 90 self:SetShown(true)
Nenue@81 91 elseif event == 'PLAYER_REGEN_DISABLED' then
Nenue@83 92 self:SetShown(false)
Nenue@80 93 end
Nenue@80 94 end
Nenue@80 95
Nenue@88 96 function VeneerWorldStateMixin:Update(isBatchUpdate)
Nenue@80 97 print('|cFFFFFF00All:Update()|r')
Nenue@88 98 for index, frame in ipairs(self.modules) do
Nenue@82 99 if frame.Update then
Nenue@88 100 print(' '..index..' |cFFFF00FFUpdate:|r '.. frame:GetName())
Nenue@88 101 frame:Update(isBatchUpdate)
Nenue@88 102 print(' ', frame:IsVisible(), frame:IsShown())
Nenue@82 103 end
Nenue@82 104 end
Nenue@82 105 end
Nenue@82 106
Nenue@87 107 function VeneerWorldStateMixin:Reanchor(isUpdate)
Nenue@88 108 print(' |cFF0088FF'..self:GetName()..':Reanchor()|r', #self.modules, 'blocks')
Nenue@81 109 self.maxHeight = 0
Nenue@89 110 local lastFrame
Nenue@81 111 for i, frame in ipairs(self.modules) do
Nenue@82 112 print(' '..frame:GetName()..':',frame:IsShown(), frame:IsVisible(), frame:GetHeight())
Nenue@82 113 if frame:IsShown() then
Nenue@89 114 if lastFrame then
Nenue@89 115 frame:SetPoint('TOP', lastFrame, 'BOTTOM')
Nenue@89 116 else
Nenue@89 117 frame:SetPoint('TOP', self, 'TOP')
Nenue@89 118 end
Nenue@89 119
Nenue@89 120 self.maxHeight = self.maxHeight + frame:GetHeight()
Nenue@89 121 lastFrame = frame
Nenue@80 122 end
Nenue@80 123 end
Nenue@82 124 if self.maxHeight == 0 then
Nenue@87 125 print (' hiding because there are no blocks')
Nenue@82 126 self:Hide()
Nenue@82 127 else
Nenue@82 128 self:Show()
Nenue@87 129 print (' height update:', self.maxHeight)
Nenue@82 130 self:SetHeight(self.maxHeight)
Nenue@82 131 end
Nenue@82 132
Nenue@87 133 if not isUpdate then
Nenue@87 134 Veneer:InternalReanchor(self, print)
Nenue@87 135 end
Nenue@80 136 end
Nenue@80 137
Nenue@80 138
Nenue@80 139
Nenue@84 140 function VeneerWorldStateMixin:OnMouseDown()
Nenue@80 141 end
Nenue@80 142
Nenue@87 143 function VeneerOrderHallMixin:Setup()
Nenue@87 144 print('|cFFFFFF00'..self:GetName()..':Setup()')
Nenue@88 145 self:SetParent(OrderHallCommandBar)
Nenue@88 146 self:RegisterEvent("ZONE_CHANGED");
Nenue@88 147 self:RegisterEvent("ZONE_CHANGED_INDOORS");
Nenue@88 148 self:RegisterEvent("ZONE_CHANGED_NEW_AREA");
Nenue@88 149 self:SetShown(true)
Nenue@88 150 end
Nenue@88 151
Nenue@88 152 function VeneerOrderHallMixin:OnEvent(event, ...)
Nenue@88 153
Nenue@88 154 print('|cFF00AAFF'..self:GetName()..'|r:'.. event, ...)
Nenue@88 155 self:Update()
Nenue@88 156 end
Nenue@88 157
Nenue@88 158 function VeneerOrderHallMixin:OnShow()
Nenue@88 159 print('|cFF00AAFF'..self:GetName()..'|r:OnShow()', OrderHallCommandBar:IsShown(), self:IsShown())
Nenue@88 160 self:Update()
Nenue@88 161 Veneer:InternalReanchor(self)
Nenue@88 162 end
Nenue@88 163
Nenue@88 164 function VeneerOrderHallMixin:OnHide()
Nenue@88 165 print('|cFF00AAFF'..self:GetName()..'|r:OnHide()', OrderHallCommandBar:IsShown(), self:IsShown())
Nenue@88 166 Veneer:Reanchor()
Nenue@87 167 end
Nenue@87 168
Nenue@87 169 function VeneerOrderHallMixin:Update()
Nenue@87 170
Nenue@87 171 if not OrderHallCommandBar then
Nenue@87 172 print('|cFFFF4400'..self:GetName()..' updater called without target')
Nenue@87 173 return
Nenue@87 174 end
Nenue@87 175
Nenue@87 176 OrderHallCommandBar:ClearAllPoints()
Nenue@88 177 OrderHallCommandBar:SetPoint('TOP', UIParent, 'TOP')
Nenue@87 178 OrderHallCommandBar:SetWidth(600)
Nenue@87 179 OrderHallCommandBar.Background:SetColorTexture(0,0,0,0.5)
Nenue@87 180 OrderHallCommandBar.WorldMapButton:Hide()
Nenue@87 181 OrderHallCommandBar:EnableMouse(false)
Nenue@88 182 self:SetSize(OrderHallCommandBar:GetSize())
Nenue@87 183
Nenue@88 184 print('|cFF00AAFF'..self:GetName()..'|r:Update()', OrderHallCommandBar:IsVisible(), self:IsShown())
Nenue@88 185 print(debugstack(6))
Nenue@88 186
Nenue@87 187 end
Nenue@87 188
Nenue@80 189 function VeneerWorldStateCurrencyMixin:OnLoad ()
Nenue@84 190 self:RegisterEvent("PLAYER_ENTERING_WORLD");
Nenue@84 191 self:RegisterEvent("ZONE_CHANGED");
Nenue@84 192 self:RegisterEvent("ZONE_CHANGED_INDOORS");
Nenue@84 193 self:RegisterEvent("ZONE_CHANGED_NEW_AREA");
Nenue@80 194 self:RegisterEvent('CURRENCY_DISPLAY_UPDATE')
Nenue@80 195 self:RegisterEvent('CHAT_MSG_CURRENCY')
Nenue@80 196 end
Nenue@80 197
Nenue@80 198 function VeneerWorldStateCurrencyMixin:OnEvent (event, arg)
Nenue@80 199 self:Update()
Nenue@80 200 end
Nenue@80 201
Nenue@80 202
Nenue@88 203 function VeneerWorldStateCurrencyMixin:Update(isBatchUpdate)
Nenue@81 204
Nenue@82 205 print(' Zone:', GetZoneText())
Nenue@81 206 if GetZoneText() == 'Suramar' then
Nenue@80 207 local name, earned, texture, earnedThisWeek, weeklyMax, totalMax = GetCurrencyInfo(1155)
Nenue@80 208
Nenue@80 209 self.Icon:SetTexture(texture)
Nenue@80 210 self.Label:SetFormattedText("%d / %d", earned, totalMax)
Nenue@80 211 self:Show()
Nenue@80 212 self:SetWidth(self.Icon:GetWidth() + self.Label:GetStringWidth() + 6)
Nenue@80 213 else
Nenue@80 214 self:Hide()
Nenue@80 215 end
Nenue@81 216
Nenue@82 217
Nenue@81 218 end
Nenue@81 219
Nenue@82 220 function VeneerWorldStateProgressMixin:OnUpdate(sinceLast)
Nenue@87 221 self.timeLived = (self.timeLived or 0) + sinceLast
Nenue@84 222 if self.keepOpen then
Nenue@84 223 return
Nenue@84 224 end
Nenue@82 225 if self.timeLived >= 3 and not self.TransitionFadeOut:IsPlaying() then
Nenue@82 226 if not self.timeOut then
Nenue@82 227 self.timeOut = true
Nenue@84 228 self.TimedFadeOut:Play()
Nenue@82 229 end
Nenue@82 230 end
Nenue@82 231 end
Nenue@82 232
Nenue@82 233
Nenue@81 234 function VeneerWorldStateProgressMixin:OnLoad()
Nenue@82 235 self:RegisterEvent('PLAYER_EQUIPMENT_CHANGED')
Nenue@81 236
Nenue@82 237 self:RegisterEvent("PLAYER_XP_UPDATE");
Nenue@82 238 self:RegisterEvent("UPDATE_EXHAUSTION");
Nenue@82 239 self:RegisterEvent("PLAYER_LEVEL_UP");
Nenue@82 240 self:RegisterEvent("PLAYER_UPDATE_RESTING");
Nenue@82 241
Nenue@82 242 self:RegisterEvent("ARTIFACT_UPDATE");
Nenue@82 243 self:RegisterEvent("ARTIFACT_XP_UPDATE");
Nenue@82 244 self:RegisterEvent("ARTIFACT_CLOSE");
Nenue@82 245 self:RegisterEvent("ARTIFACT_MAX_RANKS_UPDATE");
Nenue@82 246
Nenue@82 247 self.progressPercent = 0
Nenue@82 248 self.progressAmount = 0
Nenue@82 249 self.progressMax = 1
Nenue@82 250 self.progressOverflow = 0
Nenue@84 251
Nenue@81 252 end
Nenue@81 253
Nenue@81 254 function VeneerWorldStateProgressMixin:Setup()
Nenue@81 255 self:UpdateXPGain()
Nenue@82 256 if self.canGainXP then
Nenue@81 257 self.mode = 'xp'
Nenue@81 258 else
Nenue@81 259 self.mode = 'artifact'
Nenue@81 260 end
Nenue@81 261 print('setup mode:', self.mode)
Nenue@81 262 end
Nenue@81 263
Nenue@82 264 function VeneerWorldStateProgressMixin:OnEvent(event, ...)
Nenue@82 265 local lastMode = self.mode
Nenue@82 266 if event == 'PLAYER_LEVEL_UP' or event == 'ENABLE_XP_GAIN' or event == 'DISABLE_XP_GAIN' then
Nenue@81 267 self:UpdateXPGain()
Nenue@81 268 elseif event == 'ARTIFACT_XP_UPDATE' or event == 'ARTIFACT_UPDATE' then
Nenue@81 269 self.mode = 'artifact'
Nenue@82 270
Nenue@82 271 elseif event == 'PLAYER_EQUIPMENT_CHANGED' then
Nenue@82 272 local slot, hasEquip = ...
Nenue@82 273 if slot == 16 then
Nenue@82 274 self.mode = 'artifact'
Nenue@82 275 lastMode = nil
Nenue@82 276 end
Nenue@82 277 elseif event == 'PLAYER_XP_UPDATE' or event == 'PLAYER_LEVEL_UP' then
Nenue@82 278 print('forcing to XP mode')
Nenue@81 279 self.mode = 'xp'
Nenue@81 280 end
Nenue@82 281 self.modeChanged = (lastMode ~= self.mode)
Nenue@82 282 if self.modeChanged and self:IsVisible() then
Nenue@82 283 print('|cFF88FF00'..self:GetName()..'.TransitionFadeOut:Play()', event, ...)
Nenue@84 284 self:AnimateMode()
Nenue@82 285 else
Nenue@82 286 print('|cFFFFFF00'..self:GetName()..':Update()', event, ...)
Nenue@82 287 self:Update()
Nenue@82 288 end
Nenue@81 289 end
Nenue@81 290 function VeneerWorldStateProgressMixin:UpdateXPGain()
Nenue@82 291 self.canGainXP = (UnitLevel('player') < GetMaxPlayerLevel()) and (not IsXPUserDisabled())
Nenue@82 292 if not self.canGainXP then
Nenue@81 293 self.ProgressBar:SetColorTexture(0.75,0.75,0.75)
Nenue@81 294 end
Nenue@81 295 end
Nenue@81 296
Nenue@81 297 local GetEquippedArtifactInfo = _G.C_ArtifactUI.GetEquippedArtifactInfo
Nenue@81 298 local GetCostForPointAtRank = _G.C_ArtifactUI.GetCostForPointAtRank
Nenue@87 299
Nenue@87 300
Nenue@89 301 local progressHandlers = {
Nenue@89 302 xp = function(self)
Nenue@89 303 local hasNewInfo, showChange = false, false
Nenue@81 304 local xp = UnitXP('player')
Nenue@81 305 local xpMax = UnitXPMax('player')
Nenue@81 306 local bonusXP = GetXPExhaustion()
Nenue@81 307 if xp then
Nenue@81 308 self.progressPercent = xp / xpMax
Nenue@81 309 end
Nenue@84 310 self.progressText = '|cFFFFCC00' .. UnitLevel('player') .. '|r ' .. xp .. '/' .. xpMax
Nenue@82 311 if bonusXP then
Nenue@89 312 self.progressOverflow = min(1,(bonusXP / xpMax))
Nenue@89 313 self.OverflowBar:SetColorTexture(0.5, 0.5,0.5, 0.25)
Nenue@89 314 self.OverflowBar:SetPoint('LEFT', self.ProgressBar, 'LEFT')
Nenue@82 315 else
Nenue@89 316 self.progressOverflow = nil
Nenue@82 317 end
Nenue@89 318 self.ProgressBar:SetColorTexture(0, 0.5,1,1)
Nenue@89 319 self.OverflowAnchor = self.ProgressBar
Nenue@89 320 self.hasNewInfo = (self.progressAmount ~= xp)
Nenue@89 321 showChange = (hasNewInfo and not self.modeChanged) and ((xp - self.progressAmount) / xpMax)
Nenue@89 322
Nenue@82 323 self.progressAmount = xp
Nenue@82 324 self.progressMax = xpMax
Nenue@89 325 return hasNewInfo, showChange
Nenue@89 326 end,
Nenue@89 327 artifact = function(self)
Nenue@89 328 local hasNewInfo, showChange = false, false
Nenue@81 329 local itemID, altItemID, name, icon, totalXP, pointsSpent = GetEquippedArtifactInfo()
Nenue@82 330 if itemID then
Nenue@82 331 local nextRankCost = GetCostForPointAtRank(pointsSpent) or 0
Nenue@88 332 print(' API:', itemID, name, 'XP:', totalXP, 'Points:', pointsSpent, 'Next:', nextRankCost)
Nenue@82 333 hasNewInfo = (self.progressAmount ~= totalXP)
Nenue@89 334 showChange = (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@89 347 if totalXP > nextRankCost then
Nenue@89 348 self.progressText = self.progressText .. ' Level Up!'
Nenue@89 349 self.progressOverflow = (totalXP - nextRankCost) / nextRankCost
Nenue@89 350 self.OverflowBar:SetPoint('LEFT', self.ProgressBG, 'LEFT')
Nenue@89 351 self.OverflowAnchor = self.OverflawBar
Nenue@89 352 else
Nenue@89 353 self.progressOverflow = nil
Nenue@89 354 self.OverflowAnchor = self.ProgressBar
Nenue@89 355 end
Nenue@89 356
Nenue@82 357 self.progressAmount = totalXP
Nenue@82 358 self.progressMax = nextRankCost
Nenue@82 359 else
Nenue@89 360 self.progressOverflow = nil
Nenue@82 361 self.progressAmount = 0
Nenue@82 362 self.progressMax = 1
Nenue@82 363 self.progressText = ''
Nenue@82 364 end
Nenue@89 365 return hasNewInfo, showChange
Nenue@89 366 end
Nenue@89 367 }
Nenue@89 368
Nenue@89 369 function VeneerWorldStateProgressMixin:Update(isBatchUpdate)
Nenue@89 370
Nenue@89 371 local progressChange = false
Nenue@89 372 print(' current mode:', self.mode)
Nenue@89 373 if (not self.mode) or (not progressHandlers[self.mode]) then
Nenue@89 374 self:HidePanel()
Nenue@89 375 return
Nenue@82 376 end
Nenue@82 377
Nenue@89 378 local hasNewInfo, showProgress = progressHandlers[self.mode](self)
Nenue@89 379 self:SetSize(600,16)
Nenue@89 380 if hasNewInfo then
Nenue@89 381 self.timeOut = nil
Nenue@89 382 self.timeLived = 0
Nenue@89 383 end
Nenue@82 384
Nenue@89 385 if not self:IsVisible() then
Nenue@89 386 self.TransitionFadeIn:Play()
Nenue@89 387 else
Nenue@89 388 self:ShowPanel()
Nenue@89 389 end
Nenue@89 390
Nenue@89 391 print(' Percent:', floor(self.progressPercent*100)/100, 'BarLength:', floor(self:GetWidth()* self.progressPercent), 'new:', hasNewInfo, 'shown:', self:IsShown())
Nenue@89 392 print(' Metrics:', self:IsVisible(), self:GetWidth(), self.ProgressBG:GetWidth())
Nenue@89 393 if self.progressPercent > 0 then
Nenue@89 394 self.ProgressBar:Show()
Nenue@89 395 self.ProgressBar:SetPoint('TOPRIGHT', self.ProgressBG, 'TOPLEFT', self:GetWidth()* self.progressPercent , 0)
Nenue@89 396 self.Label:SetText(self.progressText)
Nenue@89 397
Nenue@89 398 self.ProgressSpark:ClearAllPoints()
Nenue@89 399 if self.progressOverflow then
Nenue@89 400 print(' Overflow:', self.progressOverflow)
Nenue@89 401 self.OverflowBar:Show()
Nenue@89 402 self.OverflowBar:SetWidth(self.progressOverflow * self:GetWidth(), 0)
Nenue@89 403 else
Nenue@89 404 self.OverflowBar:Hide()
Nenue@81 405 end
Nenue@89 406 self.ProgressSpark:SetPoint('CENTER', self.OverflowAnchor, 'RIGHT', 0, 0)
Nenue@81 407
Nenue@89 408 else
Nenue@89 409 self.ProgressBar:Hide()
Nenue@89 410 end
Nenue@81 411
Nenue@89 412 if self.progressOverflow and (self.progressOverflow >= self.progressPercent) then
Nenue@89 413 self.OverflowBar:SetDrawLayer('ARTWORK', 1)
Nenue@89 414 self.ProgressBar:SetDrawLayer('ARTWORK', 2)
Nenue@89 415 else
Nenue@89 416 self.OverflowBar:SetDrawLayer('ARTWORK', 2)
Nenue@89 417 self.ProgressBar:SetDrawLayer('ARTWORK', 1)
Nenue@89 418 end
Nenue@81 419
Nenue@82 420 if progressChange then
Nenue@89 421 self:AnimateProgress(progressChange)
Nenue@81 422 end
Nenue@81 423
Nenue@82 424 self.modeChanged = nil
Nenue@84 425 end
Nenue@84 426
Nenue@89 427
Nenue@89 428 function VeneerWorldStateProgressMixin:AnimateProgress(progressChange)
Nenue@89 429
Nenue@89 430
Nenue@89 431 local changeAnchor = (self.progressOverflow and self.OverflowBar) or self.ProgressBar
Nenue@89 432 local progressWidth = self:GetWidth() * min(progressChange, changeAnchor:GetWidth())
Nenue@89 433
Nenue@89 434 self.ProgressAdded:Show()
Nenue@89 435 self.ProgressAdded:ClearAllPoints()
Nenue@89 436 self.ProgressAdded:SetPoint('TOPRIGHT', changeAnchor, 'TOPRIGHT', 0, 0)
Nenue@89 437 self.ProgressAdded:SetPoint('BOTTOMLEFT', changeAnchor, 'BOTTOMRIGHT', - (progressWidth), 0)
Nenue@89 438
Nenue@89 439 print(' Render change:', progressWidth, changeAnchor)
Nenue@89 440 self.ProgressFlash.translation:SetOffset(progressWidth, 0)
Nenue@89 441 self.ProgressFlash:Play()
Nenue@89 442 end
Nenue@89 443
Nenue@84 444 function VeneerWorldStateProgressMixin:OnMouseDown(button)
Nenue@84 445 if button == 'RightButton' then
Nenue@84 446 if self.keepOpen then
Nenue@84 447 self.keepOpen = nil
Nenue@87 448 self.timeLived = 1000
Nenue@84 449 else
Nenue@84 450 self.keepOpen = true
Nenue@84 451 end
Nenue@84 452 print('keepOpen =', self.keepOpen)
Nenue@84 453 else
Nenue@89 454
Nenue@84 455 if self.mode == 'xp' then
Nenue@84 456 self.mode = 'artifact'
Nenue@84 457 else
Nenue@85 458 if not self.canGainXP then
Nenue@85 459 return
Nenue@85 460 end
Nenue@84 461 self.mode = 'xp'
Nenue@84 462 end
Nenue@89 463 print('|cFFFF4400Change mode:', self.mode)
Nenue@89 464
Nenue@89 465
Nenue@84 466 self:AnimateMode()
Nenue@84 467 end
Nenue@84 468
Nenue@84 469 end
Nenue@84 470
Nenue@84 471 function VeneerWorldStateProgressMixin:AnimateMode()
Nenue@84 472
Nenue@84 473 self.TransitionFadeIn:Stop()
Nenue@84 474 print('|cFF88FF00'..self:GetName()..'.TransitionFadeOut:Play()')
Nenue@84 475 self.modeChanged = true
Nenue@84 476 self.TransitionFadeOut:Play()
Nenue@87 477 end
Nenue@87 478
Nenue@87 479 do
Nenue@87 480 function WorldStateBlockMixin:ShowPanel()
Nenue@87 481 print('|cFF0088FF'..self:GetName()..':ShowPanel()')
Nenue@87 482 self:SetShown(true)
Nenue@87 483 VeneerWorldState:Show()
Nenue@87 484 end
Nenue@87 485 function WorldStateBlockMixin:HidePanel()
Nenue@87 486 print('|cFF0088FF'..self:GetName()..':HidePanel()')
Nenue@87 487 self:SetShown(false)
Nenue@87 488 VeneerWorldState:Reanchor()
Nenue@87 489 end
Nenue@87 490
Nenue@87 491 function WorldStateBlockMixin:OnSizeChanged ()
Nenue@87 492 local h = self:GetHeight()
Nenue@87 493 if h > VeneerWorldState.maxHeight then
Nenue@87 494 VeneerWorldState.maxHeight = h
Nenue@87 495 VeneerWorldState:SetHeight(h)
Nenue@87 496 print('updating max height:', h)
Nenue@87 497 elseif h < VeneerWorldState.maxHeight then
Nenue@87 498 VeneerWorldState:Reanchor()
Nenue@87 499 end
Nenue@87 500 end
Nenue@87 501 function WorldStateBlockMixin:OnHide ()
Nenue@87 502 print('|cFF0088FF'..self:GetName()..':OnHide()')
Nenue@87 503 VeneerWorldState:Reanchor()
Nenue@87 504 end
Nenue@87 505 function WorldStateBlockMixin:OnShow ()
Nenue@87 506 self.timeLived = 0
Nenue@87 507 print('|cFF0088FF'..self:GetName()..':OnShow()')
Nenue@87 508 VeneerWorldState:Reanchor()
Nenue@87 509 end
Nenue@87 510 function WorldStateBlockMixin:Setup()
Nenue@87 511 print('|cFF0088FF'..self:GetName()..':Setup()|r -- nop')
Nenue@88 512 self:Update()
Nenue@87 513 end
Nenue@87 514 function WorldStateBlockMixin:Reset()
Nenue@87 515 print('|cFF0088FF'..self:GetName()..':Reset()')
Nenue@87 516 self.keepOpen = true
Nenue@87 517 self:Setup()
Nenue@87 518 end
Nenue@80 519 end