annotate Modules/OrderHall.lua @ 80:bb6b532c5d2f

- added "world state" frame for zone-specific currencies and context-based artifact/experience progress
author Nenue
date Tue, 11 Oct 2016 08:03:41 -0400
parents
children 65ec88b30eb8
rev   line source
Nenue@80 1 -- Veneer
Nenue@80 2 -- OrderHall.lua
Nenue@80 3 -- Created: 10/7/2016 10:55 PM
Nenue@80 4 -- %file-revision%
Nenue@80 5 --
Nenue@80 6
Nenue@80 7 VeneerWorldStateCurrencyMixin = {}
Nenue@80 8 VeneerWorldStateMixin = {}
Nenue@80 9 local print = DEVIAN_WORKSPACE and function(...) print('VnWorldState', ...) end or nop
Nenue@80 10
Nenue@80 11 function VeneerWorldStateMixin:Setup()
Nenue@80 12 hooksecurefunc(OrderHallCommandBar,'Show', function()
Nenue@80 13 self:Refresh()
Nenue@80 14 end)
Nenue@80 15 self:Refresh()
Nenue@80 16 --DEFAULT_CHAT_FRAME:AddMessage('Loaded')
Nenue@80 17 end
Nenue@80 18
Nenue@80 19 function VeneerWorldStateMixin:Refresh()
Nenue@80 20 OrderHallCommandBar:ClearAllPoints()
Nenue@80 21 OrderHallCommandBar:SetPoint('TOP')
Nenue@80 22 OrderHallCommandBar:SetWidth(600)
Nenue@80 23 OrderHallCommandBar.Background:SetColorTexture(0,0,0,0.5)
Nenue@80 24 OrderHallCommandBar.WorldMapButton:Hide()
Nenue@80 25 OrderHallCommandBar:EnableMouse(false)
Nenue@80 26 end
Nenue@80 27 local initialized
Nenue@80 28 function VeneerWorldStateMixin:OnEvent(event, arg)
Nenue@80 29 print(event, arg)
Nenue@80 30 if OrderHallCommandBar and not initialized then
Nenue@80 31 initialized = true
Nenue@80 32 self:Setup()
Nenue@80 33 self:UnregisterEvent('ADDON_LOADED')
Nenue@80 34 end
Nenue@80 35
Nenue@80 36 if event == 'PLAYER_ENTERING_WORLD' then
Nenue@80 37 self:Update()
Nenue@80 38 end
Nenue@80 39 end
Nenue@80 40
Nenue@80 41 function VeneerWorldStateMixin:Update()
Nenue@80 42 local frames = {self:GetChildren()}
Nenue@80 43 print('|cFFFFFF00All:Update()|r')
Nenue@80 44 for i, frame in ipairs(frames) do
Nenue@80 45 if frame.Update then
Nenue@80 46 print(frame:GetName())
Nenue@80 47 frame:Update()
Nenue@80 48 end
Nenue@80 49 end
Nenue@80 50 end
Nenue@80 51
Nenue@80 52
Nenue@80 53
Nenue@80 54 function VeneerWorldStateMixin:OnLoad ()
Nenue@80 55 self:RegisterEvent('ADDON_LOADED')
Nenue@80 56 self:RegisterEvent('ARTIFACT_UPDATE')
Nenue@80 57 self:RegisterEvent('ARTIFACT_XP_UPDATE')
Nenue@80 58 self:RegisterEvent('PLAYER_ENTERING_WORLD')
Nenue@80 59
Nenue@80 60 end
Nenue@80 61
Nenue@80 62 function VeneerWorldStateCurrencyMixin:OnLoad ()
Nenue@80 63
Nenue@80 64 self:RegisterEvent('ZONE_CHANGED')
Nenue@80 65 self:RegisterEvent('CURRENCY_DISPLAY_UPDATE')
Nenue@80 66 self:RegisterEvent('CHAT_MSG_CURRENCY')
Nenue@80 67
Nenue@80 68 end
Nenue@80 69
Nenue@80 70 function VeneerWorldStateCurrencyMixin:OnEvent (event, arg)
Nenue@80 71 self:Update()
Nenue@80 72 end
Nenue@80 73
Nenue@80 74
Nenue@80 75 function VeneerWorldStateCurrencyMixin:Update()
Nenue@80 76 local mapID = GetCurrentMapAreaID()
Nenue@80 77 print('currency refresh: zone =', mapID)
Nenue@80 78 if mapID == 1033 then
Nenue@80 79 local name, earned, texture, earnedThisWeek, weeklyMax, totalMax = GetCurrencyInfo(1155)
Nenue@80 80
Nenue@80 81 self.Icon:SetTexture(texture)
Nenue@80 82 self.Label:SetFormattedText("%d / %d", earned, totalMax)
Nenue@80 83 self:Show()
Nenue@80 84 self:SetWidth(self.Icon:GetWidth() + self.Label:GetStringWidth() + 6)
Nenue@80 85 else
Nenue@80 86 self:Hide()
Nenue@80 87 end
Nenue@80 88 end