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