diff 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
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/Modules/OrderHall.lua	Tue Oct 11 08:03:41 2016 -0400
@@ -0,0 +1,88 @@
+-- Veneer
+-- OrderHall.lua
+-- Created: 10/7/2016 10:55 PM
+-- %file-revision%
+--
+
+VeneerWorldStateCurrencyMixin = {}
+VeneerWorldStateMixin = {}
+local print = DEVIAN_WORKSPACE and function(...) print('VnWorldState', ...) end or nop
+
+function VeneerWorldStateMixin:Setup()
+  hooksecurefunc(OrderHallCommandBar,'Show', function()
+    self:Refresh()
+  end)
+  self:Refresh()
+  --DEFAULT_CHAT_FRAME:AddMessage('Loaded')
+end
+
+function VeneerWorldStateMixin:Refresh()
+  OrderHallCommandBar:ClearAllPoints()
+  OrderHallCommandBar:SetPoint('TOP')
+  OrderHallCommandBar:SetWidth(600)
+  OrderHallCommandBar.Background:SetColorTexture(0,0,0,0.5)
+  OrderHallCommandBar.WorldMapButton:Hide()
+  OrderHallCommandBar:EnableMouse(false)
+end
+local initialized
+function VeneerWorldStateMixin:OnEvent(event, arg)
+  print(event, arg)
+  if OrderHallCommandBar and not initialized then
+    initialized = true
+      self:Setup()
+      self:UnregisterEvent('ADDON_LOADED')
+  end
+
+  if event == 'PLAYER_ENTERING_WORLD' then
+    self:Update()
+  end
+end
+
+function VeneerWorldStateMixin:Update()
+  local frames = {self:GetChildren()}
+  print('|cFFFFFF00All:Update()|r')
+  for i, frame in ipairs(frames) do
+    if frame.Update then
+      print(frame:GetName())
+      frame:Update()
+    end
+  end
+end
+
+
+
+function VeneerWorldStateMixin:OnLoad ()
+  self:RegisterEvent('ADDON_LOADED')
+  self:RegisterEvent('ARTIFACT_UPDATE')
+  self:RegisterEvent('ARTIFACT_XP_UPDATE')
+  self:RegisterEvent('PLAYER_ENTERING_WORLD')
+
+end
+
+function VeneerWorldStateCurrencyMixin:OnLoad ()
+
+  self:RegisterEvent('ZONE_CHANGED')
+  self:RegisterEvent('CURRENCY_DISPLAY_UPDATE')
+  self:RegisterEvent('CHAT_MSG_CURRENCY')
+
+end
+
+function VeneerWorldStateCurrencyMixin:OnEvent (event, arg)
+  self:Update()
+end
+
+
+function VeneerWorldStateCurrencyMixin:Update()
+  local mapID = GetCurrentMapAreaID()
+  print('currency refresh: zone =', mapID)
+  if mapID == 1033 then
+    local name, earned, texture, earnedThisWeek, weeklyMax, totalMax = GetCurrencyInfo(1155)
+
+    self.Icon:SetTexture(texture)
+    self.Label:SetFormattedText("%d / %d", earned, totalMax)
+    self:Show()
+    self:SetWidth(self.Icon:GetWidth() + self.Label:GetStringWidth() + 6)
+  else
+    self:Hide()
+  end
+end
\ No newline at end of file