vanilla-wow-addons – Blame information for rev 1

Subversion Repositories:
Rev:
Rev Author Line No. Line
1 office 1 function DUF_ComboPoints_Update()
2 local comboPoints = GetComboPoints();
3 if (DUF_OPTIONS_VISIBLE) then
4 if (UnitClass("player") == DUF_TEXT.Rogue or UnitClass("player") == DUF_TEXT.Druid) then
5 comboPoints = 5;
6 end
7 end
8 if (comboPoints < 1 or DUF_Settings[DUF_INDEX].target.ComboPoints.hide) then
9 DUF_TargetFrame_ComboPoints:Hide();
10 return;
11 else
12 DUF_TargetFrame_ComboPoints:Show();
13 end
14 local comboPoint;
15 for i=1,5 do
16 comboPoint = getglobal("DUF_TargetFrame_ComboPoints_"..i);
17 if (i <= comboPoints) then
18 comboPoint:Show();
19 else
20 comboPoint:Hide();
21 end
22 end
23 if (comboPoints > 0) then
24 local height, width;
25 local size = DUF_Settings[DUF_INDEX].target.ComboPoints.size;
26 local spacing = DUF_Settings[DUF_INDEX].target.ComboPoints.spacing;
27 local padding = DUF_Settings[DUF_INDEX].target.ComboPoints.bgpadding * 2;
28 if (DUF_Settings[DUF_INDEX].target.ComboPoints.vertical) then
29 height = size * comboPoints + spacing * (comboPoints - 1);
30 width = size;
31 else
32 height = size;
33 width = size * comboPoints + spacing * (comboPoints - 1);
34 end
35 DUF_TargetFrame_ComboPoints:SetHeight(height);
36 DUF_TargetFrame_ComboPoints:SetWidth(width);
37 DUF_TargetFrame_ComboPoints_Background:SetHeight(height + padding);
38 DUF_TargetFrame_ComboPoints_Background:SetWidth(width + padding);
39 end
40 end
41  
42 function DUF_Load_Options()
43 if (DUF_Options) then return; end
44 UIParentLoadAddOn("DiscordUnitFramesOptions");
45 DL_Set_OptionsTitle("DUF_Options", "DiscordUnitFrames\\Icons\\title", DUF_VERSION);
46 DUF_Initialize_VariablesFrame();
47 DUF_FRAME_INDEX = "player";
48 DUF_SelectFrame_OnClick("player", DUF_Options_Self);
49 DUF_Options_SelectFrameOptions();
50 DUF_OPTIONS_SELECTED = "DUF_ElementOptions_BaseSelect";
51 DUF_ElementOptions_BaseSelect:SetTextColor(1, 0, 0);
52 DUF_ElementOptions_BaseSelect:SetBackdropColor(1, 1, 0);
53 DUF_ElementOptions_BaseSelect:SetBackdropBorderColor(1, 1, 1);
54 DUF_Update_SavedSettings();
55 DUF_Options_SetScale();
56 DUF_Init_ContextColors();
57 DUF_Init_MiscOptions();
58 end
59  
60 function DUF_Main_OnEvent(event)
61 if (not DUF_INITIALIZED) then return; end
62 if (event == "PARTY_MEMBERS_CHANGED") then
63 DUF_Main_UpdatePartyMembers();
64 elseif (event == "PLAYER_COMBO_POINTS") then
65 DUF_ComboPoints_Update();
66 elseif (event == "PLAYER_PVP_KILLS_CHANGED" or event == "PLAYER_PVP_RANK_CHANGED") then
67 DUF_HonorBar_Update();
68 elseif (event == "PLAYER_TARGET_CHANGED") then
69 if (UnitName("target")) then
70 if (not DUF_Settings[DUF_INDEX].target.hide) then
71 DUF_TargetFrame:Show();
72 DUF_Set_EliteTexture();
73 end
74 if (DL_UnitName("targettarget")) then
75 if (not DUF_Settings[DUF_INDEX].targettarget.hide) then
76 if (DUF_Settings[DUF_INDEX].hidetargettarget) then
77 if (GetNumRaidMembers() + GetNumPartyMembers() > 0) then
78 DUF_TargetOfTargetFrame:Show();
79 end
80 else
81 DUF_TargetOfTargetFrame:Show();
82 end
83 end
84 end
85 else
86 DUF_TargetFrame:Hide();
87 DUF_TargetOfTargetFrame:Hide();
88 end
89 DUF_ComboPoints_Update();
90 if (not DUF_Settings[DUF_INDEX].target.showDefault) then
91 if (MI2_MobHealthFrame) then
92 MI2_MobHealthFrame:Hide();
93 end
94 if (MobHealthFrame) then
95 MobHealthFrame:Hide();
96 end
97 end
98 elseif (event == "PLAYER_XP_UPDATE" or event == "PLAYER_UPDATE_RESTING") then
99 if (not DUF_Settings[DUF_INDEX].player.StatusBar[3].trackRep) then
100 DUF_XPBar_Update();
101 end
102 elseif (event == "UPDATE_FACTION") then
103 if (DUF_Settings[DUF_INDEX].player.StatusBar[3].trackRep) then
104 DUF_XPBar_Update();
105 end
106 if (DUF_Settings[DUF_INDEX].player.StatusBar[6].trackRep) then
107 DUF_HonorBar_Update();
108 end
109 elseif (event == "PLAYER_LEVEL_UP") then
110 DUF_XPBar_Update();
111 elseif (event == "RAID_ROSTER_UPDATE") then
112 DUF_Main_UpdatePartyMembers();
113 elseif (event == "UNIT_HAPPINESS") then
114 DUF_HappinessIcon_Update();
115 elseif (event == "UNIT_PET") then
116 if (UnitExists("pet") and (not DUF_Settings[DUF_INDEX].pet.hide)) then
117 DUF_PetFrame:Show();
118 DUF_HappinessIcon_Update();
119 else
120 DUF_PetFrame:Hide();
121 end
122 for i=1,4 do
123 getglobal("DUF_PartyPetFrame"..i):Hide();
124 end
125 if (DUF_Settings[DUF_INDEX].hidepartyinraid) then
126 if (GetNumRaidMembers() > 0) then
127 return;
128 end
129 end
130 for i=1,GetNumPartyMembers() do
131 if (UnitName("partypet"..i) and UnitExists("partypet"..i) and (not DUF_Settings[DUF_INDEX].partypet.hide)) then
132 getglobal("DUF_PartyPetFrame"..i):Show();
133 end
134 end
135 elseif (event == "UNIT_PET_EXPERIENCE") then
136 DUF_PetXPBar_Update();
137 end
138 end
139  
140 function DUF_Main_OnLoad()
141 this:RegisterEvent("PARTY_MEMBERS_CHANGED");
142 this:RegisterEvent("PLAYER_COMBO_POINTS");
143 this:RegisterEvent("PLAYER_FLAGS_CHANGED");
144 this:RegisterEvent("PLAYER_LEVEL_UP");
145 this:RegisterEvent("PLAYER_PVP_KILLS_CHANGED");
146 this:RegisterEvent("PLAYER_PVP_RANK_CHANGED");
147 this:RegisterEvent("PLAYER_TARGET_CHANGED");
148 this:RegisterEvent("PLAYER_UPDATE_RESTING");
149 this:RegisterEvent("PLAYER_XP_UPDATE");
150 this:RegisterEvent("RAID_ROSTER_UPDATE");
151 this:RegisterEvent("UNIT_HAPPINESS");
152 this:RegisterEvent("UNIT_PET");
153 this:RegisterEvent("UNIT_PET_EXPERIENCE");
154 this:RegisterEvent("UPDATE_EXHAUSTION");
155 this:RegisterEvent("UPDATE_FACTION");
156  
157 DiscordLib_RegisterInitFunc(DUF_Initialize);
158  
159 SlashCmdList["DUF"] = DUF_Slash_Handler;
160 SLASH_DUF1 = "/duf";
161 SLASH_DUF2 = "/discordunitframes";
162 end
163  
164 function DUF_Main_OnUpdate(elapsed)
165 if (not DUF_INITIALIZED) then return; end
166 if (DL_UnitName("targettarget") and (not DUF_TargetOfTargetFrame:IsVisible())) then
167 if (not DUF_Settings[DUF_INDEX].targettarget.hide) then
168 if (DUF_Settings[DUF_INDEX].hidetargettarget) then
169 if (GetNumRaidMembers() + GetNumPartyMembers() > 0) then
170 DUF_TargetOfTargetFrame:Show();
171 end
172 else
173 DUF_TargetOfTargetFrame:Show();
174 end
175 end
176 elseif ((not DL_UnitName("targettarget")) and (not DUF_OPTIONS_VISIBLE)) then
177 this.targettarget = nil;
178 DUF_TargetOfTargetFrame:Hide();
179 elseif (this.targettarget ~= DL_UnitName("targettarget")) then
180 this.targettarget = DL_UnitName("targettarget");
181 if (not DUF_Settings[DUF_INDEX].targettarget.hide) then
182 DUF_TargetOfTargetFrame:Hide();
183 if (DUF_Settings[DUF_INDEX].hidetargettarget) then
184 if (GetNumRaidMembers() + GetNumPartyMembers() > 0) then
185 DUF_TargetOfTargetFrame:Show();
186 end
187 else
188 DUF_TargetOfTargetFrame:Show();
189 end
190 end
191 end
192 local min,max = GetPetExperience();
193 if (min ~= this.minpetxp or max ~= this.maxpetxp) then
194 this.minpetxp = min;
195 this.maxpetxp = max;
196 DUF_PetXPBar_Update();
197 end
198 end
199  
200 function DUF_Main_UpdatePartyMembers()
201 for i=1,4 do
202 getglobal("DUF_PartyFrame"..i):Hide();
203 getglobal("DUF_PartyPetFrame"..i):Hide();
204 end
205 if (not DUF_Settings[DUF_INDEX].party.hide) then
206 if (DUF_Settings[DUF_INDEX].hidepartyinraid) then
207 if (GetNumRaidMembers() > 0) then
208 return;
209 end
210 end
211 for i=1, GetNumPartyMembers() do
212 getglobal("DUF_PartyFrame"..i):Show();
213 if (DL_UnitName("partypet"..i) and UnitExists("partypet"..i) and (not DUF_Settings[DUF_INDEX].partypet.hide)) then
214 getglobal("DUF_PartyPetFrame"..i):Show();
215 end
216 end
217 end
218 end
219  
220 function DUF_Options_LoadDefaultSettings(toggle)
221 if (not DUF_DEFAULT_SETTINGS) then
222 DL_Feedback(DUF_TEXT.NoDefaultSettings);
223 return;
224 end
225 DUF_Settings[DUF_INDEX] = {nil};
226 DL_Copy_Table(DUF_DEFAULT_SETTINGS, DUF_Settings[DUF_INDEX]);
227 DUF_Settings[DUF_PLAYER_INDEX] = DUF_INDEX;
228 if (not toggle) then
229 DUF_Initialize_NewSettings();
230 DUF_Initialize_AllFrames();
231 DL_Feedback(DUF_TEXT.DefaultSettingsLoaded);
232 end
233 end
234  
235 function DUF_Options_LoadSettings(index, safe)
236 if (not index) then
237 index = DUF_LOADINDEX;
238 end
239 if (index == "" or (not index)) then
240 return;
241 end
242 if (not DUF_Settings[index]) then
243 DL_Feedback(DUF_TEXT.NoSettingsFound);
244 return;
245 end
246 if (index == DUF_INDEX) then return; end
247 DUF_Settings[DUF_PLAYER_INDEX] = index;
248 DUF_INDEX = index;
249 DUF_Initialize_NewSettings();
250 if (safe) then
251 ReloadUI();
252 else
253 DUF_Initialize_AllFrames();
254 DL_Feedback(DUF_TEXT.SettingsLoaded);
255 end
256 if (DUF_Options) then
257 DUF_MiscOptions_CurrentProfile:SetText(DUF_TEXT.CurrentProfile..": "..DUF_INDEX);
258 DUF_MiscOptions_LoadSettings_Setting:SetText("");
259 end
260 end
261  
262 function DUF_Options_SetUpdateSpeed()
263 DUF_Settings[DUF_INDEX].updatespeed = 1 / DUF_Settings[DUF_INDEX].updatespeedbase;
264 end
265  
266 function DUF_Slash_Handler(msg)
267 local command, param;
268 local index = string.find(msg, " ");
269 if( index) then
270 command = string.sub(msg, 1, (index - 1));
271 param = string.sub(msg, (index + 1) );
272 else
273 command = msg;
274 end
275  
276 if (not DUF_Options) then
277 DUF_Load_Options();
278 end
279 if (DUF_Options:IsVisible()) then
280 DUF_Options:Hide();
281 else
282 DUF_Options:Show();
283 end
284 end
285  
286 function DUF_Init_DropDown(dropDown, unitFrame, unit)
287 dropDown:SetParent(unitFrame);
288 dropDown.unit = unit;
289 dropDown.point = "TOPLEFT";
290 dropDown.relativePoint = "TOPLEFT";
291 -- local right = unitFrame:GetRight() + dropDown:GetRight();
292 -- if (right > UIParent:GetRight()) then
293 -- DUF_FRAME_DATA[unit].upx = -dropDown:GetWidth();
294 -- else
295 DUF_FRAME_DATA[unit].upx = unitFrame:GetWidth();
296 -- end
297 end
298  
299 function DUF_Uninit_DropDown(dropDown, unitFrame)
300 dropDown:SetParent(unitFrame);
301 dropDown.point = nil;
302 dropDown.relativePoint = nil;
303 end
304  
305 function DUF_Toggle_DefaultFrames()
306 if (not DUF_INITIALIZED) then return; end
307 if (not DUF_Settings[DUF_INDEX].player.showDefault) then
308 PlayerFrame:Hide();
309 DUF_Init_DropDown(PlayerFrameDropDown, DUF_PlayerFrame, "player");
310 else
311 PlayerFrame:Show();
312 DUF_Uninit_DropDown(PlayerFrameDropDown, PlayerFrame);
313 end
314 if (DUF_Settings[DUF_INDEX].pet.showDefault) then
315 if (DL_UnitName("pet")) then
316 PetFrame:Show();
317 end
318 DUF_Uninit_DropDown(PetFrameDropDown, PetFrame);
319 else
320 PetFrame:Hide();
321 DUF_Init_DropDown(PetFrameDropDown, DUF_PetFrame, "pet");
322 end
323 if (not DUF_Settings[DUF_INDEX].party.showDefault) then
324 local partyframe;
325 for i=1,4 do
326 partyframe = getglobal("PartyMemberFrame"..i);
327 partyframe:Hide();
328 DUF_Init_DropDown(getglobal("PartyMemberFrame"..i.."DropDown"), getglobal("DUF_PartyFrame"..i), "party"..i);
329 end
330 else
331 for i = 1, GetNumPartyMembers() do
332 getglobal("PartyMemberFrame"..i):Show();
333 end
334 for i=1,4 do
335 DUF_Uninit_DropDown(getglobal("PartyMemberFrame"..i.."DropDown"), "PartyMemberFrame"..i);
336 end
337 end
338 if (not DUF_Settings[DUF_INDEX].partypet.showDefault) then
339 local partyframe;
340 for i=1,4 do
341 partyframe = getglobal("PartyMemberFrame"..i.."PetFrame");
342 partyframe:Hide();
343 end
344 else
345 for i = 1, GetNumPartyMembers() do
346 if (DL_UnitName("partypet"..i)) then
347 getglobal("PartyMemberFrame"..i.."PetFrame"):Show();
348 end
349 end
350 end
351 if (not DUF_Settings[DUF_INDEX].target.showDefault) then
352 TargetFrame:Hide();
353 DUF_Init_DropDown(TargetFrameDropDown, DUF_TargetFrame, "target");
354 else
355 if (DL_UnitName("target")) then
356 TargetFrame:Show();
357 end
358 DUF_Uninit_DropDown(TargetFrameDropDown, TargetFrame);
359 end
360 end
361  
362 function DUF_Toggle_ElementsLock()
363 if (DUF_ELEMENTS_UNLOCKED) then
364 DUF_ELEMENTS_UNLOCKED = nil;
365 if (DUF_Options) then
366 DUF_Options_ToggleElements:SetText(DUF_TEXT.UnlockElements);
367 end
368 if (not DUF_FRAMES_UNLOCKED) then
369 if (GB_PlayerBar) then
370 DUF_HIDING_CLICKBOXES = nil;
371 if (not GB_Settings[GB_INDEX].hideClickboxes) then
372 GB_PlayerClickbox:Show();
373 if (DL_UnitName("pet")) then
374 GB_Pet0Clickbox:Show();
375 end
376 for i=1, GetNumPartyMembers() do
377 getglobal("GB_Party"..i.."Clickbox"):Show();
378 if (DL_UnitName("partypet"..i)) then
379 getglobal("GB_Pet"..i.."Clickbox"):Show();
380 end
381 end
382 if (DL_UnitName("target")) then
383 GB_TargetClickbox:Show();
384 end
385 end
386 end
387 end
388 else
389 DUF_ELEMENTS_UNLOCKED = 1;
390 if (DUF_Options) then
391 DUF_Options_ToggleElements:SetText(DUF_TEXT.LockElements);
392 end
393 if (GB_PlayerBar) then
394 DUF_HIDING_CLICKBOXES = true;
395 for _, frame in GB_CLICKBOXES do
396 getglobal(frame):Hide();
397 end
398 end
399 end
400 end
401  
402 function DUF_Toggle_FramesLock()
403 if (DUF_FRAMES_UNLOCKED) then
404 DUF_FRAMES_UNLOCKED = nil;
405 if (DUF_Options) then
406 DUF_Options_ToggleFrames:SetText(DUF_TEXT.UnlockFrames);
407 end
408 if (not DUF_ELEMENTS_UNLOCKED) then
409 if (GB_PlayerBar) then
410 DUF_HIDING_CLICKBOXES = nil;
411 if (not GB_Settings[GB_INDEX].hideClickboxes) then
412 GB_PlayerClickbox:Show();
413 if (DL_UnitName("pet")) then
414 GB_Pet0Clickbox:Show();
415 end
416 for i=1, GetNumPartyMembers() do
417 getglobal("GB_Party"..i.."Clickbox"):Show();
418 if (DL_UnitName("partypet"..i)) then
419 getglobal("GB_Pet"..i.."Clickbox"):Show();
420 end
421 end
422 if (DL_UnitName("target")) then
423 GB_TargetClickbox:Show();
424 end
425 end
426 end
427 end
428 else
429 DUF_FRAMES_UNLOCKED = 1;
430 if (DUF_Options) then
431 DUF_Options_ToggleFrames:SetText(DUF_TEXT.LockFrames);
432 end
433 if (GB_PlayerBar) then
434 DUF_HIDING_CLICKBOXES = true;
435 for _, frame in GB_CLICKBOXES do
436 getglobal(frame):Hide();
437 end
438 end
439 end
440 end