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