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 |