vanilla-wow-addons – Blame information for rev 1
?pathlinks?
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 |