vanilla-wow-addons – Blame information for rev 1
?pathlinks?
Rev | Author | Line No. | Line |
---|---|---|---|
1 | office | 1 | -- |
2 | -- Clean Player Frame |
||
3 | -- |
||
4 | -- by Bastian Pflieger <wb@illogical.de> |
||
5 | -- |
||
6 | -- Last update: September 14, 2006 |
||
7 | -- |
||
8 | -- supports "myAddOns": http://www.curse-gaming.com/mod.php?addid=358 |
||
9 | -- |
||
10 | |||
11 | -- CleanPlayerFrameCombo Modes: |
||
12 | -- 1 - Disabled |
||
13 | -- 2 - Hide text |
||
14 | -- 3 - Show only current value |
||
15 | |||
16 | -- CleanPlayerPartyHealth Modes: |
||
17 | -- 1 - Disabled |
||
18 | -- 2 - Show numbersm |
||
19 | -- 3 - Show colorized numbers |
||
20 | -- 4 - Show colorized numbers and heal assist messages |
||
21 | |||
22 | local TextStatusBar_UpdateTextString_Org; |
||
23 | |||
24 | local FONTS = { |
||
25 | { font = STANDARD_TEXT_FONT, height = 10, flags = "" }, |
||
26 | { font = STANDARD_TEXT_FONT, height = 10, flags = "OUTLINE" } |
||
27 | }; |
||
28 | |||
29 | -- v = current value |
||
30 | -- p = percent |
||
31 | local TARGETFRAME_FORMAT = { |
||
32 | "", |
||
33 | "v", |
||
34 | "p%", |
||
35 | "v / p%" |
||
36 | } |
||
37 | |||
38 | local LowHealthWarnings = { |
||
39 | ["player"] = false, |
||
40 | ["party1"] = false, |
||
41 | ["party2"] = false, |
||
42 | ["party3"] = false, |
||
43 | ["party4"] = false, |
||
44 | ["target"] = false |
||
45 | }; |
||
46 | |||
47 | local UNIT_MODELS = { |
||
48 | ["player"] = "CleanPlayerFrame_PlayerModel", |
||
49 | ["party1"] = "CleanPlayerFrame_Party1Model", |
||
50 | ["party2"] = "CleanPlayerFrame_Party2Model", |
||
51 | ["party3"] = "CleanPlayerFrame_Party3Model", |
||
52 | ["party4"] = "CleanPlayerFrame_Party4Model", |
||
53 | ["target"] = "CleanPlayerFrame_TargetModel" |
||
54 | } |
||
55 | |||
56 | local UNIT_PORTRAITS = { |
||
57 | ["player"] = "PlayerPortrait", |
||
58 | ["target"] = "TargetPortrait", |
||
59 | ["party1"] = "PartyMemberFrame1Portrait", |
||
60 | ["party2"] = "PartyMemberFrame2Portrait", |
||
61 | ["party3"] = "PartyMemberFrame3Portrait", |
||
62 | ["party4"] = "PartyMemberFrame4Portrait" |
||
63 | } |
||
64 | |||
65 | |||
66 | function CleanPlayerFrame_OnLoad() |
||
67 | CleanPlayerFrame_Mode = 2; -- defaults to hide text |
||
68 | CleanPlayerFrame_ShowPartyHealth = 2; -- defaults to show party health |
||
69 | CleanPlayerFrame_ColorizeHealthBars = true; |
||
70 | CleanPlayerFrame_ShowPartyPercent = false; |
||
71 | CleanPlayerFrame_FontIndex = 2; |
||
72 | CleanPlayerFrame_TargetFrameIndex = 4; |
||
73 | CleanPlayerFrame_UseSmallFont = false; |
||
74 | CleanPlayerFrame_Show3D = true; |
||
75 | |||
76 | this:RegisterEvent("VARIABLES_LOADED"); |
||
77 | this:RegisterEvent("PARTY_MEMBERS_CHANGED"); |
||
78 | this:RegisterEvent("PLAYER_TARGET_CHANGED"); |
||
79 | this:RegisterEvent("UNIT_PORTRAIT_UPDATE"); |
||
80 | this:RegisterEvent("UNIT_HEALTH"); |
||
81 | |||
82 | TextStatusBar_UpdateTextString_Org = TextStatusBar_UpdateTextString; |
||
83 | TextStatusBar_UpdateTextString = CleanPlayerFrame_TextStatusBar_UpdateTextString; |
||
84 | |||
85 | SlashCmdList["CLEANPLAYERFRAME"] = function(msg) |
||
86 | ShowUIPanel(CleanPlayerFrameOptionsFrame); |
||
87 | end |
||
88 | SLASH_CLEANPLAYERFRAME1 = "/cleanplayerframe"; |
||
89 | |||
90 | HealthBar_OnValueChanged_Org = HealthBar_OnValueChanged; |
||
91 | HealthBar_OnValueChanged = CleanPlayerFrame_HealthBar_OnValueChanged; |
||
92 | |||
93 | TargetFrameManaBar:SetScript("OnValueChanged", CleanPlayerFrame_TextStatusBar_UpdateTextString); |
||
94 | end |
||
95 | |||
96 | |||
97 | function CleanPlayerFrame_Setup(mode, partyHealth, formatIndex, fontIndex, colorizeHealthBars, showPartyPercent, useSmallFont, show3D) |
||
98 | |||
99 | CleanPlayerFrame_Mode = mode; |
||
100 | if mode > 1 then |
||
101 | ManaBarColor[0].prefix = ""; |
||
102 | ManaBarColor[1].prefix = ""; |
||
103 | ManaBarColor[2].prefix = ""; |
||
104 | ManaBarColor[3].prefix = ""; |
||
105 | SetTextStatusBarTextPrefix(PlayerFrameHealthBar, ""); |
||
106 | else |
||
107 | ManaBarColor[0].prefix = MANA; |
||
108 | ManaBarColor[1].prefix = RAGE_POINTS; |
||
109 | ManaBarColor[2].prefix = FOCUS_POINTS; |
||
110 | ManaBarColor[3].prefix = ENERGY_POINTS; |
||
111 | SetTextStatusBarTextPrefix(PlayerFrameHealthBar, HEALTH); |
||
112 | end |
||
113 | SetTextStatusBarTextPrefix(PlayerFrameManaBar, ManaBarColor[UnitPowerType("player")].prefix); |
||
114 | TextStatusBar_UpdateTextString(PlayerFrameHealthBar); |
||
115 | TextStatusBar_UpdateTextString(PlayerFrameManaBar); |
||
116 | TextStatusBar_UpdateTextString(PetFrameHealthBar); |
||
117 | TextStatusBar_UpdateTextString(PetFrameManaBar); |
||
118 | |||
119 | CleanPlayerFrame_Show3D = show3D; |
||
120 | if show3D then |
||
121 | --PlayerPortrait:Hide(); |
||
122 | CleanPlayerFrame_PlayerModel:Show(); |
||
123 | CleanPlayerFrame_Update3D("player"); |
||
124 | --TargetPortrait:Hide(); |
||
125 | CleanPlayerFrame_TargetModel:Show(); |
||
126 | CleanPlayerFrame_Update3D("target"); |
||
127 | if not PartyMemberFrame1:IsVisible() then |
||
128 | CleanPlayerFrame_Party1Model:ClearModel(); |
||
129 | end |
||
130 | if not PartyMemberFrame2:IsVisible() then |
||
131 | CleanPlayerFrame_Party2Model:ClearModel(); |
||
132 | end |
||
133 | if not PartyMemberFrame3:IsVisible() then |
||
134 | CleanPlayerFrame_Party3Model:ClearModel(); |
||
135 | end |
||
136 | if not PartyMemberFrame4:IsVisible() then |
||
137 | CleanPlayerFrame_Party4Model:ClearModel(); |
||
138 | end |
||
139 | --PartyMemberFrame1Portrait:Hide(); |
||
140 | CleanPlayerFrame_Party1Model:Show(); |
||
141 | CleanPlayerFrame_Update3D("party1"); |
||
142 | --PartyMemberFrame2Portrait:Hide(); |
||
143 | CleanPlayerFrame_Party2Model:Show(); |
||
144 | CleanPlayerFrame_Update3D("party2"); |
||
145 | --PartyMemberFrame3Portrait:Hide(); |
||
146 | CleanPlayerFrame_Party3Model:Show(); |
||
147 | CleanPlayerFrame_Update3D("party3"); |
||
148 | --PartyMemberFrame4Portrait:Hide(); |
||
149 | CleanPlayerFrame_Party4Model:Show(); |
||
150 | CleanPlayerFrame_Update3D("party4"); |
||
151 | if GetNumPartyMembers() > 0 then |
||
152 | CleanPlayerFramePartyChecker:Show(); |
||
153 | end |
||
154 | else |
||
155 | CleanPlayerFramePartyChecker:Hide(); |
||
156 | PlayerPortrait:Show(); |
||
157 | TargetPortrait:Show(); |
||
158 | PartyMemberFrame1Portrait:Show(); |
||
159 | PartyMemberFrame2Portrait:Show(); |
||
160 | PartyMemberFrame3Portrait:Show(); |
||
161 | PartyMemberFrame4Portrait:Show(); |
||
162 | CleanPlayerFrame_PlayerModel:Hide(); |
||
163 | CleanPlayerFrame_TargetModel:Hide(); |
||
164 | CleanPlayerFrame_Party1Model:Hide(); |
||
165 | CleanPlayerFrame_Party2Model:Hide(); |
||
166 | CleanPlayerFrame_Party3Model:Hide(); |
||
167 | CleanPlayerFrame_Party4Model:Hide(); |
||
168 | end |
||
169 | |||
170 | CleanPlayerFrame_ShowPartyHealth = partyHealth; |
||
171 | if not (CleanPlayerFrame_ShowPartyHealth == 1) then |
||
172 | PartyMemberFrame1HealthBar.TextString = CleanPlayerFrame_PartyMemberFrame1HealthBarText; |
||
173 | PartyMemberFrame2HealthBar.TextString = CleanPlayerFrame_PartyMemberFrame2HealthBarText; |
||
174 | PartyMemberFrame3HealthBar.TextString = CleanPlayerFrame_PartyMemberFrame3HealthBarText; |
||
175 | PartyMemberFrame4HealthBar.TextString = CleanPlayerFrame_PartyMemberFrame4HealthBarText; |
||
176 | PartyMemberFrame1HealthBar.lockShow = 1; |
||
177 | PartyMemberFrame2HealthBar.lockShow = 1; |
||
178 | PartyMemberFrame3HealthBar.lockShow = 1; |
||
179 | PartyMemberFrame4HealthBar.lockShow = 1; |
||
180 | else |
||
181 | PartyMemberFrame1HealthBar.TextString = nil; |
||
182 | PartyMemberFrame2HealthBar.TextString = nil; |
||
183 | PartyMemberFrame3HealthBar.TextString = nil; |
||
184 | PartyMemberFrame4HealthBar.TextString = nil; |
||
185 | -- just to make sure |
||
186 | CleanPlayerFrame_PartyMemberFrame1HealthBarText:Hide(); |
||
187 | CleanPlayerFrame_PartyMemberFrame2HealthBarText:Hide(); |
||
188 | CleanPlayerFrame_PartyMemberFrame3HealthBarText:Hide(); |
||
189 | CleanPlayerFrame_PartyMemberFrame4HealthBarText:Hide(); |
||
190 | end |
||
191 | TextStatusBar_UpdateTextString(PartyMemberFrame1HealthBar); |
||
192 | TextStatusBar_UpdateTextString(PartyMemberFrame2HealthBar); |
||
193 | TextStatusBar_UpdateTextString(PartyMemberFrame3HealthBar); |
||
194 | TextStatusBar_UpdateTextString(PartyMemberFrame4HealthBar); |
||
195 | |||
196 | CleanPlayerFrame_ColorizeHealthBars = colorizeHealthBars; |
||
197 | |||
198 | -- choose font |
||
199 | CleanPlayerFrame_FontIndex = fontIndex; |
||
200 | CleanPlayerFrame_PartyMember1HealthBarText:SetFont(FONTS[fontIndex].font, FONTS[fontIndex].height, FONTS[fontIndex].flags); |
||
201 | CleanPlayerFrame_PartyMember2HealthBarText:SetFont(FONTS[fontIndex].font, FONTS[fontIndex].height, FONTS[fontIndex].flags); |
||
202 | CleanPlayerFrame_PartyMember3HealthBarText:SetFont(FONTS[fontIndex].font, FONTS[fontIndex].height, FONTS[fontIndex].flags); |
||
203 | CleanPlayerFrame_PartyMember4HealthBarText:SetFont(FONTS[fontIndex].font, FONTS[fontIndex].height, FONTS[fontIndex].flags); |
||
204 | CleanPlayerFrame_TargetFrameHealthBarText:SetFont(FONTS[fontIndex].font, FONTS[fontIndex].height, FONTS[fontIndex].flags); |
||
205 | CleanPlayerFrame_TargetFrameManaBarText:SetFont(FONTS[fontIndex].font, FONTS[fontIndex].height, FONTS[fontIndex].flags); |
||
206 | -- use selected font for player frame |
||
207 | CleanPlayerFrame_UseSmallFont = useSmallFont; |
||
208 | if useSmallFont then |
||
209 | PlayerFrameHealthBarText:SetFont(FONTS[fontIndex].font, FONTS[fontIndex].height, FONTS[fontIndex].flags); |
||
210 | PlayerFrameManaBarText:SetFont(FONTS[fontIndex].font, FONTS[fontIndex].height, FONTS[fontIndex].flags); |
||
211 | else |
||
212 | PlayerFrameHealthBarText:SetFont(TextStatusBarText:GetFont()); |
||
213 | PlayerFrameManaBarText:SetFont(TextStatusBarText:GetFont()); |
||
214 | end |
||
215 | |||
216 | CleanPlayerFrame_TargetFrameIndex = formatIndex; |
||
217 | if formatIndex > 1 then |
||
218 | TargetFrameHealthBar.TextString = CleanPlayerFrame_TargetFrameHealthBarText; |
||
219 | TargetFrameManaBar.TextString = CleanPlayerFrame_TargetFrameManaBarText; |
||
220 | TargetFrameHealthBar.lockShow = 1; |
||
221 | TargetFrameManaBar.lockShow = 1; |
||
222 | else |
||
223 | TargetFrameHealthBar.TextString = nil; |
||
224 | TargetFrameManaBar.TextString = nil; |
||
225 | CleanPlayerFrame_TargetFrameHealthBarText:Hide(); |
||
226 | CleanPlayerFrame_TargetFrameManaBarText:Hide(); |
||
227 | end |
||
228 | TextStatusBar_UpdateTextString(TargetFrameHealthBar); |
||
229 | TextStatusBar_UpdateTextString(TargetFrameManaBar); |
||
230 | |||
231 | CleanPlayerFrame_ShowPartyPercent = showPartyPercent; |
||
232 | if showPartyPercent then |
||
233 | CleanPlayerFrame_PartyMember1HealthBarText:Show(); |
||
234 | CleanPlayerFrame_PartyMember2HealthBarText:Show(); |
||
235 | CleanPlayerFrame_PartyMember3HealthBarText:Show(); |
||
236 | CleanPlayerFrame_PartyMember4HealthBarText:Show(); |
||
237 | else |
||
238 | CleanPlayerFrame_PartyMember1HealthBarText:Hide(); |
||
239 | CleanPlayerFrame_PartyMember2HealthBarText:Hide(); |
||
240 | CleanPlayerFrame_PartyMember3HealthBarText:Hide(); |
||
241 | CleanPlayerFrame_PartyMember4HealthBarText:Hide(); |
||
242 | end |
||
243 | TextStatusBar_UpdateTextString(PartyMemberFrame1HealthBar); |
||
244 | TextStatusBar_UpdateTextString(PartyMemberFrame2HealthBar); |
||
245 | TextStatusBar_UpdateTextString(PartyMemberFrame3HealthBar); |
||
246 | TextStatusBar_UpdateTextString(PartyMemberFrame4HealthBar); |
||
247 | end |
||
248 | |||
249 | function CleanPlayerFrame_TextStatusBar_UpdateTextString(textStatusBar) |
||
250 | TextStatusBar_UpdateTextString_Org(textStatusBar); |
||
251 | |||
252 | if not textStatusBar then |
||
253 | textStatusBar = this; |
||
254 | end |
||
255 | |||
256 | if textStatusBar.TextString == nil then |
||
257 | return; |
||
258 | end |
||
259 | |||
260 | local value = textStatusBar:GetValue(); |
||
261 | local min, max = textStatusBar:GetMinMaxValues(); |
||
262 | local percent = CleanPlayerFrame_Percent(value, max); |
||
263 | |||
264 | if CleanPlayerFrame_Mode == 3 then |
||
265 | -- handle player / pet frame |
||
266 | if textStatusBar == PlayerFrameHealthBar or textStatusBar == PlayerFrameManaBar |
||
267 | or textStatusBar == PetFrameHealthBar or textStatusBar == PetFrameManaBar |
||
268 | then |
||
269 | textStatusBar.TextString:SetText(value); |
||
270 | end |
||
271 | -- handle party frames |
||
272 | if ( textStatusBar == PartyMemberFrame1HealthBar |
||
273 | or textStatusBar == PartyMemberFrame2HealthBar |
||
274 | or textStatusBar == PartyMemberFrame3HealthBar |
||
275 | or textStatusBar == PartyMemberFrame4HealthBar ) |
||
276 | then |
||
277 | textStatusBar.TextString:SetText(value); |
||
278 | end |
||
279 | end |
||
280 | |||
281 | --textStatusBar.TextString:GetText() |
||
282 | if ( textStatusBar == PartyMemberFrame1HealthBar |
||
283 | or textStatusBar == PartyMemberFrame2HealthBar |
||
284 | or textStatusBar == PartyMemberFrame3HealthBar |
||
285 | or textStatusBar == PartyMemberFrame4HealthBar ) |
||
286 | then |
||
287 | -- who r we? |
||
288 | local id = textStatusBar:GetParent():GetID(); |
||
289 | local unit = "party" .. id; |
||
290 | -- show percent if necessary |
||
291 | if CleanPlayerFrame_ShowPartyPercent then |
||
292 | getglobal("CleanPlayerFrame_PartyMember" .. id .. "HealthBarText"):SetText(percent .. "%"); |
||
293 | end |
||
294 | |||
295 | -- colorize text if required |
||
296 | if CleanPlayerFrame_ShowPartyHealth >= 3 then |
||
297 | textStatusBar.TextString:SetTextColor(CleanPlayerFrame_Colorize(percent)); |
||
298 | else |
||
299 | textStatusBar.TextString:SetTextColor(1, 1, 1); |
||
300 | end |
||
301 | |||
302 | -- add assist messages |
||
303 | if CleanPlayerFrame_ShowPartyHealth == 4 and (not UnitIsDead(unit)) and (not UnitIsGhost(unit)) and UnitIsConnected(unit) then |
||
304 | local _, class = UnitClass("player"); |
||
305 | if percent < CLEANPLAYERFRAME_MESSAGES[class].percentDanger then |
||
306 | textStatusBar.TextString:SetText(textStatusBar.TextString:GetText() .. CLEANPLAYERFRAME_MESSAGES[class].danger); |
||
307 | elseif percent < CLEANPLAYERFRAME_MESSAGES[class].percentWarn then |
||
308 | textStatusBar.TextString:SetText(textStatusBar.TextString:GetText() .. CLEANPLAYERFRAME_MESSAGES[class].warn); |
||
309 | end |
||
310 | end |
||
311 | |||
312 | -- |
||
313 | if (not UnitIsConnected(unit)) or UnitIsGhost(unit) then |
||
314 | textStatusBar.TextString:SetTextColor(0.5, 0.5, 0.5); |
||
315 | elseif UnitIsDead(unit) then |
||
316 | textStatusBar.TextString:SetTextColor(1, 0.3, 0.3); |
||
317 | end |
||
318 | end |
||
319 | |||
320 | -- handle target frame |
||
321 | if textStatusBar == TargetFrameHealthBar then |
||
322 | -- automatically decide to show percent on target frame |
||
323 | if max == 100 then -- not so good |
||
324 | textStatusBar.TextString:SetText(value .. "%"); |
||
325 | else |
||
326 | textStatusBar.TextString:SetText(CleanPlayerFrame_FormatOutput(CleanPlayerFrame_TargetFrameIndex, value, percent)); |
||
327 | end |
||
328 | -- Hide when wow shows "dead" over the target health bar |
||
329 | if UnitIsDead("target") then |
||
330 | textStatusBar.TextString:Hide(); |
||
331 | else |
||
332 | textStatusBar.TextString:Show(); |
||
333 | end |
||
334 | end |
||
335 | |||
336 | if textStatusBar == TargetFrameManaBar then |
||
337 | if value > 0 then |
||
338 | if UnitPowerType("target") == 0 then |
||
339 | textStatusBar.TextString:SetText(CleanPlayerFrame_FormatOutput(CleanPlayerFrame_TargetFrameIndex, value, percent)); |
||
340 | else |
||
341 | textStatusBar.TextString:SetText(value); |
||
342 | end |
||
343 | else |
||
344 | textStatusBar.TextString:SetText(""); |
||
345 | end |
||
346 | end |
||
347 | end |
||
348 | |||
349 | function CleanPlayerFrame_HealthBar_OnValueChanged(value, smooth) |
||
350 | if CleanPlayerFrame_ColorizeHealthBars then |
||
351 | HealthBar_OnValueChanged_Org(value, true); |
||
352 | else |
||
353 | HealthBar_OnValueChanged_Org(value, smooth); |
||
354 | end |
||
355 | end |
||
356 | |||
357 | function CleanPlayerFrame_FormatOutput(index, value, percent) |
||
358 | local formatString = TARGETFRAME_FORMAT[index]; |
||
359 | formatString = string.gsub(formatString, "v", value); |
||
360 | formatString = string.gsub(formatString, "p", percent); |
||
361 | return formatString; |
||
362 | end |
||
363 | |||
364 | function CleanPlayerFrame_Percent(value, maxValue) |
||
365 | if maxValue == 0 then |
||
366 | return 0; |
||
367 | else |
||
368 | return math.floor(value * 100 / maxValue); |
||
369 | end |
||
370 | end |
||
371 | |||
372 | function CleanPlayerFrame_Colorize(percent) |
||
373 | local r = 0; |
||
374 | local g = 0; |
||
375 | |||
376 | if percent >= 50 then |
||
377 | -- red must get up to 255 |
||
378 | g = 1; |
||
379 | r = (100 - percent) / 50; |
||
380 | else |
||
381 | -- green must get down to 0 |
||
382 | r = 1; |
||
383 | g = percent / 50; |
||
384 | end |
||
385 | |||
386 | return r, g, 0; |
||
387 | end |
||
388 | |||
389 | function CleanPlayerFrame_Update3D(unit) |
||
390 | getglobal(UNIT_MODELS[unit]):ClearModel(); |
||
391 | getglobal(UNIT_MODELS[unit]):SetUnit(unit); |
||
392 | getglobal(UNIT_MODELS[unit]):SetCamera(0); |
||
393 | CleanPlayerFrame_SetLights3D(unit); |
||
394 | if CleanPlayerFrame_IsMeshLoaded(unit) then |
||
395 | getglobal(UNIT_PORTRAITS[unit]):Hide(); |
||
396 | else |
||
397 | getglobal(UNIT_PORTRAITS[unit]):Show(); |
||
398 | end |
||
399 | end |
||
400 | |||
401 | function CleanPlayerFrame_SetLights3D(unit) |
||
402 | LowHealthWarnings[unit] = false; |
||
403 | if (not UnitIsConnected(unit)) or UnitIsGhost(unit) then |
||
404 | getglobal(UNIT_MODELS[unit]):SetLight(1, 0, 0, 0, 0, 1.0, 0.25, 0.25, 0.25); |
||
405 | elseif UnitIsDead(unit) then |
||
406 | getglobal(UNIT_MODELS[unit]):SetLight(1, 0, 0, 0, 0, 1.0, 1, 0.3, 0.3); |
||
407 | else |
||
408 | if CleanPlayerFrame_Percent(UnitHealth(unit), UnitHealthMax(unit)) < 20 then |
||
409 | LowHealthWarnings[unit] = true; |
||
410 | CleanPlayerFrameFrame:Show(); |
||
411 | else |
||
412 | getglobal(UNIT_MODELS[unit]):SetLight(1, 0, 0, 0, 0, 1.0, 1, 1, 1); |
||
413 | end |
||
414 | end |
||
415 | end |
||
416 | |||
417 | function CleanPlayerFrame_IsMeshLoaded(unit) |
||
418 | return type(getglobal(UNIT_MODELS[unit]):GetModel()) == "string"; |
||
419 | end |
||
420 | |||
421 | function CleanPlayerFrame_LoadPartyMesh(unit) |
||
422 | if not CleanPlayerFrame_IsMeshLoaded(unit) then |
||
423 | CleanPlayerFrame_Update3D(unit); |
||
424 | end |
||
425 | end |
||
426 | |||
427 | function CleanPlayerFrame_OnEvent(event) |
||
428 | if CleanPlayerFrame_Show3D then |
||
429 | if event == "PLAYER_TARGET_CHANGED" then |
||
430 | CleanPlayerFrame_Update3D("target"); |
||
431 | elseif event == "UNIT_PORTRAIT_UPDATE" and UNIT_MODELS[arg1] then |
||
432 | CleanPlayerFrame_Update3D(arg1); |
||
433 | elseif event == "UNIT_HEALTH" and UNIT_MODELS[arg1] then |
||
434 | CleanPlayerFrame_SetLights3D(arg1); |
||
435 | end |
||
436 | end |
||
437 | |||
438 | if event == "PARTY_MEMBERS_CHANGED" or event == "VARIABLES_LOADED" then |
||
439 | -- party members changed && variables loaded |
||
440 | if CleanPlayerFrame_Show3D and GetNumPartyMembers() > 0 then |
||
441 | CleanPlayerFramePartyChecker:Show(); |
||
442 | else |
||
443 | CleanPlayerFramePartyChecker:Hide(); |
||
444 | end |
||
445 | CleanPlayerFrame_Setup(CleanPlayerFrame_Mode, |
||
446 | CleanPlayerFrame_ShowPartyHealth, |
||
447 | CleanPlayerFrame_TargetFrameIndex, |
||
448 | CleanPlayerFrame_FontIndex, |
||
449 | CleanPlayerFrame_ColorizeHealthBars, |
||
450 | CleanPlayerFrame_ShowPartyPercent, |
||
451 | CleanPlayerFrame_UseSmallFont, |
||
452 | CleanPlayerFrame_Show3D); |
||
453 | end |
||
454 | end |
||
455 | |||
456 | local timer = 0; |
||
457 | local sign = 1; |
||
458 | function CleanPlayerFrame_OnUpdate(elapsed) |
||
459 | -- blink if party / player is low on health and 3D is on |
||
460 | timer = timer + elapsed; |
||
461 | if timer > 0.5 then |
||
462 | sign = -sign; |
||
463 | end |
||
464 | timer = mod(timer, 0.5); |
||
465 | |||
466 | local redIntensity = 0; |
||
467 | if sign == 1 then |
||
468 | redIntensity = 0.7 - timer; |
||
469 | else |
||
470 | redIntensity = timer + 0.2; |
||
471 | end |
||
472 | |||
473 | local hide = true; |
||
474 | for unit, warn in pairs(LowHealthWarnings) do |
||
475 | if warn and getglobal(UNIT_MODELS[unit]):IsVisible() then |
||
476 | getglobal(UNIT_MODELS[unit]):SetLight(1, 0, 0, 0, 0, 1.0, 1, redIntensity, redIntensity); |
||
477 | hide = false; |
||
478 | end |
||
479 | end |
||
480 | if hide then |
||
481 | CleanPlayerFrameFrame:Hide(); |
||
482 | end |
||
483 | end |
||
484 | |||
485 | --[[ |
||
486 | function CleanPlayerFrame_DebugParty() |
||
487 | PartyMemberFrame1:Show(); |
||
488 | PartyMemberFrame1Disconnect:Show(); |
||
489 | CleanPlayerFrame_Party1Model:SetUnit("party1"); |
||
490 | CleanPlayerFrame_Party1Model:SetCamera(0); |
||
491 | CleanPlayerFrame_Party1Model:Show() |
||
492 | CleanPlayerFrame_Party1Model:SetLight(1, 0, 0, 0, 0, 1.0, 0.25, 0.25, 0.25); |
||
493 | |||
494 | PartyMemberFrame2:Show(); |
||
495 | PartyMemberFrame2Disconnect:Hide(); |
||
496 | CleanPlayerFrame_Party2Model:SetUnit("target"); |
||
497 | CleanPlayerFrame_Party2Model:SetCamera(0); |
||
498 | CleanPlayerFrame_Party2Model:Show() |
||
499 | CleanPlayerFrame_Party2Model:SetLight(1, 0, 0, 0, 0, 1.0, 1, 0.3, 0.3); |
||
500 | |||
501 | |||
502 | PartyMemberFrame3:Show(); |
||
503 | PartyMemberFrame3Disconnect:Hide(); |
||
504 | CleanPlayerFrame_Party3Model:SetUnit("player"); |
||
505 | CleanPlayerFrame_Party3Model:SetCamera(0); |
||
506 | CleanPlayerFrame_Party3Model:Show() |
||
507 | |||
508 | |||
509 | PartyMemberFrame4:Show(); |
||
510 | PartyMemberFrame4Disconnect:Hide(); |
||
511 | CleanPlayerFrame_Party4Model:SetUnit("party1"); |
||
512 | CleanPlayerFrame_Party4Model:SetCamera(0); |
||
513 | CleanPlayerFrame_Party4Model:Show() |
||
514 | |||
515 | LowHealthWarnings["player"] = true; |
||
516 | LowHealthWarnings["party1"] = true; |
||
517 | LowHealthWarnings["party2"] = true; |
||
518 | LowHealthWarnings["party3"] = true; |
||
519 | LowHealthWarnings["party4"] = true; |
||
520 | CleanPlayerFrameFrame:Show(); |
||
521 | end |
||
522 | |||
523 | function CleanPlayerFrame_Debug2() |
||
524 | if CleanPlayerFrame_IsMeshLoaded("party1") then |
||
525 | ChatFrame1:AddMessage("model ist LOADED" .. CleanPlayerFrame_Party1Model:GetModel() ); |
||
526 | else |
||
527 | ChatFrame1:AddMessage("model ist not loaded!"); |
||
528 | end |
||
529 | end |
||
530 | |||
531 | --]] |