view 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 source
-- 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