vanilla-wow-addons – Blame information for rev 1

Subversion Repositories:
Rev:
Rev Author Line No. Line
1 office 1 -- Set mixins and libraries
2 ArcHUD:SetModuleMixins("AceEvent-2.0", "AceHook-2.0", "Metrognome-2.0")
3 ArcHUD.modulePrototype.parent = ArcHUD
4  
5 -- Debug function uses the core :Debug function
6 function ArcHUD.modulePrototype:Debug(level, ...)
7 if(self.parent.LevelDebug) then
8 self.parent:LevelDebug(level, "["..self.name.."] "..unpack(arg))
9 end
10 end
11  
12 function ArcHUD.modulePrototype:RegisterDewdropSettings()
13 table.insert(self.parent.dewdrop_menu.L1, {"text", self.name, "hasArrow", true, "value", "L2_"..self.name})
14  
15 self.parent.dewdrop_menu["L2_"..self.name] = {
16 {
17 "text", self.name,
18 "isTitle", true
19 },
20 {
21 "text", self.L("Version: ")..self.version,
22 "notClickable", true
23 },
24 {
25 "text", self.L("Author: ")..self.author,
26 "notClickable", true
27 },
28 {},
29 {
30 "text", self.L("TEXT","ENABLED"),
31 "tooltipTitle", self.L("TEXT","ENABLED"),
32 "tooltipText", self.L("TOOLTIP","ENABLED"),
33 "checked", false,
34 "func", ArcHUD.modDB,
35 "arg1", "toggle",
36 "arg2", "Enabled",
37 "arg3", self.name
38 },
39 {
40 "text", self.L("TEXT","OUTLINE"),
41 "tooltipTitle", self.L("TEXT","OUTLINE"),
42 "tooltipText", self.L("TOOLTIP","OUTLINE"),
43 "checked", false,
44 "func", ArcHUD.modDB,
45 "arg1", "toggle",
46 "arg2", "Outline",
47 "arg3", self.name
48 },
49 }
50 local t = {}
51 for k,v in ipairs(self.options) do
52 if(type(v) == "table") then
53 t = {
54 "text", self.L("TEXT",v.text),
55 "tooltipTitle", self.L("TEXT",v.text),
56 "tooltipText", self.L("TOOLTIP",v.tooltip),
57 "checked", false,
58 "func", ArcHUD.modDB,
59 "arg1", "toggle",
60 "arg2", v.name,
61 "arg3", self.name
62 }
63 table.insert(self.parent.dewdrop_menu["L2_"..self.name], t)
64 end
65 end
66  
67 if(self.options.attach) then
68 t = {
69 "text", self.L("TEXT","SIDE"),
70 "tooltipTitle", self.L("TEXT","SIDE"),
71 "tooltipText", self.L("TOOLTIP","SIDE"),
72 "hasArrow", true,
73 "value", "L3_"..self.name
74 }
75 table.insert(self.parent.dewdrop_menu["L2_"..self.name], t)
76 self.parent.dewdrop_menu["L3_"..self.name] = {
77 {
78 "text", self.L("SIDE","LEFT"),
79 "isRadio", true,
80 "checked", true,
81 "func", ArcHUD.modDB,
82 "arg1", "set",
83 "arg2", "Side",
84 "arg3", self.name,
85 "arg4", 1
86 },
87 {
88 "text", self.L("SIDE","RIGHT"),
89 "isRadio", true,
90 "checked", false,
91 "func", ArcHUD.modDB,
92 "arg1", "set",
93 "arg2", "Side",
94 "arg3", self.name,
95 "arg4", 2
96 },
97 }
98 t = {
99 "text", self.L("TEXT","LEVEL"),
100 "tooltipTitle", self.L("TEXT","LEVEL"),
101 "tooltipText", self.L("TOOLTIP","LEVEL"),
102 "hasArrow", true,
103 "hasSlider", true,
104 "sliderMin", -5,
105 "sliderMax", 5,
106 "sliderStep", 1,
107 "sliderValue", 0,
108 "sliderFunc", ArcHUD.modDB,
109 "sliderArg1", "set",
110 "sliderArg2", "Level",
111 "sliderArg3", self.name
112 }
113 table.insert(self.parent.dewdrop_menu["L2_"..self.name], t)
114 end
115  
116  
117 end
118  
119 -- Enabling/Disabling
120  
121 function ArcHUD.modulePrototype:OnInitialize()
122 self.parent:ToggleModuleActive(self, false)
123 self:Debug(3, "Creating locale instance")
124 self.L = AceLibrary("AceLocale-2.0"):new("ArcHUD_Module")
125 if(self.Initialize) then
126 self:Initialize()
127 self:Debug(2, "Ring initialized")
128 self:RegisterEvent("ARCHUD_MODULE_ENABLE")
129 self:RegisterEvent("ARCHUD_MODULE_UPDATE")
130 else
131 self:Debug(1, "Missing Initialize(). Aborting")
132 return
133 end
134 if(self.defaults and type(self.defaults) == "table") then
135 -- Add defaults to ArcHUD defaults table
136 self:Debug(3, "Acquiring ring DB namespace")
137 self.db = self.parent:AcquireDBNamespace(self.name)
138 self:Debug(3, "Registering ring default options")
139 self.parent:RegisterDefaults(self.name, "profile", self.defaults)
140 if(not self.db) then
141 self:Debug(1, "Failed to acquire DB namespace")
142 end
143  
144 -- Register chat commands
145 self:RegisterDewdropSettings()
146 end
147  
148 -- Add metadata for module if it doesn't exist
149 if(not self.version) then
150 self.version = self.parent.version
151 end
152 if(not self.author) then
153 self.author = self.parent.author
154 end
155 if(not self.date) then
156 self.date = self.parent.date
157 end
158  
159 self:Debug(3, "Registering Metrognome timers")
160 if(not self:MetroStatus(self.name .. "Alpha")) then
161 self:RegisterMetro(self.name .. "Alpha", ArcHUDRingTemplate.AlphaUpdate, 0.01, self.f)
162 end
163 if(not self:MetroStatus(self.name .. "Fade")) then
164 self:RegisterMetro(self.name .. "Fade", ArcHUDRingTemplate.DoFadeUpdate, 0.01, self.f)
165 end
166 if(not self:MetroStatus(self.name .. "Update")) then
167 self:RegisterMetro(self.name .. "Update", ArcHUDRingTemplate.UpdateAlpha, 0.05, self)
168 end
169 self:Debug(2, "Ring loaded")
170 end
171  
172 function ArcHUD.modulePrototype:OnEnable()
173 self:Debug(3, "Recieved enable event")
174 if(self.Enable and self.db.profile.Enabled) then
175 self:Debug(2, "Enabling ring")
176 if(self.disableEvents and (not self.disableEvents.option or self.disableEvents.option and self.db.profile[self.disableEvents.option])) then
177 self:Debug(3, "Disabling events:")
178 for k,v in ipairs(self.disableEvents) do
179 local f = getglobal(v.frame)
180 if(f) then
181 self:Debug(3, "- Frame '"..f:GetName().."':")
182 for _, event in pairs(v.events) do
183 self:Debug(3, " * "..event)
184 f:UnregisterEvent(event)
185 end
186 if(v.hide and f:IsVisible()) then
187 self:Debug(3, "- Frame '"..f:GetName().."' hiding")
188 f:Hide()
189 end
190 end
191 end
192 self.eventsDisabled = TRUE
193 end
194 self:Debug(3, "Calling self:Enable()")
195 if(self.Update) then
196 self:Update()
197 end
198 self:Enable()
199 self:RegisterEvent("ARCHUD_MODULE_DISABLE")
200 if(not self:IsEventRegistered("ARCHUD_MODULE_UPDATE")) then
201 self:RegisterEvent("ARCHUD_MODULE_UPDATE")
202 end
203 self:Debug(2, "Ring enabled")
204 else
205 self:Debug(2, "Ring disabled as per user setting")
206 self.parent:ToggleModuleActive(self, false)
207 end
208 end
209  
210 function ArcHUD.modulePrototype:OnDisable()
211 self:Debug(2, "Disabling ring")
212 if(self.disableEvents and self.eventsDisabled) then
213 self:Debug(3, "Re-enabling events:")
214 for k,v in ipairs(self.disableEvents) do
215 local f = getglobal(v.frame)
216 if(f) then
217 self:Debug(3, "- Frame '"..f:GetName().."':")
218 for _, event in pairs(v.events) do
219 self:Debug(3, " * "..event)
220 f:RegisterEvent(event)
221 end
222 end
223 end
224 self.eventsDisabled = FALSE
225 end
226 if(self.f) then
227 self.f:Hide()
228 end
229 if(self.Disable) then
230 self:Disable()
231 end
232 self:RegisterEvent("ARCHUD_MODULE_ENABLE")
233 self:RegisterEvent("ARCHUD_MODULE_UPDATE")
234 self:Debug(2, "Ring disabled")
235 end
236  
237 function ArcHUD.modulePrototype:ARCHUD_MODULE_ENABLE()
238 self.parent:ToggleModuleActive(self, true)
239 end
240 function ArcHUD.modulePrototype:ARCHUD_MODULE_DISABLE()
241 self.parent:ToggleModuleActive(self, false)
242 end
243 function ArcHUD.modulePrototype:ARCHUD_MODULE_UPDATE(module)
244 if(module == self.name) then
245 if(self.db.profile.Enabled and not self.parent:IsModuleActive(self)) then
246 self.parent:ToggleModuleActive(self, true)
247 elseif(not self.db.profile.Enabled and self.parent:IsModuleActive(self)) then
248 self.parent:ToggleModuleActive(self, false)
249 elseif(self.db.profile.Enabled and self.parent:IsModuleActive(self)) then
250 if(self.Update) then
251 self:Debug(2, "Updating ring")
252 self:Update()
253 end
254 end
255 end
256 end
257  
258 -- Ring frame creation and setup
259 function ArcHUD.modulePrototype:CreateRing(hasBG, parent)
260 -- Create frame
261 local f = CreateFrame("Frame", nil, parent)
262 f:SetFrameStrata("BACKGROUND")
263 f:SetFrameLevel(10)
264 f:SetWidth(256)
265 f:SetHeight(256)
266  
267 -- Set up textures
268 local t
269  
270 f.quadrants = {}
271  
272 t = f:CreateTexture(nil, "ARTWORK")
273 t:SetTexture("Interface\\Addons\\ArcHUD2\\Icons\\Ring.tga")
274 t:SetAllPoints(f)
275 f.quadrants[1] = t
276  
277 t = f:CreateTexture(nil, "ARTWORK")
278 t:SetTexture("Interface\\Addons\\ArcHUD2\\Icons\\Ring.tga")
279 t:SetAllPoints(f)
280 f.quadrants[2] = t
281  
282 t = f:CreateTexture(nil, "ARTWORK")
283 t:SetTexture("Interface\\Addons\\ArcHUD2\\Icons\\Ring.tga")
284 t:SetAllPoints(f)
285 f.chip = t
286  
287 t = f:CreateTexture(nil, "ARTWORK")
288 t:SetTexture("Interface\\Addons\\ArcHUD2\\Icons\\Slice.tga")
289 t:SetAllPoints(f)
290 f.slice = t
291  
292 -- Set up frame
293 ArcHUDRingTemplate:OnLoad(f)
294  
295 if(hasBG) then
296 -- Create frame
297 local fBG = CreateFrame("Frame", nil, f)
298 fBG:SetFrameLevel(0)
299 fBG:SetPoint("BOTTOMLEFT", f, "BOTTOMLEFT", 0, 0)
300 fBG:SetWidth(256)
301 fBG:SetHeight(256)
302  
303 -- Set up textures
304 fBG.quadrants = {}
305 t = fBG:CreateTexture(nil, "BACKGROUND")
306 t:SetTexture("Interface\\Addons\\ArcHUD2\\Icons\\RingBG.tga")
307 t:SetAllPoints(fBG)
308 fBG.quadrants[1] = t
309  
310 t = fBG:CreateTexture(nil, "BACKGROUND")
311 t:SetTexture("Interface\\Addons\\ArcHUD2\\Icons\\RingBG.tga")
312 t:SetAllPoints(fBG)
313 fBG.quadrants[2] = t
314  
315 t = fBG:CreateTexture(nil, "BACKGROUND")
316 t:SetTexture("Interface\\Addons\\ArcHUD2\\Icons\\RingBG.tga")
317 t:SetAllPoints(fBG)
318 fBG.chip = t
319  
320 t = fBG:CreateTexture(nil, "BACKGROUND")
321 t:SetTexture("Interface\\Addons\\ArcHUD2\\Icons\\Slice.tga")
322 t:SetAllPoints(fBG)
323 fBG.slice = t
324  
325 -- Set up frame
326 ArcHUDRingTemplate:OnLoadBG(fBG)
327  
328 f.BG = fBG
329 end
330  
331 return f
332 end
333  
334 function ArcHUD.modulePrototype:CreateFontString(parent, layer, size, fontsize, justify, color, point)
335 local fs = parent:CreateFontString(nil, layer)
336 local width, height = unpack(size)
337  
338 fs:SetWidth(width)
339 fs:SetHeight(height)
340 fs:SetFont("Fonts\\"..self.L"FONT", fontsize, "OUTLINE")
341 if(color) then
342 fs:SetTextColor(unpack(color))
343 end
344 fs:SetJustifyH(justify)
345 fs:SetPoint(unpack(point))
346  
347 fs:Show()
348  
349 return fs
350 end
351  
352 function ArcHUD.modulePrototype:CreateTexture(parent, layer, size, texture, point)
353 local t = parent:CreateTexture(nil, layer)
354 local width, height = unpack(size)
355  
356 t:SetWidth(width)
357 t:SetHeight(height)
358 if(texture) then
359 t:SetTexture(texture)
360 end
361 if(point) then
362 t:SetPoint(unpack(point))
363 end
364  
365 t:Show()
366  
367 return t
368 end