vanilla-wow-addons – Blame information for rev 1

Subversion Repositories:
Rev:
Rev Author Line No. Line
1 office 1 function DUF_Initialize()
2 if (DUF_INITIALIZED) then return; end
3  
4 if (DUF_DL_VERSION > DL_VERSION) then
5 DL_Debug("** You need to install the latest version of the Discord Library for this mod to work right. It should be included in the same .zip file from which you extracted this mod. **");
6 return;
7 end
8  
9 if (not DUF_Settings) then
10 DUF_Settings = {};
11 elseif (not DUF_Settings["INITIALIZED2.3"]) then
12 for index in DUF_Settings do
13 if (index ~= "SavedSettings") then
14 DUF_Settings[index] = nil;
15 end
16 end
17 for profile in DUF_Settings.SavedSettings do
18 DUF_Settings[profile] = {};
19 DL_Copy_Table(DUF_Settings.SavedSettings[profile], DUF_Settings[profile]);
20 end
21 DUF_Settings.SavedSettings = nil;
22 end
23 DUF_Settings["INITIALIZED2.3"] = 1;
24  
25 DUF_PLAYER_INDEX = UnitName("player").." :: "..GetCVar("realmName");
26 DUF_INDEX = DUF_Settings[DUF_PLAYER_INDEX];
27  
28 if (not DUF_INDEX) then
29 DUF_INDEX = DUF_TEXT.Default;
30 DUF_Settings[DUF_PLAYER_INDEX] = DUF_INDEX;
31 end
32  
33 if (not DUF_Settings[DUF_INDEX]) then
34 DUF_Options_LoadDefaultSettings(1);
35 end
36  
37 if (DUF_CUSTOM_SETTINGS) then
38 DUF_Settings.Custom = {};
39 DL_Copy_Table(DUF_CUSTOM_SETTINGS, DUF_Settings.Custom);
40 DUF_CUSTOM_SETTINGS = nil;
41 end
42  
43 DUF_Initialize_NewSettings();
44 DUF_Settings.CharacterSettings = nil;
45 DUF_INITIALIZED = true;
46 DUF_SetDefaultUIHooks();
47 DUF_Initialize_AllFrames();
48 DUF_Main_UpdatePartyMembers();
49 DUF_Main_OnEvent("UNIT_PET");
50 DUF_XPBar_Update();
51 DUF_PetXPBar_Update();
52 DUF_HonorBar_Update();
53  
54 if (MI2_MobHealthFrame) then
55 MI2_MobHealthFrame:Hide();
56 end
57 end
58  
59 function DUF_Initialize_NewSettings()
60 if (not DUF_Settings[DUF_INDEX]["INITIALIZED2.0"]) then
61 DUF_Settings[DUF_INDEX].target.ComboPoints.xoffset = DUF_Settings[DUF_INDEX].ComboOffset.x;
62 DUF_Settings[DUF_INDEX].target.ComboPoints.yoffset = DUF_Settings[DUF_INDEX].ComboOffset.y;
63 DUF_Settings[DUF_INDEX].ComboOffset.y = nil;
64 DUF_Settings[DUF_INDEX].ComboOffset.x = nil;
65 DUF_Settings[DUF_INDEX].optionscale = 1;
66 DUF_Settings[DUF_INDEX].updatespeed = 1 / 30;
67 DUF_Settings[DUF_INDEX].updatespeedbase = 30;
68 DUF_Settings[DUF_INDEX].flashthreshold = .1;
69 DUF_Settings[DUF_INDEX].healththreshold1 = .6;
70 DUF_Settings[DUF_INDEX].healththreshold2 = .3;
71 DUF_Settings[DUF_INDEX].healthcolor1 = { r=1, g=1, b=0 };
72 DUF_Settings[DUF_INDEX].healthcolor2 = { r=1, g=0, b=0 };
73 DUF_Settings[DUF_INDEX].manathreshold1 = .6;
74 DUF_Settings[DUF_INDEX].manathreshold2 = .3;
75 DUF_Settings[DUF_INDEX].manacolor1 = { r=1, g=1, b=0 };
76 DUF_Settings[DUF_INDEX].manacolor2 = { r=1, g=0, b=0 };
77 DUF_Settings[DUF_INDEX].targettarget = {};
78 DL_Copy_Table(DUF_Settings[DUF_INDEX].target, DUF_Settings[DUF_INDEX].targettarget);
79 DUF_Settings[DUF_INDEX].targettarget.hide = true;
80 DUF_Settings[DUF_INDEX].targettarget.ComboPoints = nil;
81 DUF_Settings[DUF_INDEX].pet.StatusBar[3] = {};
82 DL_Copy_Table(DUF_Settings[DUF_INDEX].player.StatusBar[3], DUF_Settings[DUF_INDEX].pet.StatusBar[3]);
83 DUF_Settings[DUF_INDEX].pet.StatusBar[3].hide = true;
84 DUF_Settings[DUF_INDEX].player.StatusBar[6] = {};
85 DL_Copy_Table(DUF_Settings[DUF_INDEX].player.StatusBar[3], DUF_Settings[DUF_INDEX].player.StatusBar[6]);
86 DUF_Settings[DUF_INDEX].player.StatusBar[6].hide = true;
87 for _,unit in DUF_FRAME_INDICES do
88 DUF_Settings[DUF_INDEX][unit].RaceIcon = {};
89 DL_Copy_Table(DUF_Settings[DUF_INDEX][unit].ClassIcon, DUF_Settings[DUF_INDEX][unit].RaceIcon);
90 DUF_Settings[DUF_INDEX][unit].RaceIcon.hide = true;
91 DUF_Settings[DUF_INDEX][unit].RankIcon = {};
92 DL_Copy_Table(DUF_Settings[DUF_INDEX][unit].ClassIcon, DUF_Settings[DUF_INDEX][unit].RankIcon);
93 DUF_Settings[DUF_INDEX][unit].RankIcon.hide = true;
94 DUF_Settings[DUF_INDEX][unit].backgroundstyle = 2;
95 DUF_Settings[DUF_INDEX][unit].bgalpha = 1;
96 DUF_Settings[DUF_INDEX][unit].bgcolor.a = nil;
97 DUF_Settings[DUF_INDEX][unit].bordercolor.a = nil;
98 DUF_Settings[DUF_INDEX][unit].bgpadding = 5;
99 DUF_Settings[DUF_INDEX][unit].Buffs.spacing = 0;
100 DUF_Settings[DUF_INDEX][unit].Debuffs.spacing = 0;
101 DUF_Settings[DUF_INDEX][unit].Buffs.bordercolor = {r=1, g=1, b=1};
102 DUF_Settings[DUF_INDEX][unit].Debuffs.bordercolor = {r=1, g=1, b=1};
103 if (DUF_Settings[DUF_INDEX][unit].context == "Reaction") then
104 DUF_Settings[DUF_INDEX][unit].context = 2;
105 elseif (DUF_Settings[DUF_INDEX][unit].context == "Difficulty") then
106 DUF_Settings[DUF_INDEX][unit].context = 1;
107 elseif (DUF_Settings[DUF_INDEX][unit].context == "Class") then
108 DUF_Settings[DUF_INDEX][unit].context = 3;
109 else
110 DUF_Settings[DUF_INDEX][unit].context = nil;
111 end
112 if (DUF_Settings[DUF_INDEX][unit].recolor) then
113 DUF_Settings[DUF_INDEX][unit].bgcontext = 4;
114 end
115 DUF_Settings[DUF_INDEX][unit].StatusBar[4] = {};
116 DUF_Settings[DUF_INDEX][unit].StatusBar[5] = {};
117 DL_Copy_Table(DUF_Settings[DUF_INDEX][unit].StatusBar[1], DUF_Settings[DUF_INDEX][unit].StatusBar[4]);
118 DL_Copy_Table(DUF_Settings[DUF_INDEX][unit].StatusBar[2], DUF_Settings[DUF_INDEX][unit].StatusBar[5]);
119 DUF_Settings[DUF_INDEX][unit].StatusBar[4].hide = true;
120 DUF_Settings[DUF_INDEX][unit].StatusBar[5].hide = true;
121 DUF_Settings[DUF_INDEX][unit].leftclick = 1;
122 DUF_Settings[DUF_INDEX][unit].rightclick = 3;
123 DUF_Settings[DUF_INDEX][unit].middleclick = 2;
124 DUF_Settings[DUF_INDEX][unit].connectmethod = 1;
125 DUF_Settings[DUF_INDEX][unit].spacing = 0;
126 for _,element in DUF_ELEMENT_INDICES do
127 if (element == "TextBox") then
128 for i=1,10 do
129 DUF_Settings[DUF_INDEX][unit][element][i].backgroundstyle = 1;
130 DUF_Settings[DUF_INDEX][unit][element][i].bgalpha = 1;
131 if (not DUF_Settings[DUF_INDEX][unit][element][i].borderalpha) then
132 DUF_Settings[DUF_INDEX][unit][element][i].borderalpha = 1;
133 end
134 DUF_Settings[DUF_INDEX][unit][element][i].bgcolor.a = nil;
135 DUF_Settings[DUF_INDEX][unit][element][i].bordercolor.a = nil;
136 DUF_Settings[DUF_INDEX][unit][element][i].bgpadding = 1;
137 DUF_Settings[DUF_INDEX][unit][element][i].font = 1;
138 DUF_Settings[DUF_INDEX][unit][element][i].justifyV = "CENTER";
139 if (not DUF_Settings[DUF_INDEX][unit][element][i].showbg) then
140 DUF_Settings[DUF_INDEX][unit][element][i].hidebg = true;
141 end
142 DUF_Settings[DUF_INDEX][unit][element][i].showbg = nil;
143 if (DUF_Settings[DUF_INDEX][unit][element][i].context == "Reaction") then
144 DUF_Settings[DUF_INDEX][unit][element][i].context = 2;
145 elseif (DUF_Settings[DUF_INDEX][unit][element][i].context == "Difficulty") then
146 DUF_Settings[DUF_INDEX][unit][element][i].context = 1;
147 elseif (DUF_Settings[DUF_INDEX][unit][element][i].context == "Class") then
148 DUF_Settings[DUF_INDEX][unit][element][i].context = 3;
149 else
150 DUF_Settings[DUF_INDEX][unit].context = nil;
151 end
152 if (not DUF_Settings[DUF_INDEX][unit][element][i].mouseovercolor) then
153 DUF_Settings[DUF_INDEX][unit][element][i].mouseovercolor = {r=1, g=1, b=0};
154 end
155 DUF_Settings[DUF_INDEX][unit][element][i].attach = "Unit Frame";
156 DUF_Settings[DUF_INDEX][unit][element][i].attachpoint = "TOPLEFT";
157 DUF_Settings[DUF_INDEX][unit][element][i].attachto = "TOPLEFT";
158 DUF_Settings[DUF_INDEX][unit][element][i].leftclick = 1;
159 DUF_Settings[DUF_INDEX][unit][element][i].rightclick = 3;
160 DUF_Settings[DUF_INDEX][unit][element][i].middleclick = 2;
161 end
162 elseif (element == "StatusBar") then
163 for i=1,6 do
164 if (DUF_Settings[DUF_INDEX][unit][element][i]) then
165 DUF_Settings[DUF_INDEX][unit][element][i].backgroundstyle = 1;
166 DUF_Settings[DUF_INDEX][unit][element][i].bgalpha = 1;
167 DUF_Settings[DUF_INDEX][unit][element][i].bgcolor.a = nil;
168 DUF_Settings[DUF_INDEX][unit][element][i].bordercolor.a = nil;
169 DUF_Settings[DUF_INDEX][unit][element][i].bgpadding = 1;
170 DUF_Settings[DUF_INDEX][unit][element][i].color2 = {r=1, g=1, b=0};
171 DUF_Settings[DUF_INDEX][unit][element][i].attach = "Unit Frame";
172 DUF_Settings[DUF_INDEX][unit][element][i].attachpoint = "TOPLEFT";
173 DUF_Settings[DUF_INDEX][unit][element][i].attachto = "TOPLEFT";
174 DUF_Settings[DUF_INDEX][unit][element][i].leftclick = 1;
175 DUF_Settings[DUF_INDEX][unit][element][i].rightclick = 3;
176 DUF_Settings[DUF_INDEX][unit][element][i].middleclick = 2;
177 if (not DUF_Settings[DUF_INDEX][unit][element][i].mouseovercolor) then
178 DUF_Settings[DUF_INDEX][unit][element][i].mouseovercolor = {r=1, g=1, b=0};
179 end
180 if (DUF_Settings[DUF_INDEX][unit][element][i].recolor) then
181 if (i==1) then
182 DUF_Settings[DUF_INDEX][unit][element][i].context = 4;
183 else
184 DUF_Settings[DUF_INDEX][unit][element][i].context = 5;
185 end
186 DUF_Settings[DUF_INDEX][unit][element][i].recolor = nil;
187 end
188 end
189 if (i == 1 or i == 4) then
190 DUF_Settings[DUF_INDEX][unit][element][i].context = 4;
191 elseif (i == 2 or i == 5) then
192 DUF_Settings[DUF_INDEX][unit][element][i].context = 5;
193 DUF_Settings[DUF_INDEX][unit][element][i].hideifnomana = true;
194 end
195 end
196 else
197 DUF_Settings[DUF_INDEX][unit][element].backgroundstyle = 2;
198 DUF_Settings[DUF_INDEX][unit][element].bgalpha = 1;
199 DUF_Settings[DUF_INDEX][unit][element].bgcolor.a = nil;
200 DUF_Settings[DUF_INDEX][unit][element].bgpadding = 5;
201 DUF_Settings[DUF_INDEX][unit][element].context = nil;
202 if (not DUF_Settings[DUF_INDEX][unit][element].mouseovercolor) then
203 DUF_Settings[DUF_INDEX][unit][element].mouseovercolor = {r=1, g=1, b=0};
204 end
205 DUF_Settings[DUF_INDEX][unit][element].attach = "Unit Frame";
206 DUF_Settings[DUF_INDEX][unit][element].attachpoint = "TOPLEFT";
207 DUF_Settings[DUF_INDEX][unit][element].attachto = "TOPLEFT";
208 DUF_Settings[DUF_INDEX][unit][element].leftclick = 1;
209 DUF_Settings[DUF_INDEX][unit][element].rightclick = 3;
210 DUF_Settings[DUF_INDEX][unit][element].middleclick = 2;
211 if (not DUF_Settings[DUF_INDEX][unit][element].borderalpha) then
212 DUF_Settings[DUF_INDEX][unit][element].borderalpha = 1;
213 end
214 end
215 end
216 end
217 DUF_Settings[DUF_INDEX].target.ComboPoints.backgroundstyle = 2;
218 DUF_Settings[DUF_INDEX].target.ComboPoints.bgalpha = 1;
219 DUF_Settings[DUF_INDEX].target.ComboPoints.bgcolor.a = nil;
220 DUF_Settings[DUF_INDEX].target.ComboPoints.bgpadding = 5;
221 DUF_Settings[DUF_INDEX].target.ComboPoints.attach = "Unit Frame";
222 DUF_Settings[DUF_INDEX].target.ComboPoints.attachpoint = "TOPLEFT";
223 DUF_Settings[DUF_INDEX].target.ComboPoints.attachto = "TOPLEFT";
224 DUF_Settings[DUF_INDEX].target.ComboPoints.mouseovercolor = { r=1, g=1, b=0 };
225 DUF_Settings[DUF_INDEX].pet.HappinessIcon.backgroundstyle = 2;
226 DUF_Settings[DUF_INDEX].pet.HappinessIcon.bgalpha = 1;
227 DUF_Settings[DUF_INDEX].pet.HappinessIcon.bgcolor.a = nil;
228 DUF_Settings[DUF_INDEX].pet.HappinessIcon.bgpadding = 5;
229 DUF_Settings[DUF_INDEX].pet.HappinessIcon.attach = "Unit Frame";
230 DUF_Settings[DUF_INDEX].pet.HappinessIcon.attachpoint = "TOPLEFT";
231 DUF_Settings[DUF_INDEX].pet.HappinessIcon.attachto = "TOPLEFT";
232 DUF_Settings[DUF_INDEX].pet.HappinessIcon.mouseovercolor = { r=1, g=1, b=0 };
233 DUF_Settings[DUF_INDEX].pet.HappinessIcon.leftclick = 1;
234 DUF_Settings[DUF_INDEX].pet.HappinessIcon.rightclick = 3;
235 DUF_Settings[DUF_INDEX].pet.HappinessIcon.middleclick = 2;
236 DUF_Settings[DUF_INDEX].target.EliteTexture = { size=128, alpha=1, bgcolor={0,0,0}, bordercolor={0,0,0}, mouseovercolor={1,1,0}, bgalpha=1, bgpadding=5, hidebg=true, backgroundstyle=2, borderalpha=1, xoffset=0, yoffset=0, attach="Unit Frame", attachto="TOPLEFT", attachpoint="TOPLEFT", hide=true};
237 end
238 DUF_Settings[DUF_INDEX].ComboOffset = nil;
239  
240 if (not DUF_Settings[DUF_INDEX]["INITIALIZED2.0f"]) then
241 for _,unit in DUF_FRAME_INDICES do
242 for i=1,10 do
243 if (tonumber(DUF_Settings[DUF_INDEX][unit].TextBox[i].font)) then
244 DUF_Settings[DUF_INDEX][unit].TextBox[i].font = "DUF_Font"..DUF_Settings[DUF_INDEX][unit].TextBox[i].font..".ttf";
245 end
246 end
247 end
248 end
249  
250 if (not DUF_Settings[DUF_INDEX]["INITIALIZED2.1"]) then
251 for _,unit in DUF_FRAME_INDICES do
252 DUF_Settings[DUF_INDEX][unit].Portrait.bordcolor = { r=1, g=1, b=1 };
253 for _,element in DUF_ELEMENT_INDICES do
254 if (element == "TextBox") then
255 for i=1,10 do
256 DUF_Settings[DUF_INDEX][unit][element][i].framelevel = 0;
257 DUF_Settings[DUF_INDEX][unit][element][i].framestrata = "LOW";
258 DUF_Settings[DUF_INDEX][unit][element][i].label = DUF_TEXT["TextBox"..i];
259 end
260 elseif (element == "StatusBar") then
261 for i=1,6 do
262 if (DUF_Settings[DUF_INDEX][unit][element][i]) then
263 DUF_Settings[DUF_INDEX][unit][element][i].framelevel = 0;
264 DUF_Settings[DUF_INDEX][unit][element][i].framestrata = "BACKGROUND";
265 end
266 end
267 else
268 DUF_Settings[DUF_INDEX][unit][element].framelevel = 0;
269 DUF_Settings[DUF_INDEX][unit][element].framestrata = "LOW";
270 end
271 end
272 end
273 end
274  
275 if (not DUF_Settings[DUF_INDEX]["INITIALIZED2.2"]) then
276 DUF_Settings[DUF_INDEX].player.Buffs.durationheight = 6;
277 DUF_Settings[DUF_INDEX].player.Buffs.durationcolor = {r=1, g=1, b=1};
278 DUF_Settings[DUF_INDEX].player.Buffs.durationfont = "DUF_Font1.ttf";
279 DUF_Settings[DUF_INDEX].player.Buffs.durationalpha = 1;
280 DUF_Settings[DUF_INDEX].player.Buffs.durationx = 0;
281 DUF_Settings[DUF_INDEX].player.Buffs.durationy = -5;
282 DUF_Settings[DUF_INDEX].player.Debuffs.durationheight = 6;
283 DUF_Settings[DUF_INDEX].player.Debuffs.durationcolor = {r=1, g=1, b=1};
284 DUF_Settings[DUF_INDEX].player.Debuffs.durationfont = "DUF_Font1.ttf";
285 DUF_Settings[DUF_INDEX].player.Debuffs.durationalpha = 1;
286 DUF_Settings[DUF_INDEX].player.Debuffs.durationx = 0;
287 DUF_Settings[DUF_INDEX].player.Debuffs.durationy = -5;
288 for i=0,3 do
289 DUF_Settings[DUF_INDEX]["usefor"..i] = 1;
290 end
291 end
292 if (not DUF_Settings[DUF_INDEX]["INITIALIZED2.2c"]) then
293 for _,unit in DUF_FRAME_INDICES do
294 DUF_Settings[DUF_INDEX][unit].Buffs.hspacing = DUF_Settings[DUF_INDEX][unit].Buffs.spacing;
295 DUF_Settings[DUF_INDEX][unit].Buffs.vspacing = DUF_Settings[DUF_INDEX][unit].Buffs.spacing;
296 DUF_Settings[DUF_INDEX][unit].Debuffs.hspacing = DUF_Settings[DUF_INDEX][unit].Debuffs.spacing;
297 DUF_Settings[DUF_INDEX][unit].Debuffs.vspacing = DUF_Settings[DUF_INDEX][unit].Debuffs.spacing;
298 end
299 end
300 if (not DUF_Settings[DUF_INDEX]["INITIALIZED2.3s"]) then
301 for _,unit in DUF_FRAME_INDICES do
302 for i=1,6 do
303 if (DUF_Settings[DUF_INDEX][unit].StatusBar[i]) then
304 DUF_Settings[DUF_INDEX][unit].StatusBar[i].direction = 1;
305 end
306 end
307 end
308 end
309  
310 DUF_Settings[DUF_INDEX]["INITIALIZED2.3s"] = true;
311 DUF_Settings[DUF_INDEX]["INITIALIZED2.2c"] = true;
312 DUF_Settings[DUF_INDEX]["INITIALIZED2.2"] = true;
313 DUF_Settings[DUF_INDEX]["INITIALIZED2.1"] = true;
314 DUF_Settings[DUF_INDEX]["INITIALIZED2.0f"] = true;
315 DUF_Settings[DUF_INDEX]["INITIALIZED2.0"] = true;
316 end
317  
318 function DUF_Initialize_AllFrames(debug)
319 local unitFrame;
320 for unit in DUF_FRAME_DATA do
321 DUF_Initialize_Frame(unit);
322 DUF_Initialize_Portrait(unit);
323 DUF_Initialize_ClassIcon(unit);
324 DUF_Initialize_RaceIcon(unit);
325 DUF_Initialize_RankIcon(unit);
326 for i=1,6 do
327 DUF_Initialize_StatusBar(unit, i, debug);
328 end
329 for i=1,10 do
330 DUF_Initialize_TextBox(unit, i);
331 end
332 DUF_Initialize_PVPIcon(unit);
333 DUF_Initialize_StatusIcon(unit);
334 DUF_Initialize_LootIcon(unit);
335 DUF_Initialize_LeaderIcon(unit);
336 DUF_Initialize_Buffs(unit);
337 DUF_Initialize_Debuffs(unit);
338 end
339 DUF_Initialize_ComboPoints();
340 DUF_Initialize_HappinessIcon();
341 DUF_Initialize_EliteTexture();
342 if (DUF_Options) then
343 DUF_Options_SetScale();
344 DUF_Init_ContextColors();
345 DUF_Init_MiscOptions();
346 end
347 DUF_Options_SetUpdateSpeed();
348 DUF_Toggle_DefaultFrames();
349 DUF_PlayerFrame:Hide();
350 if (not DUF_Settings[DUF_INDEX].player.hide) then
351 DUF_PlayerFrame:Show();
352 end
353 for i=1,16 do
354 getglobal("DUF_PlayerFrame_Buffs_"..i).playerbuff = true;
355 getglobal("DUF_PlayerFrame_Debuffs_"..i).playerbuff = true;
356 end
357 if (DUF_Settings[DUF_INDEX].hidebuffframe) then
358 BuffFrame:Hide();
359 BuffFrame.origShow = BuffFrame.Show;
360 BuffFrame.Show = function() end;
361 elseif (BuffFrame.origShow) then
362 BuffFrame.Show = BuffFrame.origShow;
363 BuffFrame.origShow = nil;
364 BuffFrame:Show();
365 end
366 end
367  
368 function DUF_Initialize_BaseSettings(frame, settings, debug)
369 local framename = frame:GetName();
370  
371 local bgframe = getglobal(framename.."_Background");
372 local bgtexture = "Interface\\AddOns\\DiscordLibrary\\PlainBackdrop";
373 if (settings.bgtexture and settings.bgtexture ~= "") then
374 bgtexture = "Interface\\AddOns\\DiscordUnitFrames\\CustomTextures\\"..settings.bgtexture;
375 end
376 if (settings.backgroundstyle == 1) then
377 bgframe:SetBackdrop({bgFile = bgtexture, edgeFile = "Interface\\AddOns\\DiscordLibrary\\PlainBackdrop", tile = nil, tileSize = 1, edgeSize = 1, insets = { left = 1, right = 1, top = 1, bottom = 1 }});
378 elseif (settings.backgroundstyle == 2) then
379 bgframe:SetBackdrop({bgFile = bgtexture, edgeFile = "Interface\\Tooltips\\UI-Tooltip-Border", tile = nil, tileSize = 16, edgeSize = 16, insets = { left = 5, right = 5, top = 5, bottom = 5 }});
380 elseif (settings.backgroundstyle == 3) then
381 bgframe:SetBackdrop({bgFile = bgtexture, edgeFile = "Interface\\DialogFrame\\UI-DialogBox-Border", tile = nil, tileSize = 32, edgeSize = 32, insets = { left = 11, right = 12, top = 12, bottom = 11 }});
382 elseif (settings.backgroundstyle == 4) then
383 bgframe:SetBackdrop({bgFile = bgtexture, edgeFile = "Interface\\Buttons\\UI-SliderBar-Border", tile = nil, tileSize = 8, edgeSize = 8, insets = { left = 3, right = 3, top = 6, bottom = 6 }});
384 end
385 bgframe:SetBackdropColor(settings.bgcolor.r, settings.bgcolor.g, settings.bgcolor.b, settings.bgalpha);
386 bgframe:SetBackdropBorderColor(settings.bordercolor.r, settings.bordercolor.g, settings.bordercolor.b, settings.borderalpha);
387 if (settings.hidebg) then
388 bgframe:Hide();
389 else
390 bgframe:Show();
391 end
392  
393 frame:ClearAllPoints();
394 frame:SetPoint("CENTER", UIParent, "CENTER", 0, 0);
395  
396 if (settings.framelevel and settings.framestrata) then
397 frame:SetFrameStrata(settings.framestrata);
398 local framelevel = frame.baseframelevel + settings.framelevel;
399 if (framelevel < 0) then framelevel = 0; end
400 frame:SetFrameLevel(framelevel);
401 end
402 bgframe:SetFrameStrata("BACKGROUND");
403  
404 local height, width;
405 if (settings.size) then
406 height = settings.size;
407 width = settings.size;
408 else
409 height = settings.height;
410 width = settings.width;
411 end
412 if (frame.dynamicsize) then
413 height = height * frame.dynamicsize;
414 width = width * frame.dynamicsize;
415 end
416  
417 frame:SetWidth(width);
418 frame:SetHeight(height);
419 frame:SetAlpha(settings.alpha);
420 bgframe:SetWidth(width + settings.bgpadding * 2);
421 bgframe:SetHeight(height + settings.bgpadding * 2);
422  
423 if (settings.hide or settings.mouseover) then
424 frame:Hide();
425 else
426 frame:Show();
427 end
428 frame.flashing = nil;
429  
430 if (settings.disablemouse) then
431 frame:EnableMouse(false);
432 else
433 frame:EnableMouse(1);
434 end
435 end
436  
437 function DUF_Initialize_Buffs(unit)
438 local frame = getglobal(DUF_FRAME_DATA[unit].frame.."_Buffs");
439 local settings = DUF_Settings[DUF_INDEX][DUF_FRAME_DATA[unit].index].Buffs;
440  
441 DUF_Initialize_Element(unit, frame, settings);
442  
443 if (settings.reverse) then
444 local button = getglobal(frame:GetName().."_16");
445 local buttontexture = getglobal(frame:GetName().."_16_Texture");
446 button:ClearAllPoints();
447 button:SetPoint("BOTTOMRIGHT", frame:GetName(), "BOTTOMRIGHT", 0, 0);
448 button:SetFrameLevel(frame:GetFrameLevel() + 1);
449 button:SetWidth(settings.size);
450 button:SetHeight(settings.size);
451 buttontexture:SetWidth(settings.size);
452 buttontexture:SetHeight(settings.size);
453 local prevname;
454 for i=15, 1, -1 do
455 prevname = frame:GetName().."_"..(i+1);
456 button = getglobal(frame:GetName().."_"..i);
457 buttontexture = getglobal(frame:GetName().."_"..i.."_Texture");
458 button:ClearAllPoints();
459 if (settings.vertical) then
460 button:SetPoint("BOTTOM", prevname, "TOP", 0, settings.vspacing);
461 else
462 button:SetPoint("RIGHT", prevname, "LEFT", -settings.hspacing, 0);
463 end
464 button:SetFrameLevel(frame:GetFrameLevel() + (17 - i));
465 button:SetWidth(settings.size);
466 button:SetHeight(settings.size);
467 buttontexture:SetWidth(settings.size);
468 buttontexture:SetHeight(settings.size);
469 end
470 else
471 local button = getglobal(frame:GetName().."_1");
472 local buttontexture = getglobal(frame:GetName().."_1_Texture");
473 button:ClearAllPoints();
474 button:SetPoint("TOPLEFT", frame:GetName(), "TOPLEFT", 0, 0);
475 button:SetFrameLevel(frame:GetFrameLevel() + 1);
476 button:SetWidth(settings.size);
477 button:SetHeight(settings.size);
478 buttontexture:SetWidth(settings.size);
479 buttontexture:SetHeight(settings.size);
480 local prevname;
481 for i=2,16 do
482 prevname = frame:GetName().."_"..(i-1);
483 button = getglobal(frame:GetName().."_"..i);
484 buttontexture = getglobal(frame:GetName().."_"..i.."_Texture");
485 button:ClearAllPoints();
486 if (settings.vertical) then
487 button:SetPoint("TOP", prevname, "BOTTOM", 0, -settings.vspacing);
488 else
489 button:SetPoint("LEFT", prevname, "RIGHT", settings.hspacing, 0);
490 end
491 button:SetFrameLevel(frame:GetFrameLevel() + i);
492 button:SetWidth(settings.size);
493 button:SetHeight(settings.size);
494 buttontexture:SetWidth(settings.size);
495 buttontexture:SetHeight(settings.size);
496 end
497 end
498 if (settings.tworows) then
499 local row2start = math.ceil(settings.shown / 2) + 1;
500 if (settings.reverse) then
501 row2start = 16 - row2start + 1;
502 end
503 button = getglobal(frame:GetName().."_"..row2start);
504 button:ClearAllPoints();
505 if (settings.vertical) then
506 if (settings.reverse) then
507 button:SetPoint("RIGHT", frame:GetName().."_16", "LEFT", -settings.hspacing, 0);
508 else
509 button:SetPoint("LEFT", frame:GetName().."_1", "RIGHT", settings.hspacing, 0);
510 end
511 else
512 if (settings.reverse) then
513 button:SetPoint("BOTTOM", frame:GetName().."_16", "TOP", 0, settings.vspacing);
514 else
515 button:SetPoint("TOP", frame:GetName().."_1", "BOTTOM", 0, -settings.vspacing);
516 end
517 end
518 end
519  
520 local stacksize = 9 * settings.size / 15;
521 for i=1,16 do
522 local button = getglobal(frame:GetName().."_"..i);
523 local stack = getglobal(button:GetName().."_Stack");
524 local scale = button:GetScale();
525 stack:SetFont("Interface\\AddOns\\DiscordUnitFrames\\CustomFonts\\DUF_Font1.ttf", stacksize, "outline='THICK'");
526 button:SetScale(scale + 1);
527 button:SetScale(scale);
528 end
529  
530 if (unit == "player") then
531 for i=1,16 do
532 local button = getglobal("DUF_PlayerFrame_Buffs_"..i);
533 local duration = getglobal("DUF_PlayerFrame_Buffs_"..i.."_Text");
534 duration:SetFont("Interface\\AddOns\\DiscordUnitFrames\\CustomFonts\\"..settings.durationfont, settings.durationheight);
535 duration:SetTextColor(settings.durationcolor.r, settings.durationcolor.g, settings.durationcolor.b, settings.durationalpha);
536 local scale = button:GetScale();
537 button:SetScale(scale + 1);
538 button:SetScale(scale);
539 duration:ClearAllPoints();
540 duration:SetPoint("TOP", button, "BOTTOM", settings.durationx, settings.durationy);
541 if (settings.showduration) then
542 duration:Show();
543 else
544 duration:Hide();
545 end
546 button.playerbuff = 1
547 end
548 end
549  
550 DUF_UnitFrame_UpdateBuffs(unit);
551 end
552  
553 function DUF_Initialize_ClassIcon(unit)
554 local frame = getglobal(DUF_FRAME_DATA[unit].frame.."_ClassIcon");
555 local texture = getglobal(DUF_FRAME_DATA[unit].frame.."_ClassIcon_Texture");
556 local settings = DUF_Settings[DUF_INDEX][DUF_FRAME_DATA[unit].index].ClassIcon;
557  
558 DUF_Initialize_Element(unit, frame, settings);
559  
560 texture:SetTexture("Interface\\Glues\\CharacterCreate\\UI-CharacterCreate-Classes");
561 DUF_Set_ClassIcon(unit);
562 end
563  
564 function DUF_Initialize_ComboPoints()
565 local settings = DUF_Settings[DUF_INDEX].target.ComboPoints;
566  
567 DUF_Initialize_Element("target", DUF_TargetFrame_ComboPoints, settings);
568  
569 local combopoint
570 for i=1, 5 do
571 combopoint = getglobal("DUF_TargetFrame_ComboPoints_"..i);
572 combopoint:SetHeight(settings.size);
573 combopoint:SetWidth(settings.size);
574 getglobal("DUF_TargetFrame_ComboPoints_"..i.."_Texture"):SetVertexColor(settings.color.r, settings.color.g, settings.color.b);
575 combopoint:ClearAllPoints();
576 if (i > 1) then
577 local prev = "DUF_TargetFrame_ComboPoints_"..(i - 1);
578 if (settings.vertical) then
579 combopoint:SetPoint("TOP", prev, "BOTTOM", 0, -settings.spacing);
580 else
581 combopoint:SetPoint("LEFT", prev, "RIGHT", settings.spacing, 0);
582 end
583 else
584 combopoint:SetPoint("TOPLEFT", "DUF_TargetFrame_ComboPoints", "TOPLEFT", 0, 0);
585 end
586 local cptexture = getglobal("DUF_TargetFrame_ComboPoints_"..i.."_Texture");
587 if (settings.customtexture and settings.customtexture ~= "") then
588 cptexture:SetTexture("Interface\\AddOns\\DiscordUnitFrames\\CustomTextures\\"..settings.customtexture);
589 cptexture:SetTexCoord(0, 1, 0, 1);
590 else
591 cptexture:SetTexture("Interface\\ComboFrame\\ComboPoint");
592 cptexture:SetTexCoord(0, .375, 0, .8);
593 end
594 end
595 DUF_ComboPoints_Update();
596 end
597  
598 function DUF_Initialize_Debuffs(unit)
599 local frame = getglobal(DUF_FRAME_DATA[unit].frame.."_Debuffs");
600 local settings = DUF_Settings[DUF_INDEX][DUF_FRAME_DATA[unit].index].Debuffs;
601  
602 DUF_Initialize_Element(unit, frame, settings);
603  
604 if (settings.reverse) then
605 local button = getglobal(frame:GetName().."_16");
606 local buttontex = getglobal(frame:GetName().."_16_Texture");
607 button:ClearAllPoints();
608 button:SetPoint("BOTTOMRIGHT", frame:GetName(), "BOTTOMRIGHT", 0, 0);
609 button:SetFrameLevel(frame:GetFrameLevel() + 1);
610 button:SetWidth(settings.size);
611 button:SetHeight(settings.size);
612 buttontex:SetWidth(settings.size);
613 buttontex:SetHeight(settings.size);
614 local prevname;
615 for i=15, 1, -1 do
616 prevname = frame:GetName().."_"..(i+1);
617 button = getglobal(frame:GetName().."_"..i);
618 buttontex = getglobal(frame:GetName().."_"..i.."_Texture");
619 button:ClearAllPoints();
620 if (settings.vertical) then
621 button:SetPoint("BOTTOM", prevname, "TOP", 0, settings.vspacing);
622 else
623 button:SetPoint("RIGHT", prevname, "LEFT", -settings.hspacing, 0);
624 end
625 button:SetFrameLevel(frame:GetFrameLevel() + (17 - i));
626 button:SetWidth(settings.size);
627 button:SetHeight(settings.size);
628 buttontex:SetWidth(settings.size);
629 buttontex:SetHeight(settings.size);
630 end
631 else
632 local button = getglobal(frame:GetName().."_1");
633 local buttontex = getglobal(frame:GetName().."_1_Texture");
634 button:ClearAllPoints();
635 button:SetPoint("TOPLEFT", frame:GetName(), "TOPLEFT", 0, 0);
636 button:SetFrameLevel(frame:GetFrameLevel() + 1);
637 button:SetWidth(settings.size);
638 button:SetHeight(settings.size);
639 buttontex:SetWidth(settings.size);
640 buttontex:SetHeight(settings.size);
641 local prevname;
642 for i=2,16 do
643 prevname = frame:GetName().."_"..(i-1);
644 button = getglobal(frame:GetName().."_"..i);
645 buttontex = getglobal(frame:GetName().."_"..i.."_Texture");
646 button:ClearAllPoints();
647 if (settings.vertical) then
648 button:SetPoint("TOP", prevname, "BOTTOM", 0, -settings.vspacing);
649 else
650 button:SetPoint("LEFT", prevname, "RIGHT", settings.hspacing, 0);
651 end
652 button:SetFrameLevel(frame:GetFrameLevel() + i);
653 button:SetWidth(settings.size);
654 button:SetHeight(settings.size);
655 buttontex:SetWidth(settings.size);
656 buttontex:SetHeight(settings.size);
657 end
658 end
659  
660 if (settings.flash) then
661 for i=1,16 do
662 local button = getglobal(frame:GetName().."_"..i);
663 button.flashing = true;
664 button.timer = .5;
665 button.direction = 1;
666 end
667 else
668 for i=1,16 do
669 local button = getglobal(frame:GetName().."_"..i);
670 button:SetAlpha(1);
671 button.flashing = nil;
672 end
673 end
674  
675 if (settings.tworows) then
676 local row2start = math.ceil(settings.shown / 2) + 1;
677 if (settings.reverse) then
678 row2start = 16 - row2start + 1;
679 end
680 button = getglobal(frame:GetName().."_"..row2start);
681 button:ClearAllPoints();
682 if (settings.vertical) then
683 if (settings.reverse) then
684 button:SetPoint("RIGHT", frame:GetName().."_16", "LEFT", -settings.hspacing, 0);
685 else
686 button:SetPoint("LEFT", frame:GetName().."_1", "RIGHT", settings.hspacing, 0);
687 end
688 else
689 if (settings.reverse) then
690 button:SetPoint("BOTTOM", frame:GetName().."_16", "TOP", 0, settings.vspacing);
691 else
692 button:SetPoint("TOP", frame:GetName().."_1", "BOTTOM", 0, -settings.vspacing);
693 end
694 end
695 end
696  
697 local stacksize = 12 * settings.size / 15;
698 for i=1,16 do
699 local button = getglobal(frame:GetName().."_"..i);
700 local stack = getglobal(button:GetName().."_Stack");
701 local scale = button:GetScale();
702 stack:SetFont("Interface\\AddOns\\DiscordUnitFrames\\CustomFonts\\DUF_Font1.ttf", stacksize, "outline='THICK'");
703 button:SetScale(scale + 1);
704 button:SetScale(scale);
705 end
706  
707 if (unit == "player") then
708 for i=1,16 do
709 local button = getglobal("DUF_PlayerFrame_Debuffs_"..i);
710 local duration = getglobal("DUF_PlayerFrame_Debuffs_"..i.."_Text");
711 duration:SetFont("Interface\\AddOns\\DiscordUnitFrames\\CustomFonts\\"..settings.durationfont, settings.durationheight);
712 duration:SetTextColor(settings.durationcolor.r, settings.durationcolor.g, settings.durationcolor.b, settings.durationalpha);
713 local scale = button:GetScale();
714 button:SetScale(scale + 1);
715 button:SetScale(scale);
716 duration:ClearAllPoints();
717 duration:SetPoint("TOP", button, "BOTTOM", settings.durationx, settings.durationy);
718 if (settings.showduration) then
719 duration:Show();
720 else
721 duration:Hide();
722 end
723 button.playerbuff = 1
724 end
725 end
726  
727 DUF_UnitFrame_UpdateDebuffs(unit);
728 end
729  
730 function DUF_Initialize_Element(unit, frame, settings, debug)
731 DUF_Initialize_BaseSettings(frame, settings, debug);
732 DUF_Set_ElementPosition(frame, DUF_FRAME_DATA[unit].frame, settings);
733 end
734  
735 function DUF_Initialize_EliteTexture()
736 local frame = DUF_TargetFrame_EliteTexture;
737 local settings = DUF_Settings[DUF_INDEX].target.EliteTexture;
738  
739 DUF_Initialize_Element("target", frame, settings);
740  
741 DUF_Set_EliteTexture();
742 end
743  
744 function DUF_Initialize_Frame(unit)
745 local unitFrame = getglobal(DUF_FRAME_DATA[unit].frame);
746 local settings = DUF_Settings[DUF_INDEX][DUF_FRAME_DATA[unit].index];
747  
748 DUF_Initialize_BaseSettings(unitFrame, settings);
749  
750 DUF_Initialize_FrameLoc(unit)
751  
752 unitFrame:SetScale(settings.scale);
753 unitFrame.scale = settings.scale;
754 unitFrame.basecolor = {};
755 unitFrame.basecolor.r = settings.bgcolor.r;
756 unitFrame.basecolor.g = settings.bgcolor.g;
757 unitFrame.basecolor.b = settings.bgcolor.b;
758  
759 if ((not UnitName(unit)) and (not UnitExists(unit)) and (not DUF_OPTIONS_VISIBLE)) then
760 unitFrame:Hide();
761 end
762 end
763  
764 function DUF_Initialize_FrameLoc(unit)
765 local unitFrame = getglobal(DUF_FRAME_DATA[unit].frame);
766 local settings = DUF_Settings[DUF_INDEX][DUF_FRAME_DATA[unit].index];
767  
768 unitFrame:ClearAllPoints();
769 if (settings.connect and unitFrame:GetID() > 1) then
770 if (DUF_FRAME_DATA[unit].index == "party" or DUF_FRAME_DATA[unit].index == "partypet") then
771 local connectframe = "DUF_PartyFrame"..(unitFrame:GetID() - 1);
772 if (DUF_FRAME_DATA[unit].index == "partypet") then
773 connectframe = "DUF_PartyPetFrame"..(unitFrame:GetID() - 1);
774 end
775 if (settings.connectmethod == 1) then
776 unitFrame:SetPoint("TOP", connectframe, "BOTTOM", 0, -settings.spacing);
777 elseif (settings.connectmethod == 2) then
778 unitFrame:SetPoint("BOTTOM", connectframe, "TOP", 0, settings.spacing);
779 elseif (settings.connectmethod == 3) then
780 unitFrame:SetPoint("LEFT", connectframe, "RIGHT", settings.spacing, 0);
781 elseif (settings.connectmethod == 4) then
782 unitFrame:SetPoint("RIGHT", connectframe, "LEFT", -settings.spacing, 0);
783 end
784 else
785 unitFrame:SetPoint("TOPLEFT", "UIParent", "TOPLEFT", settings.xos[unitFrame:GetID()], settings.yos[unitFrame:GetID()]);
786 end
787 else
788 unitFrame:SetPoint("TOPLEFT", "UIParent", "TOPLEFT", settings.xos[unitFrame:GetID()], settings.yos[unitFrame:GetID()]);
789 end
790 end
791  
792 function DUF_Initialize_HappinessIcon()
793 local settings = DUF_Settings[DUF_INDEX].pet.HappinessIcon;
794  
795 DUF_Initialize_Element("pet", DUF_PetFrame_HappinessIcon, settings);
796 DUF_Initialize_IconBackground(DUF_PetFrame_HappinessIcon, settings);
797  
798 DUF_PetFrame_HappinessIcon_Texture:SetTexture("Interface\\PetPaperDollFrame\\UI-PetHappiness");
799  
800 DUF_HappinessIcon_Update();
801 end
802  
803 function DUF_Initialize_IconBackground(frame, settings)
804 frame = getglobal(frame:GetName().."_Circle");
805 if (settings.circle) then
806 frame:Show();
807 else
808 frame:Hide();
809 return;
810 end
811 local background = getglobal(frame:GetName().."_Background");
812 local border = getglobal(frame:GetName().."_Border");
813 background:SetVertexColor(settings.bgcolor.r, settings.bgcolor.g, settings.bgcolor.b, settings.bgalpha);
814 border:SetVertexColor(settings.bordercolor.r, settings.bordercolor.g, settings.bordercolor.b, settings.borderalpha);
815 end
816  
817 function DUF_Initialize_LeaderIcon(unit)
818 local frame = getglobal(DUF_FRAME_DATA[unit].frame.."_LeaderIcon");
819 local settings = DUF_Settings[DUF_INDEX][DUF_FRAME_DATA[unit].index].LeaderIcon;
820  
821 DUF_Initialize_Element(unit, frame, settings);
822 DUF_Initialize_IconBackground(frame, settings);
823 getglobal(DUF_FRAME_DATA[unit].frame.."_LeaderIcon_Texture"):SetTexture("Interface\\GroupFrame\\UI-Group-LeaderIcon");
824 DUF_LeaderIcon_Update(unit);
825 end
826  
827 function DUF_Initialize_LootIcon(unit)
828 local frame = getglobal(DUF_FRAME_DATA[unit].frame.."_LootIcon");
829 local settings = DUF_Settings[DUF_INDEX][DUF_FRAME_DATA[unit].index].LootIcon;
830  
831 DUF_Initialize_Element(unit, frame, settings);
832 DUF_Initialize_IconBackground(frame, settings);
833 getglobal(DUF_FRAME_DATA[unit].frame.."_LootIcon_Texture"):SetTexture("Interface\\GroupFrame\\UI-Group-MasterLooter");
834 DUF_LootIcon_Update(unit);
835 end
836  
837 function DUF_Initialize_Portrait(unit)
838 local frame = getglobal(DUF_FRAME_DATA[unit].frame.."_Portrait");
839 local settings = DUF_Settings[DUF_INDEX][DUF_FRAME_DATA[unit].index].Portrait;
840  
841 DUF_Initialize_Element(unit, frame, settings);
842  
843 if (settings.showborder) then
844 getglobal(frame:GetName().."_Border"):Show();
845 else
846 getglobal(frame:GetName().."_Border"):Hide();
847 end
848 getglobal(frame:GetName().."_Border"):SetVertexColor(settings.bordcolor.r, settings.bordcolor.g, settings.bordcolor.b);
849 DUF_Set_Portrait(unit);
850 end
851  
852 function DUF_Initialize_PVPIcon(unit)
853 local frame = getglobal(DUF_FRAME_DATA[unit].frame.."_PVPIcon");
854 local settings = DUF_Settings[DUF_INDEX][DUF_FRAME_DATA[unit].index].PVPIcon;
855  
856 DUF_Initialize_Element(unit, frame, settings);
857 DUF_Initialize_IconBackground(frame, settings);
858  
859 getglobal(DUF_FRAME_DATA[unit].frame.."_PVPIcon_Texture"):SetTexCoord(0, .6875, 0, .625);
860 DUF_PVPIcon_Update(unit);
861 end
862  
863 function DUF_Initialize_RaceIcon(unit)
864 local frame = getglobal(DUF_FRAME_DATA[unit].frame.."_RaceIcon");
865 local texture = getglobal(DUF_FRAME_DATA[unit].frame.."_RaceIcon_Texture");
866 local settings = DUF_Settings[DUF_INDEX][DUF_FRAME_DATA[unit].index].RaceIcon;
867  
868 DUF_Initialize_Element(unit, frame, settings);
869  
870 texture.targetIcon = nil
871 if (settings.targetIcon) then
872 if (frame:GetParent().targetIcon == 1) then
873 frame:GetParent().targetIcon = 3
874 else
875 frame:GetParent().targetIcon = 2
876 end
877 texture.targetIcon = 1
878 frame:Hide()
879 frame:GetParent().targetIndex = nil
880 texture:SetTexture("Interface\\TargetingFrame\\UI-RaidTargetingIcons")
881 end
882  
883 DUF_Set_RaceIcon(unit);
884 end
885  
886 function DUF_Initialize_RankIcon(unit)
887 local frame = getglobal(DUF_FRAME_DATA[unit].frame.."_RankIcon");
888 local texture = getglobal(DUF_FRAME_DATA[unit].frame.."_RankIcon_Texture");
889 local settings = DUF_Settings[DUF_INDEX][DUF_FRAME_DATA[unit].index].RankIcon;
890  
891 DUF_Initialize_Element(unit, frame, settings);
892  
893 texture.targetIcon = nil
894 if (settings.targetIcon) then
895 if (frame:GetParent().targetIcon == 2) then
896 frame:GetParent().targetIcon = 3
897 else
898 frame:GetParent().targetIcon = 1
899 end
900 texture.targetIcon = 1
901 frame:Hide()
902 frame:GetParent().targetIndex = nil
903 texture:SetTexture("Interface\\TargetingFrame\\UI-RaidTargetingIcons")
904 end
905  
906  
907 DUF_Set_RankIcon(unit);
908 end
909  
910 function DUF_Initialize_StatusBar(unit, bar, debug)
911 local settings = DUF_Settings[DUF_INDEX][DUF_FRAME_DATA[unit].index].StatusBar[bar];
912 local frame = getglobal(DUF_FRAME_DATA[unit].frame..DUF_STATUSBARS[bar]);
913 if ((not settings) or (not frame)) then return; end
914 local statusbar = getglobal(DUF_FRAME_DATA[unit].frame..DUF_STATUSBARS[bar].."_Bar");
915 local statusbarbg = getglobal(DUF_FRAME_DATA[unit].frame..DUF_STATUSBARS[bar].."_Bar2");
916  
917 if (not settings.resizemax) then
918 frame.dynamicsize = nil;
919 end
920  
921 DUF_Initialize_Element(unit, frame, settings, debug);
922  
923 if (settings.customtexture and settings.customtexture ~= "") then
924 statusbar:SetTexture("Interface\\AddOns\\DiscordUnitFrames\\CustomTextures\\"..settings.customtexture);
925 else
926 statusbar:SetTexture("Interface\\TargetingFrame\\UI-StatusBar");
927 end
928 if (settings.customtexture2 and settings.customtexture2 ~= "") then
929 statusbarbg:SetTexture("Interface\\AddOns\\DiscordUnitFrames\\CustomTextures\\"..settings.customtexture2);
930 else
931 statusbarbg:SetTexture("Interface\\AddOns\\DiscordLibrary\\PlainBackdrop");
932 end
933  
934 statusbar:SetWidth(settings.width);
935 statusbarbg:SetWidth(settings.width);
936 statusbar:SetHeight(settings.height);
937 statusbarbg:SetHeight(settings.height);
938  
939 statusbar:ClearAllPoints();
940 statusbarbg:ClearAllPoints();
941 statusbar.direction = settings.direction;
942 statusbarbg.direction = settings.direction;
943 if (settings.direction == 1) then
944 statusbar:SetPoint("LEFT", frame, "LEFT", 0, 0);
945 statusbarbg:SetPoint("LEFT", frame, "LEFT", 0, 0);
946 statusbar.length = settings.width;
947 statusbarbg.length = settings.width;
948 elseif (settings.direction == 2) then
949 statusbar:SetPoint("RIGHT", frame, "RIGHT", 0, 0);
950 statusbarbg:SetPoint("RIGHT", frame, "RIGHT", 0, 0);
951 statusbar.length = settings.width;
952 statusbarbg.length = settings.width;
953 elseif (settings.direction == 3) then
954 statusbar:SetPoint("BOTTOM", frame, "BOTTOM", 0, 0);
955 statusbarbg:SetPoint("BOTTOM", frame, "BOTTOM", 0, 0);
956 statusbar.length = settings.height;
957 statusbarbg.length = settings.height;
958 else
959 statusbar:SetPoint("TOP", frame, "TOP", 0, 0);
960 statusbarbg:SetPoint("TOP", frame, "TOP", 0, 0);
961 statusbar.length = settings.height;
962 statusbarbg.length = settings.height;
963 end
964  
965 if (bar ~= 2 and bar ~= 5) then
966 statusbar:SetVertexColor(settings.color.r, settings.color.g, settings.color.b);
967 end
968 statusbarbg:SetVertexColor(settings.color2.r, settings.color2.g, settings.color2.b);
969  
970 this = getglobal(DUF_FRAME_DATA[unit].frame);
971 if (bar == 1) then
972 this.lasthealth = UnitHealth(unit);
973 this.lasthealthalpha = 0;
974 DUF_HealthBar_Update();
975 elseif (bar == 2) then
976 this.lastmana = UnitMana(unit);
977 this.lastmanaalpha = 0;
978 DUF_ManaBar_Update();
979 DUF_ManaBar_UpdateType();
980 elseif (bar == 3) then
981 if (unit == "player") then
982 DUF_XPBar_Update();
983 else
984 DUF_PetXPBar_Update();
985 end
986 elseif (bar == 4) then
987 DUF_TargetHealthBar_Update();
988 elseif (bar == 5) then
989 DUF_TargetManaBar_Update();
990 DUF_TargetManaBar_UpdateType();
991 elseif (bar == 6) then
992 DUF_HonorBar_Update();
993 end
994 end
995  
996 function DUF_Initialize_StatusIcon(unit)
997 local frame = getglobal(DUF_FRAME_DATA[unit].frame.."_StatusIcon");
998 local settings = DUF_Settings[DUF_INDEX][DUF_FRAME_DATA[unit].index].StatusIcon;
999  
1000 DUF_Initialize_Element(unit, frame, settings);
1001 DUF_Initialize_IconBackground(frame, settings);
1002  
1003 DUF_StatusIcon_Update(unit);
1004 end
1005  
1006 function DUF_Initialize_TextBox(unit, box)
1007 local frame = getglobal(DUF_FRAME_DATA[unit].frame.."_TextBox_"..box);
1008 local settings = DUF_Settings[DUF_INDEX][DUF_FRAME_DATA[unit].index].TextBox[box];
1009 local textbox = getglobal(DUF_FRAME_DATA[unit].frame.."_TextBox_"..box.."_Text");
1010  
1011 DUF_Initialize_Element(unit, frame, settings);
1012  
1013 local fontFlags = "";
1014  
1015 if (settings.outline) then
1016 fontFlags = "outline='"..settings.outline.."'";
1017 end
1018  
1019 textbox:SetFont("Interface\\AddOns\\DiscordUnitFrames\\CustomFonts\\"..settings.font, settings.textheight, fontFlags);
1020 frame:SetScale(2);
1021 frame:SetScale(1);
1022 textbox:SetJustifyH(settings.justify);
1023 textbox:SetJustifyV(settings.justifyV);
1024 textbox:SetTextColor(settings.textcolor.r, settings.textcolor.g, settings.textcolor.b);
1025  
1026 for variable, value in DUF_VARIABLE_FUNCTIONS do
1027 for _,event in value.events do
1028 frame:UnregisterEvent(event);
1029 end
1030 end
1031 if (settings.text and settings.text ~= "") then
1032 frame.variables = {};
1033 for variable, value in DUF_VARIABLE_FUNCTIONS do
1034 if (string.find(settings.text, variable)) then
1035 frame.variables[variable] = true;
1036 for _,event in value.events do
1037 frame:RegisterEvent(event);
1038 end
1039 end
1040 if (DUF_UNIT_CHANGED_EVENTS[frame:GetParent().unit]) then
1041 frame:RegisterEvent(DUF_UNIT_CHANGED_EVENTS[frame:GetParent().unit])
1042 end
1043 end
1044 this = frame;
1045 DUF_TextBox_Update();
1046 else
1047 textbox:SetText("");
1048 frame:Hide();
1049 end
1050  
1051 frame.checkname = nil;
1052 frame.checkhealth = nil;
1053 frame.checkmana = nil;
1054 frame.checkhealthmax = nil;
1055 frame.checkmanamax = nil;
1056 frame.checklevel = nil;
1057 frame.checktype = nil;
1058 frame.checkoffline = nil;
1059 frame.checkreaction = nil;
1060 frame.checkcombat = nil;
1061 frame.checkpetxp = nil;
1062 frame.checkvisibility = nil;
1063 frame.checkcolor = nil;
1064 if (string.find(settings.text, '$t')) then
1065 frame.checkname= true;
1066 if ((not UnitName(unit.."target")) and (not DUF_OPTIONS_VISIBLE)) then
1067 frame:Hide();
1068 end
1069 end
1070 if (string.find(settings.text, '$th')) then
1071 frame.checkhealth = true;
1072 end
1073 if (string.find(settings.text, '$tm')) then
1074 frame.checkmana = true;
1075 end
1076 if (string.find(settings.text, '$tx')) then
1077 frame.checkhealthmax = true;
1078 end
1079 if (string.find(settings.text, '$ta')) then
1080 frame.checkhealth = true;
1081 frame.checkhealthmax = true;
1082 end
1083 if (string.find(settings.text, '$tb')) then
1084 frame.checkmana = true;
1085 frame.checkmanamax = true;
1086 end
1087 if (string.find(settings.text, '$ty')) then
1088 frame.checkmanamax = true;
1089 end
1090 if (string.find(settings.text, '$tl')) then
1091 frame.checklevel = true;
1092 end
1093 if (string.find(settings.text, '$tt')) then
1094 frame.checktype = true;
1095 end
1096 if (string.find(settings.text, '$re')) then
1097 frame.checkreaction = true;
1098 end
1099 if (string.find(settings.text, '$of')) then
1100 frame.checkoffline = true;
1101 end
1102 if (string.find(settings.text, '$ic')) then
1103 frame.checkcombat = true;
1104 end
1105 if (string.find(settings.text, '$iv')) then
1106 frame.checkvisibility = true;
1107 end
1108 if (string.find(settings.text, '$px') or string.find(settings.text, '$py') or string.find(settings.text, '$pc') or string.find(settings.text, '$pp') or string.find(settings.text, '$pg')) then
1109 frame.checkpetxp = true;
1110 end
1111 if (string.find(settings.text, '$cr') or string.find(settings.text, '$cw') or string.find(settings.text, '$cm') or string.find(settings.text, '$ch') or string.find(settings.text, '$cq')) then
1112 frame.checkcolor = true;
1113 end
1114 end
1115  
1116 function DUF_Initialize_VariablesFrame()
1117 DUF_TextVariablesFrame_Title:SetText(DUF_TEXT.VariablesTitle);
1118 local column1, column2 = "", "";
1119 local count = table.getn(DUF_TEXTVARIABLES);
1120 local halfway = math.ceil(count / 2);
1121 for i=1, halfway do
1122 column1 = column1..DUF_TEXTVARIABLES[i].."\n";
1123 end
1124 halfway = halfway + 1
1125 for i = halfway, count do
1126 column2 = column2..DUF_TEXTVARIABLES[i].."\n";
1127 end
1128 DUF_TextVariablesFrame_Column1:SetText(column1);
1129 DUF_TextVariablesFrame_Column2:SetText(column2);
1130 DUF_TextVariablesFrame:SetWidth(DUF_TextVariablesFrame_Column1:GetWidth() + DUF_TextVariablesFrame_Column1:GetWidth() + 20);
1131 DUF_TextVariablesFrame:SetHeight(DUF_TextVariablesFrame_Column1:GetHeight() + 85);
1132 end