-- ------------------------------------------- -- << Power Auras >> -- Par -Sinsthar- -- [Ziya/Tiven - serveur Fr - Kirin Tor] -- -- Effets visuels autour du personnage -- en cas de buff ou de debuff. -- ------------------------------------------- PowaVersion = "v2.01" CurrentAura = 1; CurrentSecondeAura = 0; MaxAuras = 20; SecondeAura = MaxAuras + 1; CurrentTestAura = MaxAuras + 2; PowaEnabled = 0; PowaModTest = false; -- on test les effets Powa_FramesVisibleTime = {}; -- visible ou pas PowaMisc = { quickhide = false, disabled = false, BTimerX = 0, BTimerY = 0, BTimerA = 1.00, BTimerScale = 1.00, BCents = true, DTimerX = 0, DTimerY = 0, DTimerA = 1.00, DTimerScale = 1.00, DCents = true }; PowaGlobal = {maxeffects = 20, maxtextures = 15} PowaSet = {}; for i = 1, SecondeAura do PowaSet[i] = { texture = 1, anim1 = 1, anim2 = 0, speed = 1.00, begin = 0, duration = 0, alpha = 0.75, size = 0.75, torsion = 1, symetrie = 0, x = 0, y = -30, buffname = "", isdebuff = false, isdebufftype = false, timer = false, inverse = false, r = 1.0, g = 1.0, b = 1.0 }; end TabBuff = {}; -- liste des buffs en cours TabDebuff = {}; -- debuffs TabDebuffType = {}; -- debuff types -- --------------------------------------------------------------------------------------------- function Powa_OnLoad() -- Registering Events -- this:RegisterEvent("PLAYER_AURAS_CHANGED"); this:RegisterEvent("PLAYER_ENTERING_WORLD"); this:RegisterEvent("VARIABLES_LOADED"); Powa_Frames = {}; Powa_textures = {}; -- options init SlashCmdList["POWA"] = Powa_SlashHandler; SLASH_POWA1 = "/powa"; end -- ---------------------------------------------------------------------------------------------- function Powa_InitTabs() for i = 1, CurrentTestAura do if (PowaSet[i]) then -- gere les rajout de variables suivant les versions if (PowaSet[i].timer == nil) then PowaSet[i].timer = false; end if (PowaSet[i].inverse == nil) then PowaSet[i].inverse = false; end if (PowaSet[i].speed == nil) then PowaSet[i].speed = 1.0; end if (PowaSet[i].begin == nil) then PowaSet[i].begin = 0; end if (PowaSet[i].duration == nil) then PowaSet[i].duration = 0; end else -- pas init PowaSet[i] = { texture = 1, anim1 = 1, anim2 = 0, speed = 1.00, begin = 0, duration = 0, alpha = 0.75, size = 0.75, torsion = 1, symetrie = 0, x = 0, y = -30, buffname = "", isdebuff = false, isdebufftype = false, timer = false, inverse = false, r = 1.0, g = 1.0, b = 1.0 } Powa_FramesVisibleTime[i] = 0; end end if (PowaMisc) then if (PowaMisc.BTimerX == nil) then PowaMisc.BTimerX = 0; end if (PowaMisc.BTimerY == nil) then PowaMisc.BTimerY = 0; end if (PowaMisc.BTimerA == nil) then PowaMisc.BTimerA = 1.00; end if (PowaMisc.BTimerScale == nil) then PowaMisc.BTimerScale = 1.00; end if (PowaMisc.DTimerX == nil) then PowaMisc.DTimerX = 0; end if (PowaMisc.DTimerY == nil) then PowaMisc.DTimerY = 0; end if (PowaMisc.DTimerA == nil) then PowaMisc.DTimerA = 1.00; end if (PowaMisc.DTimerScale == nil) then PowaMisc.DTimerScale = 1.00; end if (PowaMisc.BCents == nil) then PowaMisc.BCents = true; end if (PowaMisc.DCents == nil) then PowaMisc.DCents = true; end else PowaMisc.quickhide = false; PowaMisc.disabled = false; PowaMisc.BTimerX = 0; PowaMisc.BTimerY = 0; PowaMisc.BTimerA = 1.00; PowaMisc.BTimerScale = 1.00; PowaMisc.DTimerX = 0; PowaMisc.DTimerY = 0; PowaMisc.DTimerA = 1.00; PowaMisc.DTimerScale = 1.00; PowaMisc.BCents = true; PowaMisc.DCents = true; end end -- ----------------------------------------------------------------------------------------------- function Powa_CreateFrames() for i = 1, CurrentTestAura do if (Powa_Frames[i]) then -- deja cree, ne fait rien else -- Frame -- Powa_Frames[i] = CreateFrame("Frame","Frame"..i); Powa_Frames[i]:Hide(); -- Texture -- Powa_textures[i] = Powa_Frames[i]:CreateTexture(nil,"BACKGROUND"); Powa_textures[i]:SetBlendMode("ADD"); Powa_textures[i]:SetAllPoints(Powa_Frames[i]); -- attache la texture a la frame Powa_Frames[i].texture = Powa_textures[i]; Powa_Frames[i].baseL = 256; Powa_Frames[i].baseH = 256; Powa_FramesVisibleTime[i] = 0; end end end Powa_Timer = {}; Powa_timertex = {}; Tstep = 0.09765625; function Powa_CreateTimer() for i = 1, 4 do if (Powa_Timer[i]) then else Powa_Timer[i] = CreateFrame("Frame","Timer"..i); Powa_Timer[i]:Hide(); Powa_timertex[i] = Powa_Timer[i]:CreateTexture(nil,"BACKGROUND"); Powa_timertex[i]:SetBlendMode("ADD"); Powa_timertex[i]:SetAllPoints(Powa_Timer[i]); -- attache la texture a la frame Powa_Timer[i].texture = Powa_timertex[i]; Powa_timertex[i]:SetTexture("Interface\\Addons\\PowerAuras\\timers.tga"); end end Powa_UpdateOptionsTimer(); Powa_UpdateOptionsTimer2(); end -- ------------------------------------------------------------------------------------ BUFF CHECKS function Powa_MemorizeBuffs() -- cree un string contenant tous les noms des buffs en cours local buffIndex, untilCancelled; for i = 1, 24 do TabBuff[i] = "xXx"; buffIndex, untilCancelled = GetPlayerBuff(i-1, "HELPFUL"); if (buffIndex >= 0) then Powa_Tooltip:SetPlayerBuff(buffIndex); if (Powa_TooltipTextLeft1:IsShown()) then TabBuff[i] = string.upper(Powa_TooltipTextLeft1:GetText()); else Powa_Tooltip:SetOwner(UIParent, "ANCHOR_NONE"); -- ERROR !! Ca ne doit jamais arriver ca end end end for i = 1, 16 do TabDebuff[i] = "xXx"; TabDebuffType[i] = "xXx"; buffIndex, untilCancelled = GetPlayerBuff(i-1, "HARMFUL"); if (buffIndex >= 0) then Powa_Tooltip:SetPlayerBuff(buffIndex); if (Powa_TooltipTextLeft1:IsShown()) then TabDebuff[i] = string.upper(Powa_TooltipTextLeft1:GetText()); if (Powa_TooltipTextRight1:IsShown()) then TabDebuffType[i] = string.upper(Powa_TooltipTextRight1:GetText()); else TabDebuffType[i] = string.upper(PowaText.aucun); end else Powa_Tooltip:SetOwner(UIParent, "ANCHOR_NONE"); -- ERROR !! Ca ne doit jamais arriver ca end end end end function PowaCompareBuffDebuff(xnum) if (PowaMisc.disabled == true) then return false; end if (PowaSet[xnum].isdebuff) then -- un debuff for i = 1, 16 do Powa_Frames[xnum].buffindex = 0; for pword in string.gfind(PowaSet[xnum].buffname, "[%w%s%-%'\195\130-\195\190]+") do if (string.find(TabDebuff[i], string.upper(pword), 1, true)) then Powa_Frames[xnum].buffindex = i-1; -- point vers le debuff qui a le timer return true; end end end elseif (PowaSet[xnum].isdebufftype) then -- type de debuff (cherche a l'inverse) for i = 1, 16 do if (string.find(string.upper(PowaSet[xnum].buffname), TabDebuffType[i], 1, true)) then Powa_Frames[xnum].buffindex = i-1; -- point vers le debuff type qui a le timer return true; end end else -- un buff for i = 1, 24 do Powa_Frames[xnum].buffindex = 0; for pword in string.gfind(PowaSet[xnum].buffname, "[%w%s%-%'\195\130-\195\190]+") do if (string.find(TabBuff[i], string.upper(pword), 1, true)) then Powa_Frames[xnum].buffindex = i-1; -- point vers le buff qui a le timer return true; end end end end return false; end function Powa_NewCheckBuffs() -- compare chaque nom de buff d'activation avec l'ensemble des buffs memorises local LastAura; Powa_MemorizeBuffs(); LastAura = 0; for j = 1, MaxAuras do if (PowaSet[j].buffname == "" or PowaSet[j].buffname == " ") then -- ne fait rien si vide PowaSet[j].buffname = ""; elseif (PowaCompareBuffDebuff(j)) then -- buff actif if (PowaSet[j].inverse == true) then if (Powa_Frames[j]:IsVisible() ) then Powa_FramesVisibleTime[j] = 0; if (j == CurrentSecondeAura) then Powa_FramesVisibleTime[SecondeAura] = 0; if (LastAura > 0) then -- cet effet n'est plus actif mais on affiche l'aura 2 sur le dernier effet CurrentSecondeAura = LastAura; Powa_DisplayAura(LastAura); end end end else Powa_DisplayAura(j); LastAura = j; end else -- -- perte d'aura, s'il est visible on le cache if (PowaSet[j].inverse == false) then if (Powa_Frames[j]:IsVisible() ) then Powa_FramesVisibleTime[j] = 0; if (j == CurrentSecondeAura) then Powa_FramesVisibleTime[SecondeAura] = 0; if (LastAura > 0) then -- cet effet n'est plus actif mais on affiche l'aura 2 sur le dernier effet CurrentSecondeAura = LastAura; Powa_DisplayAura(LastAura); end end end else Powa_DisplayAura(j); LastAura = j; end end end -- end for end -- ----------------------------------------------------------------------------------------- EVENT function Powa_OnEvent() if event == "PLAYER_ENTERING_WORLD" then Powa_Tooltip:SetOwner(UIParent, "ANCHOR_NONE"); elseif event == "VARIABLES_LOADED" then DEFAULT_CHAT_FRAME:AddMessage("|cffB0A0ff|r |cffffff00"..PowaVersion.."|r - "..PowaText.welcome); -- defini le nombre max d'effets MaxAuras = PowaGlobal.maxeffects; SecondeAura = MaxAuras + 1; CurrentTestAura = MaxAuras + 2; -- verifie en cas de rajout d'effets que tous sont initialises (sinon ca bug :P) Powa_InitTabs(); Powa_CreateFrames(); -- defini le nombre max de textures if (PowaGlobal.maxtextures > 50) then PowaGlobal.maxtextures = 50; elseif (PowaGlobal.maxtextures < 20) then PowaGlobal.maxtextures = 20; end getglobal("PowaBarAuraTextureSlider"):SetMinMaxValues(1,PowaGlobal.maxtextures); getglobal("PowaBarAuraTextureSliderHigh"):SetText(PowaGlobal.maxtextures); PowaEnabled = 1; Powa_CreateTimer(); elseif event == "PLAYER_AURAS_CHANGED" then -- passe les buffs en revue if (PowaModTest == false) then Powa_NewCheckBuffs(); end end end -- ----------------------------------------------------------------------------------------------- function Powa_DisplayAura(FNum) if (PowaEnabled == 0) then return; end -- desactived if (Powa_FramesVisibleTime[FNum] == 0) then -- si pas en cours Powa_textures[FNum]:SetTexture("Interface\\Addons\\PowerAuras\\aura"..PowaSet[FNum].texture..".tga"); Powa_textures[FNum]:SetVertexColor(PowaSet[FNum].r,PowaSet[FNum].g,PowaSet[FNum].b); if (PowaSet[FNum].symetrie == 1) then Powa_textures[FNum]:SetTexCoord(1, 0, 0, 1); -- inverse X elseif (PowaSet[FNum].symetrie == 2) then Powa_textures[FNum]:SetTexCoord(0, 1, 1, 0); -- inverse Y elseif (PowaSet[FNum].symetrie == 3) then Powa_textures[FNum]:SetTexCoord(1, 0, 1, 0); -- inverse XY else Powa_textures[FNum]:SetTexCoord(0, 1, 0, 1); end if (PowaSet[FNum].begin > 0) then Powa_Frames[FNum].beginAnim = 1; else Powa_Frames[FNum].beginAnim = 0; end Powa_Frames[FNum].baseL = 256 * PowaSet[FNum].size * PowaSet[FNum].torsion; Powa_Frames[FNum].baseH = 256 * PowaSet[FNum].size * (2-PowaSet[FNum].torsion); Powa_Frames[FNum]:SetAlpha(PowaSet[FNum].alpha); Powa_Frames[FNum]:SetPoint("Center",PowaSet[FNum].x, PowaSet[FNum].y); Powa_Frames[FNum]:SetWidth(Powa_Frames[FNum].baseL); Powa_Frames[FNum]:SetHeight(Powa_Frames[FNum].baseH); Powa_Frames[FNum].statut = 0; Powa_Frames[FNum].duree = 0; Powa_Frames[FNum]:Show(); Powa_FramesVisibleTime[FNum] = 1; -- affiche anim1 Powa_FramesVisibleTime[SecondeAura] = 0; -- init anim2 end if (Powa_FramesVisibleTime[SecondeAura] == 0) then -- si pas en cours (Anim 2) CurrentSecondeAura = FNum; -- 2eme aura en cours if (PowaSet[FNum].anim2 == 0) then -- pas d'anim Powa_Frames[SecondeAura]:Hide(); return; end if (PowaSet[FNum].begin > 0) then Powa_Frames[FNum].beginAnim = 2; else Powa_Frames[FNum].beginAnim = 0; end PowaSet[SecondeAura].size = PowaSet[FNum].size; PowaSet[SecondeAura].torsion = PowaSet[FNum].torsion; PowaSet[SecondeAura].alpha = PowaSet[FNum].alpha * 0.5; PowaSet[SecondeAura].anim1 = PowaSet[FNum].anim2; PowaSet[SecondeAura].speed = PowaSet[FNum].speed; PowaSet[SecondeAura].duration = PowaSet[FNum].duration; PowaSet[SecondeAura].x = PowaSet[FNum].x; PowaSet[SecondeAura].y = PowaSet[FNum].y; Powa_textures[SecondeAura]:SetTexture("Interface\\Addons\\PowerAuras\\aura"..PowaSet[FNum].texture..".tga"); Powa_textures[SecondeAura]:SetVertexColor(PowaSet[FNum].r,PowaSet[FNum].g,PowaSet[FNum].b); if (PowaSet[FNum].symetrie == 1) then Powa_textures[SecondeAura]:SetTexCoord(1, 0, 0, 1); -- inverse X elseif (PowaSet[FNum].symetrie == 2) then Powa_textures[SecondeAura]:SetTexCoord(0, 1, 1, 0); -- inverse Y elseif (PowaSet[FNum].symetrie == 3) then Powa_textures[SecondeAura]:SetTexCoord(1, 0, 1, 0); -- inverse XY else Powa_textures[SecondeAura]:SetTexCoord(0, 1, 0, 1); end Powa_Frames[SecondeAura].baseL = Powa_Frames[FNum].baseL; Powa_Frames[SecondeAura].baseH = Powa_Frames[FNum].baseH; Powa_Frames[SecondeAura]:SetAlpha(PowaSet[SecondeAura].alpha); Powa_Frames[SecondeAura]:SetPoint("Center",PowaSet[FNum].x, PowaSet[FNum].y); Powa_Frames[SecondeAura]:SetWidth(Powa_Frames[SecondeAura].baseL); Powa_Frames[SecondeAura]:SetHeight(Powa_Frames[SecondeAura].baseH); Powa_Frames[SecondeAura].statut = 1; Powa_Frames[SecondeAura].duree = Powa_Frames[FNum].duree; Powa_Frames[SecondeAura]:Show(); Powa_FramesVisibleTime[SecondeAura] = 1; end end -- -------------------------------------------------------------------------------------- TIMERS PowaActiveTimer = 0; -- le timer en cours PowaActiveTimerValue = 0; PowaActiveTimerSup = 0; -- le 2eme timer en cours PowaActiveTimerSupValue = 0; PowaActiveTimer2 = 0; -- le timer en cours (debuffs) PowaActiveTimer2Value = 0; PowaActiveTimer2Sup = 0; -- le 2eme timer en cours PowaActiveTimer2SupValue = 0; function Powa_UpdateTimer(numi) local newvalue; if (numi > MaxAuras) then -- fin du cycle on arrete return; elseif (PowaSet[numi].timer == false) then -- cet effet n'affiche pas de timer return; end -- prend le timer if (getglobal("PowaBarConfigFrameOptions"):IsVisible()) then -- options des timers, affiche PowaActiveTimer2 = numi; PowaActiveTimer2Value = random(1,9) + (random(1, 99) / 100); PowaActiveTimer = numi; PowaActiveTimerValue = random(1,9) + (random(1, 99) / 100); elseif (PowaSet[numi].isdebuff or PowaSet[numi].isdebufftype) then if (PowaModTest) then newvalue = random(1,9) + (random(1, 99) / 100); else newvalue = GetPlayerBuffTimeLeft( GetPlayerBuff(Powa_Frames[numi].buffindex, "HARMFUL") ); end if (newvalue > 0) then -- ok on a un timer a afficher... if ((PowaActiveTimer2Value > 0) and (newvalue > PowaActiveTimer2Value)) then -- y'a deja un timer dont le nombre est plus petit, domage return; end PowaActiveTimer2 = numi; -- lien vers l'effet PowaActiveTimer2Value = newvalue; -- retiens la valeur end else if (PowaModTest) then newvalue = random(1,9) + (random(1, 99) / 100); else newvalue = GetPlayerBuffTimeLeft( GetPlayerBuff(Powa_Frames[numi].buffindex, "HELPFUL") ); end if (newvalue > 0) then -- ok on a un timer a afficher... if ((PowaActiveTimerValue > 0) and (newvalue > PowaActiveTimerValue)) then -- y'a deja un timer dont le nombre est plus petit, domage return; end PowaActiveTimer = numi; -- lien vers l'effet PowaActiveTimerValue = newvalue; -- retiens la valeur end end end function Powa_ResetTimers() local deci, uni, newvalue; if (PowaActiveTimer > 0) then -- timer a un lien if (Powa_Frames[PowaActiveTimer]:IsVisible()) then -- l'effet est visible, affiche -- timer 1, le gros (secondes) Powa_timertex[1]:SetVertexColor(PowaSet[PowaActiveTimer].r,PowaSet[PowaActiveTimer].g,PowaSet[PowaActiveTimer].b); -- si le timer est > 60, le transforme en minutes newvalue = PowaActiveTimerValue; if (newvalue > 60.00) then newvalue = newvalue / 60; end newvalue = math.min (99.00, newvalue); deci = math.floor(newvalue / 10); uni = math.floor(newvalue - (deci*10)); Powa_timertex[1]:SetTexCoord(Tstep * uni, Tstep * (uni+1), Tstep * deci, Tstep * (deci+1)); Powa_Timer[1]:Show(); -- timer 2, le petit (centieme de secondes) Powa_timertex[2]:SetVertexColor(PowaSet[PowaActiveTimer].r,PowaSet[PowaActiveTimer].g,PowaSet[PowaActiveTimer].b); newvalue = PowaActiveTimerValue; if (newvalue > 60.00) then newvalue = math.mod(newvalue,60); else newvalue = (newvalue - math.floor(newvalue)) * 100; end deci = math.floor(newvalue / 10); uni = math.floor(newvalue - (deci*10)); Powa_timertex[2]:SetTexCoord(Tstep * uni, Tstep * (uni+1), Tstep * deci, Tstep * (deci+1)); if (PowaMisc.BCents == true) then Powa_Timer[2]:Show(); else Powa_Timer[2]:Hide(); end else Powa_Timer[1]:Hide(); -- cache les timer Powa_Timer[2]:Hide(); -- cache les timer end else Powa_Timer[1]:Hide(); Powa_Timer[2]:Hide(); -- cache les timer end PowaActiveTimer = 0; PowaActiveTimerValue = 0; -- idem pour les debuffs if (PowaActiveTimer2 > 0) then -- timer a un lien if (Powa_Frames[PowaActiveTimer2]:IsVisible()) then -- l'effet est visible, affiche -- timer 1, le gros (secondes) Powa_timertex[3]:SetVertexColor(PowaSet[PowaActiveTimer2].r,PowaSet[PowaActiveTimer2].g,PowaSet[PowaActiveTimer2].b); -- si le timer est > 60, le transforme en minutes newvalue = PowaActiveTimer2Value; if (newvalue > 60.00) then newvalue = newvalue / 60; end newvalue = math.min (99.00, newvalue); deci = math.floor(newvalue / 10); uni = math.floor(newvalue - (deci*10)); Powa_timertex[3]:SetTexCoord(Tstep * uni, Tstep * (uni+1), Tstep * deci, Tstep * (deci+1)); Powa_Timer[3]:Show(); -- timer 2, le petit (centieme de secondes) Powa_timertex[4]:SetVertexColor(PowaSet[PowaActiveTimer2].r,PowaSet[PowaActiveTimer2].g,PowaSet[PowaActiveTimer2].b); newvalue = PowaActiveTimer2Value; if (newvalue > 60.00) then newvalue = math.mod(newvalue,60); else newvalue = (newvalue - math.floor(newvalue)) * 100; end deci = math.floor(newvalue / 10); uni = math.floor(newvalue - (deci*10)); Powa_timertex[4]:SetTexCoord(Tstep * uni, Tstep * (uni+1), Tstep * deci, Tstep * (deci+1)); if (PowaMisc.DCents == true) then Powa_Timer[4]:Show(); else Powa_Timer[4]:Hide(); end else Powa_Timer[3]:Hide(); -- cache les timer Powa_Timer[4]:Hide(); -- cache les timer end else Powa_Timer[3]:Hide(); Powa_Timer[4]:Hide(); -- cache les timer end PowaActiveTimer2 = 0; PowaActiveTimer2Value = 0; end -- -------------------------------------------------------------------------------------- ON UPDATE minScale = {a=0, w=0, h=0}; maxScale = {a=0, w=0, h=0}; curScale = {a=0, w=0, h=0}; speedScale = 0; function Powa_OnUpdate(elapsed) for i = 1, CurrentTestAura do if (PowaEnabled == 0) then return; end -- desactived if (Powa_FramesVisibleTime[i] > 0) then -- si visible seulement Powa_UpdateTimer(i); -- met a jour les Timers curScale.w = Powa_Frames[i].baseL; -- regle la taille de l'image en pixel curScale.h = Powa_Frames[i].baseH; -- pas d'anim si l'effet va disparaitre avec duree if ((PowaSet[i].duration > 0) and (Powa_Frames[i].duree > PowaSet[i].duration)) then -- si visible, baisse l'alpha if (Powa_Frames[i]:GetAlpha() > 0) then curScale.a = Powa_Frames[i]:GetAlpha() - (elapsed / 2); -- si alpha 0, cache if (curScale.a <= 0) then Powa_Frames[i]:SetAlpha(0); else Powa_Frames[i]:SetAlpha(curScale.a); end end -- Animation 1 : aucune elseif (PowaSet[i].anim1 == 1) then -- Animation 2 : max alpha <-> mi-alpha elseif (PowaSet[i].anim1 == 2) then minScale.a = PowaSet[i].alpha * 0.5 * PowaSet[i].speed; maxScale.a = PowaSet[i].alpha; if (Powa_Frames[i].statut == 0) then curScale.a = Powa_Frames[i]:GetAlpha() - (elapsed / 2); Powa_Frames[i]:SetAlpha( curScale.a ) if (Powa_Frames[i]:GetAlpha() < minScale.a) then Powa_Frames[i]:SetAlpha(minScale.a); Powa_Frames[i].statut = 1; end else curScale.a = Powa_Frames[i]:GetAlpha() + (elapsed / 2); if (curScale.a > 1.0) then curScale.a = 1.0; end -- pas trop haut non plus Powa_Frames[i]:SetAlpha( curScale.a ) if (Powa_Frames[i]:GetAlpha() >= maxScale.a) then Powa_Frames[i]:SetAlpha(maxScale.a); Powa_Frames[i].statut = 0; end end -- Animation 3 : mini-zoom in repetitif + fading elseif (PowaSet[i].anim1 == 3) then minScale.w = curScale.w * 0.90; minScale.h = curScale.h * 0.90; maxScale.w = curScale.w * 1.20; maxScale.h = curScale.h * 1.20; speedScale = (25 * PowaSet[i].speed) * PowaSet[i].size; if (Powa_Frames[i].statut == 1) then -- decale anim 2 Powa_Frames[i]:SetWidth(curScale.w * 1.15); Powa_Frames[i]:SetHeight(curScale.h * 1.15); Powa_Frames[i].statut = 0; end Powa_Frames[i]:SetWidth( Powa_Frames[i]:GetWidth() + (elapsed * speedScale) ) Powa_Frames[i]:SetHeight( Powa_Frames[i]:GetHeight() + (elapsed * speedScale) ) Powa_Frames[i]:SetAlpha( ((maxScale.w - Powa_Frames[i]:GetWidth()) / (maxScale.w - minScale.w)) * PowaSet[i].alpha ); if (Powa_Frames[i]:GetWidth() > maxScale.w) then Powa_Frames[i]:SetWidth(minScale.w); Powa_Frames[i]:SetHeight(minScale.h); end -- Animation 4 : mini-zoom in/out elseif (PowaSet[i].anim1 == 4) then minScale.w = curScale.w * 0.95; minScale.h = curScale.h * 0.95; maxScale.w = curScale.w * 1.05; maxScale.h = curScale.h * 1.05; speedScale = (50 * PowaSet[i].speed) * PowaSet[i].size; if (Powa_Frames[i].statut == 0) then Powa_Frames[i]:SetWidth( Powa_Frames[i]:GetWidth() + (elapsed * speedScale * PowaSet[i].torsion) ) Powa_Frames[i]:SetHeight( Powa_Frames[i]:GetHeight() + (elapsed * speedScale * (2-PowaSet[i].torsion) ) ) if (Powa_Frames[i]:GetWidth() > maxScale.w) then Powa_Frames[i]:SetWidth(maxScale.w); Powa_Frames[i]:SetHeight(maxScale.h); Powa_Frames[i].statut = 1; end else Powa_Frames[i]:SetWidth( Powa_Frames[i]:GetWidth() - (elapsed * speedScale * PowaSet[i].torsion) ) Powa_Frames[i]:SetHeight( Powa_Frames[i]:GetHeight() - (elapsed * speedScale * (2-PowaSet[i].torsion) ) ) if (Powa_Frames[i]:GetWidth() < minScale.w) then Powa_Frames[i]:SetWidth(minScale.w); Powa_Frames[i]:SetHeight(minScale.h); Powa_Frames[i].statut = 0; end end -- Animation 5 : effet bulle elseif (PowaSet[i].anim1 == 5) then minScale.w = curScale.w * 0.95; minScale.h = curScale.h * 0.95; maxScale.w = curScale.w * 1.05; maxScale.h = curScale.h * 1.05; speedScale = (50 * PowaSet[i].speed) * PowaSet[i].size; if (Powa_Frames[i].statut == 0) then Powa_Frames[i]:SetWidth( Powa_Frames[i]:GetWidth() + (elapsed * speedScale * PowaSet[i].torsion) ) Powa_Frames[i]:SetHeight( Powa_Frames[i]:GetHeight() - (elapsed * speedScale * (2-PowaSet[i].torsion) ) ) if (Powa_Frames[i]:GetWidth() > maxScale.w) then Powa_Frames[i]:SetWidth(maxScale.w); Powa_Frames[i]:SetHeight(minScale.h); Powa_Frames[i].statut = 1; end else Powa_Frames[i]:SetWidth( Powa_Frames[i]:GetWidth() - (elapsed * speedScale * PowaSet[i].torsion) ) Powa_Frames[i]:SetHeight( Powa_Frames[i]:GetHeight() + (elapsed * speedScale * (2-PowaSet[i].torsion) ) ) if (Powa_Frames[i]:GetHeight() > maxScale.h) then Powa_Frames[i]:SetWidth(minScale.w); Powa_Frames[i]:SetHeight(maxScale.h); Powa_Frames[i].statut = 0; end end -- position au hasard + zoom in + fade elseif (PowaSet[i].anim1 == 6) then if (Powa_Frames[i]:GetAlpha() > 0) then curScale.a = Powa_Frames[i]:GetAlpha() - (elapsed * PowaSet[i].alpha * 0.5); if (curScale.a < 0) then Powa_Frames[i]:SetAlpha(0.0); else Powa_Frames[i]:SetAlpha(curScale.a); end maxScale.w = Powa_Frames[i]:GetWidth() + (elapsed * 100 * PowaSet[i].speed * PowaSet[i].size); maxScale.h = Powa_Frames[i]:GetHeight() + (elapsed * 100 * PowaSet[i].speed * PowaSet[i].size); if ( (maxScale.w * 1.5) > Powa_Frames[i]:GetWidth()) then -- evite les lags Powa_Frames[i]:SetWidth(maxScale.w) Powa_Frames[i]:SetHeight(maxScale.h) end else maxScale.w = random(0,10) - 5; maxScale.h = random(0,10) - 5; Powa_Frames[i]:SetAlpha(PowaSet[i].alpha); Powa_Frames[i]:SetWidth(curScale.w * 0.85); Powa_Frames[i]:SetHeight(curScale.h * 0.85); Powa_Frames[i]:SetPoint("Center",PowaSet[i].x + maxScale.w, PowaSet[i].y + maxScale.h); end -- static sauf parfois ou la texture est decalee + opaque (type electrique) elseif (PowaSet[i].anim1 == 7) then if (Powa_Frames[i].statut < 2) then Powa_Frames[i]:SetAlpha(PowaSet[i].alpha / 2); -- mi-alpha if (random( 210-(PowaSet[i].speed*100) ) == 1) then Powa_Frames[i].statut = 2; maxScale.w = random(0,10) - 5; maxScale.h = random(0,10) - 5; Powa_Frames[i]:SetPoint("Center",PowaSet[i].x + maxScale.w, PowaSet[i].y + maxScale.h); Powa_Frames[i]:SetAlpha(PowaSet[i].alpha); end else Powa_Frames[i]:SetPoint("Center",PowaSet[i].x, PowaSet[i].y); Powa_Frames[i].statut = 0; end -- zoom out + stop + fade elseif (PowaSet[i].anim1 == 8) then minScale.w = curScale.w; minScale.h = curScale.h; maxScale.w = curScale.w * 1.30; maxScale.h = curScale.h * 1.30; speedScale = (50 * PowaSet[i].speed) * PowaSet[i].size; if (Powa_Frames[i].statut == 0) then -- demarre le zoom out (max size) Powa_Frames[i]:SetWidth(maxScale.w); Powa_Frames[i]:SetHeight(maxScale.h); Powa_Frames[i]:SetAlpha(0.0); Powa_Frames[i].statut = 2; elseif (Powa_Frames[i].statut == 2) then -- zoom out + fade in Powa_Frames[i]:SetWidth( Powa_Frames[i]:GetWidth() - (elapsed * speedScale * PowaSet[i].torsion) ) Powa_Frames[i]:SetHeight( Powa_Frames[i]:GetHeight() - (elapsed * speedScale * (2-PowaSet[i].torsion) ) ) Powa_Frames[i]:SetAlpha( ((maxScale.w - Powa_Frames[i]:GetWidth()) / (maxScale.w - minScale.w)) * PowaSet[i].alpha ); if (Powa_Frames[i]:GetWidth() < curScale.w) then Powa_Frames[i]:SetWidth(curScale.w); Powa_Frames[i]:SetHeight(curScale.h); Powa_Frames[i].statut = 1; end elseif (Powa_Frames[i].statut == 1) then -- demarre le fade-out Powa_Frames[i]:SetWidth(curScale.w); Powa_Frames[i]:SetHeight(curScale.h); Powa_Frames[i]:SetAlpha(PowaSet[i].alpha); Powa_Frames[i].statut = 3; elseif (Powa_Frames[i].statut == 3) then -- fade-out curScale.a = Powa_Frames[i]:GetAlpha() - (elapsed / random(1,2)); if (curScale.a < 0.0) then Powa_Frames[i]:SetAlpha(0.0); Powa_Frames[i].statut = 0; else Powa_Frames[i]:SetAlpha(curScale.a); end end -- deplacement vers le haut + fade-out + reduction elseif (PowaSet[i].anim1 == 9) then speedScale = (50 * PowaSet[i].speed) * PowaSet[i].size; if (Powa_Frames[i].statut < 2) then -- debut Powa_Frames[i]:SetWidth(curScale.w); Powa_Frames[i]:SetHeight(curScale.h); Powa_Frames[i]:SetPoint("Center",PowaSet[i].x, PowaSet[i].y); Powa_Frames[i]:SetAlpha(PowaSet[i].alpha); Powa_Frames[i].statut = 2; else _,_,_,xOfs,yOfs = Powa_Frames[i]:GetPoint(); Powa_Frames[i]:SetPoint("Center",xOfs + (random(1,3)-2), yOfs + (elapsed * random(10,20))); curScale.a = Powa_Frames[i]:GetAlpha() - ( (elapsed / random(2,4)) * PowaSet[i].alpha); Powa_Frames[i]:SetWidth( Powa_Frames[i]:GetWidth() - (elapsed * speedScale * PowaSet[i].torsion) ) Powa_Frames[i]:SetHeight( Powa_Frames[i]:GetHeight() - (elapsed * speedScale * (2-PowaSet[i].torsion) ) ) if (curScale.a < 0.0) then Powa_Frames[i]:SetAlpha(0.0); Powa_Frames[i].statut = 1; else Powa_Frames[i]:SetAlpha(curScale.a); end end end -- si duration if (PowaSet[i].duration > 0) then -- ajoute le temps passe Powa_Frames[i].duree = Powa_Frames[i].duree + elapsed; end -- FADE OUT elseif Powa_Frames[i]:IsVisible() then if (PowaMisc.quickhide == false) then curScale.a = Powa_Frames[i]:GetAlpha() - (elapsed * 2); if (curScale.a <= 0) then Powa_Frames[i]:Hide(); else Powa_Frames[i]:SetAlpha(curScale.a); Powa_Frames[i]:SetWidth(Powa_Frames[i]:GetWidth() + (elapsed * 200) ); Powa_Frames[i]:SetHeight(Powa_Frames[i]:GetHeight() + (elapsed * 200) ); end else Powa_Frames[i]:Hide(); end end end Powa_ResetTimers(); -- reset Timers end -- ----------------------------------------------------------------------------- LIGNE DE COMMANDE function Powa_SlashHandler(msg) msgNumber = 0; if (msg == "") then -- aucun parametre, on ouvre/ferme les options if (PowaBarConfigFrame:IsVisible()) then Powa_OptionClose(); else Powa_OptionHideAll(); Powa_InitPage(); PowaModTest = true; PowaBarConfigFrame:Show(); end else -- y'a des parametres, on y travaille for a in string.gfind( msg, "maxtex (%d+)" ) do msgNumber = tonumber(a); if (msgNumber > 50) then msgNumber = 50; elseif (msgNumber < 20) then msgNumber = 2; end PowaGlobal.maxtextures = msgNumber; getglobal("PowaBarAuraTextureSlider"):SetMinMaxValues(1,msgNumber); getglobal("PowaBarAuraTextureSliderHigh"):SetText(msgNumber); DEFAULT_CHAT_FRAME:AddMessage("|cffB0A0ff|r "..PowaText.aideCommande2a.." "..a); return; end for a in string.gfind( msg, "maxeffect (%d+)" ) do msgNumber = tonumber(a); if (msgNumber > 100) then msgNumber = 100; elseif (msgNumber < 10) then msgNumber = 10; end PowaEnabled = 0; -- desactive temporairement les effets Powa_OptionHideAll(); -- cache tout les effets en cours MaxAuras = msgNumber; -- definie le max d'aura SecondeAura = MaxAuras + 1; -- definie la derniere aura CurrentTestAura = MaxAuras + 2; PowaGlobal.maxeffects = MaxAuras; -- sauve le nombre max d'effet Powa_InitTabs(); -- initialise les pages d'effets en plus Powa_CreateFrames(); -- cree les textures des effets en plus PowaEnabled = 1; -- reactive les effets CurrentAura = 1; -- defini l'effet en cours 1 Powa_InitPage(); -- initalise les pages des options DEFAULT_CHAT_FRAME:AddMessage("|cffB0A0ff|r "..PowaText.aideCommande3a.." "..a); return; end DEFAULT_CHAT_FRAME:AddMessage("|cffB0A0ff|r "..PowaText.aideCommande1); DEFAULT_CHAT_FRAME:AddMessage("|cffffff50 /powa maxtex ##|r : "..PowaText.aideCommande2); DEFAULT_CHAT_FRAME:AddMessage("|cffffff50 /powa maxeffect ##|r : "..PowaText.aideCommande3); end end -- --------------------------------------------------------------------------- GESTION DES OPTIONS function Powa_InitPage() getglobal("PowaBarAuraTextureSlider"):SetValue(PowaSet[CurrentAura].texture); getglobal("PowaBarAuraAlphaSlider"):SetValue(PowaSet[CurrentAura].alpha); getglobal("PowaBarAuraSizeSlider"):SetValue(PowaSet[CurrentAura].size); getglobal("PowaBarAuraCoordSlider"):SetValue(PowaSet[CurrentAura].y); getglobal("PowaBarAuraCoordXSlider"):SetValue(PowaSet[CurrentAura].x); getglobal("PowaBarAuraAnim2Slider"):SetValue(PowaSet[CurrentAura].anim2); getglobal("PowaBarAuraAnim1Slider"):SetValue(PowaSet[CurrentAura].anim1); getglobal("PowaBarAuraAnimSpeedSlider"):SetValue(PowaSet[CurrentAura].speed); getglobal("PowaBarAuraDurationSlider"):SetValue(PowaSet[CurrentAura].duration); getglobal("PowaBarAuraSymSlider"):SetValue(PowaSet[CurrentAura].symetrie); getglobal("PowaBarAuraDeformSlider"):SetValue(PowaSet[CurrentAura].torsion); getglobal("PowaBarBuffName"):SetText(PowaSet[CurrentAura].buffname); getglobal("AuraTexture"):SetTexture("Interface\\Addons\\PowerAuras\\Aura"..PowaSet[CurrentAura].texture..".tga"); getglobal("PowaColorNormalTexture"):SetVertexColor(PowaSet[CurrentAura].r,PowaSet[CurrentAura].g,PowaSet[CurrentAura].b); getglobal("AuraTexture"):SetVertexColor(PowaSet[CurrentAura].r,PowaSet[CurrentAura].g,PowaSet[CurrentAura].b); getglobal("PowaColor_SwatchBg").r = PowaSet[CurrentAura].r; getglobal("PowaColor_SwatchBg").g = PowaSet[CurrentAura].g; getglobal("PowaColor_SwatchBg").b = PowaSet[CurrentAura].b; getglobal("PowaHeader"):SetText("POWER AURAS "..PowaVersion); getglobal("powa_Text"):SetText(PowaText.nomTitre.." "..CurrentAura.."/"..MaxAuras); getglobal("PowaHideAllButton"):SetText(PowaText.nomHide); getglobal("PowaTestButton"):SetText(PowaText.nomTest); getglobal("PowaCloseButton"):SetText(PowaText.nomClose); getglobal("PowaListButton"):SetText(PowaText.nomListe); if (PowaSet[CurrentAura].isdebuff) then getglobal("PowaDebuffButton"):SetChecked(true); getglobal("PowaDebuffTypeButton"):SetChecked(false); getglobal("PowaBarBuffNameText"):SetText(PowaText.nomDebuff); getglobal("PowaBarBuffName").aide = PowaText.aideBuff2; elseif (PowaSet[CurrentAura].isdebufftype) then getglobal("PowaDebuffTypeButton"):SetChecked(true); getglobal("PowaDebuffButton"):SetChecked(false); getglobal("PowaBarBuffNameText"):SetText(PowaText.nomDebuffType); getglobal("PowaBarBuffName").aide = PowaText.aideBuff3; else getglobal("PowaDebuffButton"):SetChecked(false); getglobal("PowaDebuffTypeButton"):SetChecked(false); getglobal("PowaBarBuffNameText"):SetText(PowaText.nomBuff); getglobal("PowaBarBuffName").aide = PowaText.aideBuff; end getglobal("PowaShowTimerButton"):SetChecked(PowaSet[CurrentAura].timer); getglobal("PowaInverseButton"):SetChecked(PowaSet[CurrentAura].inverse); if (PowaSet[CurrentAura].inverse) then PowaSet[CurrentAura].timer = false; getglobal("PowaShowTimerButton"):SetChecked(PowaSet[CurrentAura].timer); Powa_DisableCheckBox("PowaShowTimerButton"); else Powa_EnableCheckBox("PowaShowTimerButton"); end end function Powa_ChangePagePrev() -- page precedente if (CurrentAura == 1) then CurrentAura = MaxAuras; else CurrentAura = CurrentAura - 1; end Powa_InitPage(); end function Powa_ChangePageNext() -- page suivante if (CurrentAura == MaxAuras) then CurrentAura = 1; else CurrentAura = CurrentAura + 1; end Powa_InitPage(); end function Powa_UpdateAura() -- met a jour l'effet apres modification d'options if (PowaEnabled == 0) then return; end -- desactived Powa_FramesVisibleTime[CurrentAura] = 0; Powa_FramesVisibleTime[SecondeAura] = 0; if (Powa_Frames[CurrentAura]:IsVisible()) then -- sinon on affiche seulement si deja visible Powa_DisplayAura(CurrentAura); end end function Powa_OptionClose() -- ferme la fenetre d'option PowaModTest = false; getglobal("PowaBarConfigFrame"):Hide(); getglobal("PowaListFrame"):Hide(); -- cache tous les effets en test for i = 1, MaxAuras+2 do if (PowaSet[i].duration > 0) then Powa_Frames[i].duree = 31; -- force affiche et mode transparent Powa_Frames[i]:Show(); Powa_Frames[i]:SetAlpha(0.0); Powa_FramesVisibleTime[i] = 1; else Powa_FramesVisibleTime[i] = 0; end end Powa_NewCheckBuffs(); -- detect les effets en cours end function Powa_OptionTest() -- teste ou masque l'effet choisi if (Powa_Frames[CurrentAura]:IsVisible()) then -- deja visible, on la cache Powa_FramesVisibleTime[CurrentAura] = 0; Powa_FramesVisibleTime[SecondeAura] = 0; else -- pas visible alors on affiche Powa_DisplayAura(CurrentAura); end end function Powa_OptionHideAll() -- cache tous les effets -- cache tous les effets en test for i = 1, MaxAuras+2 do Powa_FramesVisibleTime[i] = 0; end end -- ---------------------------------------------------------------------------------- FENETRE D'OPTION function PowaBarAuraTextureSliderChanged() local SliderValue = getglobal("PowaBarAuraTextureSlider"):GetValue(); getglobal("PowaBarAuraTextureSliderText"):SetText(PowaText.nomTexture.." : "..SliderValue); getglobal("AuraTexture"):SetTexture("Interface\\Addons\\PowerAuras\\Aura"..SliderValue..".tga"); PowaSet[CurrentAura].texture = SliderValue; Powa_UpdateAura(); end function PowaBarAuraAlphaSliderChanged() local SliderValue = getglobal("PowaBarAuraAlphaSlider"):GetValue(); getglobal("PowaBarAuraAlphaSliderText"):SetText(PowaText.nomAlpha.." : "..format("%.2f", SliderValue) ); PowaSet[CurrentAura].alpha = SliderValue; Powa_UpdateAura(); end function PowaBarAuraSizeSliderChanged() local SliderValue = getglobal("PowaBarAuraSizeSlider"):GetValue(); getglobal("PowaBarAuraSizeSliderText"):SetText(PowaText.nomTaille.." : "..format("%.2f", SliderValue) ); PowaSet[CurrentAura].size = SliderValue; Powa_UpdateAura(); end function PowaBarAuraCoordSliderChanged() local SliderValue = getglobal("PowaBarAuraCoordSlider"):GetValue(); getglobal("PowaBarAuraCoordSliderText"):SetText(PowaText.nomPos.." Y : "..SliderValue); PowaSet[CurrentAura].y = SliderValue; Powa_UpdateAura(); end function PowaBarAuraCoordXSliderChanged() local SliderValue = getglobal("PowaBarAuraCoordXSlider"):GetValue(); getglobal("PowaBarAuraCoordXSliderText"):SetText(PowaText.nomPos.." X : "..SliderValue); PowaSet[CurrentAura].x = SliderValue; Powa_UpdateAura(); end function PowaBarAuraAnim2SliderChanged() local SliderValue = getglobal("PowaBarAuraAnim2Slider"):GetValue(); getglobal("PowaBarAuraAnim2SliderText"):SetText(PowaText.nomAnim2.." : "..SliderValue); PowaSet[CurrentAura].anim2 = SliderValue; Powa_UpdateAura(); end function PowaBarAuraAnim1SliderChanged() local SliderValue = getglobal("PowaBarAuraAnim1Slider"):GetValue(); getglobal("PowaBarAuraAnim1SliderText"):SetText(PowaText.nomAnim1.." : "..SliderValue); PowaSet[CurrentAura].anim1 = SliderValue; Powa_UpdateAura(); end function PowaBarAuraAnimSpeedSliderChanged() local SliderValue = getglobal("PowaBarAuraAnimSpeedSlider"):GetValue(); getglobal("PowaBarAuraAnimSpeedSliderText"):SetText(PowaText.nomSpeed.." : "..format("%.0f",SliderValue*100).."%"); PowaSet[CurrentAura].speed = SliderValue; Powa_UpdateAura(); end function PowaBarAuraAnimDurationSliderChanged() local SliderValue = getglobal("PowaBarAuraDurationSlider"):GetValue(); getglobal("PowaBarAuraDurationSliderText"):SetText(PowaText.nomDuration.." : "..SliderValue.." sec"); PowaSet[CurrentAura].duration = SliderValue; Powa_UpdateAura(); end function PowaBarAuraSymSliderChanged() local SliderValue = getglobal("PowaBarAuraSymSlider"):GetValue(); if (SliderValue == 0) then getglobal("PowaBarAuraSymSliderText"):SetText(PowaText.nomSymetrie.." : "..PowaText.aucune); elseif (SliderValue == 1) then getglobal("PowaBarAuraSymSliderText"):SetText(PowaText.nomSymetrie.." : X"); elseif (SliderValue == 2) then getglobal("PowaBarAuraSymSliderText"):SetText(PowaText.nomSymetrie.." : Y"); elseif (SliderValue == 3) then getglobal("PowaBarAuraSymSliderText"):SetText(PowaText.nomSymetrie.." : XY"); end PowaSet[CurrentAura].symetrie = SliderValue; Powa_UpdateAura(); end function PowaBarAuraDeformSliderChanged() local SliderValue = getglobal("PowaBarAuraDeformSlider"):GetValue(); getglobal("PowaBarAuraDeformSliderText"):SetText(PowaText.nomDeform.." : "..format("%.2f", SliderValue)); PowaSet[CurrentAura].torsion = SliderValue; Powa_UpdateAura(); end function PowaMaxTexSliderChanged() local SliderValue = getglobal("PowaMaxTexSlider"):GetValue(); getglobal("PowaMaxTexSliderText"):SetText(PowaText.nomMaxTex.." : "..SliderValue); getglobal("PowaBarAuraTextureSlider"):SetMinMaxValues(1,SliderValue); getglobal("PowaBarAuraTextureSliderHigh"):SetText(SliderValue); PowaGlobal.maxtextures = SliderValue; end function PowaTextChanged() PowaSet[CurrentAura].buffname = getglobal("PowaBarBuffName"):GetText(); end function PowaDebuffChecked() if (getglobal("PowaDebuffButton"):GetChecked()) then PowaSet[CurrentAura].isdebuff = true; PowaSet[CurrentAura].isdebufftype = false; getglobal("PowaDebuffTypeButton"):SetChecked(false); getglobal("PowaBarBuffNameText"):SetText(PowaText.nomDebuff); getglobal("PowaBarBuffName").aide = PowaText.aideBuff2; else PowaSet[CurrentAura].isdebuff = false; getglobal("PowaBarBuffNameText"):SetText(PowaText.nomBuff); getglobal("PowaBarBuffName").aide = PowaText.aideBuff; end Powa_UpdateList(); end function PowaDebuffTypeChecked() if (getglobal("PowaDebuffTypeButton"):GetChecked()) then PowaSet[CurrentAura].isdebufftype = true; PowaSet[CurrentAura].isdebuff = false; getglobal("PowaDebuffButton"):SetChecked(false); getglobal("PowaBarBuffNameText"):SetText(PowaText.nomDebuffType); getglobal("PowaBarBuffName").aide = PowaText.aideBuff3; else PowaSet[CurrentAura].isdebufftype = false; getglobal("PowaBarBuffNameText"):SetText(PowaText.nomBuff); getglobal("PowaBarBuffName").aide = PowaText.aideBuff; end Powa_UpdateList(); end function PowaQuickHideChecked() if (getglobal("PowaQuickHideButton"):GetChecked()) then PowaMisc.quickhide = true; else PowaMisc.quickhide = false; end end function PowaShowTimerChecked() if (getglobal("PowaShowTimerButton"):GetChecked()) then PowaSet[CurrentAura].timer = true; else PowaSet[CurrentAura].timer = false; end end function PowaInverseChecked() if (getglobal("PowaInverseButton"):GetChecked()) then PowaSet[CurrentAura].inverse = true; PowaSet[CurrentAura].timer = false; getglobal("PowaShowTimerButton"):SetChecked(false); Powa_DisableCheckBox("PowaShowTimerButton"); else PowaSet[CurrentAura].inverse = false; Powa_EnableCheckBox("PowaShowTimerButton"); end end function Powa_DisableCheckBox(checkBox) getglobal(checkBox):Disable(); getglobal(checkBox.."Text"):SetTextColor(GRAY_FONT_COLOR.r, GRAY_FONT_COLOR.g, GRAY_FONT_COLOR.b); end function Powa_EnableCheckBox(checkBox, checked) getglobal(checkBox):Enable(); getglobal(checkBox.."Text"):SetTextColor(NORMAL_FONT_COLOR.r, NORMAL_FONT_COLOR.g, NORMAL_FONT_COLOR.b); end -- ---------------------------------------------------------------------------- OPTIONS DEPLACEMENT function PowaBar_MouseDown( strButton, frmFrame) if( strButton == "LeftButton") then getglobal( frmFrame ):StartMoving( ); end end function PowaBar_MouseUp( strButton, frmFrame) getglobal( frmFrame ):StopMovingOrSizing( ); end -- ----------------------------------------------------------------------------------- COLOR PICKER function PowaOptionsFrame_SetColor() local r,g,b = ColorPickerFrame:GetColorRGB(); local swatch,frame; swatch = getglobal("PowaColorNormalTexture"); -- juste le visuel frame = getglobal("PowaColor_SwatchBg"); -- enregistre la couleur swatch:SetVertexColor(r,g,b); frame.r = r; frame.g = g; frame.b = b; PowaSet[CurrentAura].r = r; PowaSet[CurrentAura].g = g; PowaSet[CurrentAura].b = b; getglobal("AuraTexture"):SetVertexColor(r,g,b); Powa_UpdateAura(); end function PowaOptionsFrame_CancelColor() local r = ColorPickerFrame.previousValues.r; local g = ColorPickerFrame.previousValues.g; local b = ColorPickerFrame.previousValues.b; local swatch,frame; swatch = getglobal("PowaColorNormalTexture"); -- juste le visuel frame = getglobal("PowaColor_SwatchBg"); -- enregistre la couleur swatch:SetVertexColor(r,g,b); frame.r = r; frame.g = g; frame.b = b; getglobal("AuraTexture"):SetVertexColor(r,g,b); end function Powa_OpenColorPicker() CloseMenus(); button = getglobal("PowaColor_SwatchBg"); ColorPickerFrame.func = PowaOptionsFrame_SetColor -- button.swatchFunc; ColorPickerFrame:SetColorRGB(button.r, button.g, button.b); ColorPickerFrame.previousValues = {r = button.r, g = button.g, b = button.b, opacity = button.opacity}; ColorPickerFrame.cancelFunc = PowaOptionsFrame_CancelColor ColorPickerFrame:SetPoint("TOPLEFT", "PowaBarConfigFrame", "TOPRIGHT", 0, 0) ColorPickerFrame:Show(); end