annotate Templates.lua @ 116:ddfe19d70a34

ArtifactPower: - Further 7.2 accommodations, relating to tokens that grant millions of AP. Currency: - Ancient Mana zones list expanded - Legionfall War Supplies, Nethershards, and Blood of Sargeras are tracked globally PaperDoll: - Should update more effectively when delayed artifact data loads in. WorldState: - Fixed hanging panels after OrderHallCommandBar is hidden.
author Nenue
date Wed, 26 Apr 2017 20:06:38 -0400
parents 8c94bee4fdfc
children 1f68c46bc4de
rev   line source
Nenue@90 1 -- Veneer
Nenue@90 2 -- Templates.lua
Nenue@90 3 -- Created: 10/24/2016 9:16 AM
Nenue@90 4 -- %file-revision%
Nenue@90 5 --
Nenue@90 6 -- Mover Widget base
Nick@109 7 local ADDON, Veneer = ...
Nenue@115 8 local print = DEVIAN_WORKSPACE and function(...) _G.print('Veneer', ...) end or nop
Nick@109 9 local PlaySoundKitID = DEVIAN_WORKSPACE and PlaySoundKitID or nop
Nick@109 10 local ipairs, pairs = ipairs, pairs
Nick@109 11 local pack, unpack = pack, unpack
Nenue@90 12
Nick@109 13 local Handler, ConfigLayer, Animation = {}, {}, {}
Nenue@90 14
Nick@109 15 VeneerConfigLayerMixin = ConfigLayer
Nick@109 16 VeneerAnimationMixin = Animation
Nick@109 17 VeneerHandlerMixin = Handler
Nick@109 18 Handler.anchorPoint = 'CENTER'
Nick@109 19 Handler.anchorPriority = 4
Nick@109 20 Handler.data = {}
Nick@109 21 Veneer.HandlerBase = Handler
Nick@109 22 Veneer.ConfigLayerBase = ConfigLayer
Nick@109 23 Veneer.AnimationBase = Animation
Nick@109 24
Nick@109 25
Nick@109 26 function ConfigLayer:OnLoad()
Nenue@90 27 local handler = self:GetParent()
Nenue@90 28 print(handler:GetName(), 'configLayers')
Nenue@90 29 handler.ConfigLayers = handler.ConfigLayers or {}
Nenue@90 30 for i, region in ipairs(handler.ConfigLayers) do
Nenue@90 31 region:SetShown(Veneer.ConfigMode)
Nenue@90 32 end
Nenue@115 33
Nenue@90 34 end
Nenue@90 35
Nick@109 36 function ConfigLayer:OnUpdate()
Nenue@90 37 local handler = self:GetParent()
Nenue@90 38 handler.ConfigLayers = handler.ConfigLayers or {}
Nenue@90 39
Nenue@90 40 self.ConfigName:SetText(handler:GetName())
Nenue@90 41 self.ConfigID:SetText(handler:GetID())
Nenue@90 42 end
Nenue@90 43
Nick@109 44 -- Sets a state flag for use in OnUpdate conditionals
Nick@109 45 function Animation:OnPlay()
Nenue@90 46 PlaySoundKitID(229)
Nenue@90 47 self.animating = true
Nenue@90 48 print('|cFF00FF00Anim:OnPlay|r @', unpack(self.sourcePoint))
Nenue@90 49 end
Nick@109 50 function Animation:OnStop()
Nenue@90 51 PlaySoundKitID(229)
Nenue@90 52 self.animating = nil
Nenue@90 53 print('|cFF00FF00Anim:OnFinish|r @', unpack(self.destPoint))
Nenue@90 54 end
Nick@109 55 function Animation:OnFinished()
Nenue@90 56 PlaySoundKitID(229)
Nenue@90 57 self.animating = nil
Nenue@90 58 print('|cFF00FF00Anim:OnFinish|r @', unpack(self.destPoint))
Nenue@93 59 end
Nenue@93 60
Nick@109 61 -- Replace if module requires anything besides fixing frame anchors
Nick@109 62 function Handler:OnShow()
Nenue@93 63 self:Reanchor()
Nenue@93 64 Veneer:StaticReanchor(self)
Nenue@93 65 end
Nick@109 66 function Handler:OnHide()
Nenue@93 67 Veneer:DynamicReanchor()
Nenue@93 68 end
Nick@109 69 function Handler:Reanchor (anchorAll)
Nenue@99 70 Veneer:DynamicReanchor()
Nenue@98 71 end
Nick@109 72
Nick@109 73 -- Replace if module needs to do more than reconcile SavedVariables pointers
Nick@109 74 function Handler:Setup()
Nenue@115 75 print(self:GetName(), '|cFF00FF88Setup()')
Nenue@102 76 local configName = self:GetName():gsub('^Veneer', '')
Nenue@107 77 VeneerData[configName] = VeneerData[configName] or self.defaultSettings or {}
Nenue@102 78
Nenue@102 79 for k,v in pairs(self.data) do
Nenue@102 80 if not VeneerData[configName][k] then
Nenue@102 81 print('reconciling pre-data:', k, v)
Nenue@102 82 VeneerData[configName][k] = v
Nenue@102 83 end
Nenue@102 84 end
Nenue@115 85
Nenue@115 86 if self.EventList then
Nenue@115 87 for _, event in ipairs(self.EventList) do
Nenue@115 88 print(self:GetName(), event, 'registered')
Nenue@115 89 self:RegisterEvent(event)
Nenue@115 90 end
Nenue@115 91 end
Nenue@115 92
Nenue@107 93 local guid = UnitGUID('player')
Nenue@102 94 self.data = VeneerData[configName]
Nenue@107 95 self.data[guid] = self.data[guid] or {}
Nenue@107 96 self.profile = self.data[guid]
Nenue@102 97 print('data table loaded:', configName)
Nenue@102 98 self.initialized = true
Nenue@102 99 end
Nenue@98 100
Nick@109 101 -- Replace to stop collated outputs.
Nick@109 102 function Handler:Print(...)
Nenue@98 103 local txt = '|cFFFFFF00'..self:GetName()..'|r:'
Nenue@98 104 for i = 1, select('#', ...) do
Nenue@98 105 txt = txt .. ' '.. tostring(select(i, ...))
Nenue@98 106 end
Nenue@98 107 DEFAULT_CHAT_FRAME:AddMessage(txt)
Nenue@103 108 end
Nenue@103 109
Nick@109 110 -- Replace if not using the ConfigLayer template
Nick@109 111 function Handler:UpdateConfigLayers (configMode)
Nenue@103 112 -- Override to manage config visual elements when a config update is fired from /vn or login
Nenue@103 113 if not self:IsShown() then
Nenue@103 114 self:SetShown(configMode)
Nenue@103 115 self:Reanchor()
Nenue@103 116 end
Nenue@103 117 self.configMode = configMode
Nenue@90 118 end