Rewrite on Faders: Details.FadeHandler.Fader(frame, animationType, speed, hideType)
This commit is contained in:
+293
-34
@@ -7,7 +7,7 @@
|
||||
--> local pointers
|
||||
|
||||
local _table_insert = table.insert --lua local
|
||||
local _upper = string.upper --lua local
|
||||
local upper = string.upper --lua local
|
||||
local _ipairs = ipairs --lua local
|
||||
local _pairs = pairs --lua local
|
||||
local _math_floor = math.floor --lua local
|
||||
@@ -15,7 +15,7 @@
|
||||
local _math_abs = math.abs --lua local
|
||||
local _math_min = math.min --lua local
|
||||
local _math_random = math.random --lua local
|
||||
local _type = type --lua local
|
||||
local type = type --lua local
|
||||
local _string_match = string.match --lua local
|
||||
local _string_byte = string.byte --lua local
|
||||
local _string_len = string.lenv
|
||||
@@ -33,12 +33,275 @@
|
||||
local _GetNumGroupMembers = GetNumGroupMembers --wow api local
|
||||
local _UnitAffectingCombat = UnitAffectingCombat --wow api local
|
||||
local _GameTooltip = GameTooltip --wow api local
|
||||
local _UIFrameFadeIn = UIFrameFadeIn --wow api local
|
||||
local _UIFrameFadeOut = UIFrameFadeOut --wow api local
|
||||
--local _UIFrameFadeIn = UIFrameFadeIn --wow api local
|
||||
--local _UIFrameFadeOut = UIFrameFadeOut --wow api local
|
||||
local _InCombatLockdown = InCombatLockdown --wow api local
|
||||
|
||||
local gump = _detalhes.gump --details local
|
||||
|
||||
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
--> fade handler
|
||||
|
||||
Details.FadeHandler = {
|
||||
frames = {}
|
||||
}
|
||||
|
||||
|
||||
--fade in is hidding the frame, it is the opposite of the stardard
|
||||
local fadeINFinishedCallback = function(frame)
|
||||
if (frame.fading_in) then
|
||||
frame.hidden = true
|
||||
frame.faded = true
|
||||
frame.fading_in = false
|
||||
frame:Hide()
|
||||
end
|
||||
end
|
||||
|
||||
--fade out is showing the frame
|
||||
local fadeOUTFinishedCallback = function(frame)
|
||||
if (frame:IsShown() and frame.fading_out) then
|
||||
frame.hidden = false
|
||||
frame.faded = false
|
||||
frame.fading_out = false
|
||||
else
|
||||
frame:SetAlpha(0)
|
||||
end
|
||||
end
|
||||
|
||||
local just_fade_func = function(frame)
|
||||
frame.hidden = false
|
||||
frame.faded = true
|
||||
frame.fading_in = false
|
||||
end
|
||||
|
||||
local cancelFadeAnimation = function(frame)
|
||||
Details.FadeHandler.frames[frame] = nil
|
||||
end
|
||||
|
||||
Details.FadeHandler.OnUpdateFrame = CreateFrame("frame", "DetailsFadeFrameOnUpdate", UIParent)
|
||||
Details.FadeHandler.OnUpdateFrame:SetScript("OnUpdate", function(self, deltaTime)
|
||||
for frame, frameSettings in pairs(Details.FadeHandler.frames) do
|
||||
local totalTime = frameSettings.totalTime
|
||||
local initAlpha = frameSettings.startAlpha
|
||||
local targetAlpha = frameSettings.endAlpha
|
||||
|
||||
frameSettings.elapsed = frameSettings.elapsed + deltaTime
|
||||
local currentAlpha = Lerp(initAlpha, targetAlpha, frameSettings.elapsed / totalTime)
|
||||
|
||||
if (frameSettings.elapsed >= totalTime) then
|
||||
frame:SetAlpha(targetAlpha)
|
||||
frameSettings.finishedCallback(frame)
|
||||
--remove the frame from the list
|
||||
Details.FadeHandler.frames[frame] = nil
|
||||
else
|
||||
frame:SetAlpha(currentAlpha)
|
||||
end
|
||||
end
|
||||
end)
|
||||
|
||||
--fade in is hidding the frame
|
||||
local startFadeINAnimation = function(frame, totalTime, startAlpha, endAlpha, callbackFunc)
|
||||
frame.fading_out = nil
|
||||
frame.fading_in = true
|
||||
|
||||
Details.FadeHandler.frames[frame] = {
|
||||
totalTime = totalTime or 0.3,
|
||||
startAlpha = startAlpha or frame:GetAlpha(),
|
||||
endAlpha = endAlpha or 0,
|
||||
finishedCallback = callbackFunc or fadeINFinishedCallback,
|
||||
elapsed = 0,
|
||||
}
|
||||
end
|
||||
|
||||
--fade out is showing the frame
|
||||
local startFadeOUTAnimation = function(frame, totalTime, startAlpha, endAlpha, callbackFunc)
|
||||
frame.fading_in = nil
|
||||
frame.fading_out = true
|
||||
|
||||
Details.FadeHandler.frames[frame] = {
|
||||
totalTime = totalTime or 0.3,
|
||||
startAlpha = startAlpha or frame:GetAlpha() or 0,
|
||||
endAlpha = endAlpha or 1,
|
||||
finishedCallback = callbackFunc or fadeOUTFinishedCallback,
|
||||
elapsed = 0,
|
||||
}
|
||||
end
|
||||
|
||||
function Details.FadeHandler.Fader(frame, animationType, speed, hideType, param5)
|
||||
if (frame == nil) then
|
||||
frame, animationType, speed, hideType = animationType, speed, hideType, param5
|
||||
end
|
||||
|
||||
--if is a table, might be passed an instance object
|
||||
if (type(frame) == "table") then
|
||||
--is it an instance
|
||||
if (frame.meu_id) then
|
||||
|
||||
local instance = frame
|
||||
|
||||
--hide all bars in the instance
|
||||
if (hideType == "barras") then
|
||||
if (speed) then
|
||||
for i = 1, instance.rows_created do
|
||||
local instanceBar = instance.barras[i]
|
||||
Details.FadeHandler.Fader(instanceBar, animationType, speed)
|
||||
end
|
||||
return
|
||||
else
|
||||
speed = speed or 0.3
|
||||
for i = 1, instance.rows_created do
|
||||
local instanceBar = instance.barras[i]
|
||||
Details.FadeHandler.Fader(instanceBar, animationType, 0.3+(i/10))
|
||||
end
|
||||
return
|
||||
end
|
||||
|
||||
--instant hide all bars in the instance
|
||||
elseif (hideType == "hide_barras") then
|
||||
for i = 1, instance.rows_created do
|
||||
local instanceBar = instance.barras[i]
|
||||
if (instanceBar.fading_in or instanceBar.fading_out) then
|
||||
startFadeINAnimation(instanceBar, 0.01, instanceBar:GetAlpha(), instanceBar:GetAlpha())
|
||||
-- _UIFrameFadeIn (instanceBar, 0.01, instanceBar:GetAlpha(), instanceBar:GetAlpha())
|
||||
end
|
||||
instanceBar.hidden = true
|
||||
instanceBar.faded = true
|
||||
instanceBar.fading_in = false
|
||||
instanceBar.fading_out = false
|
||||
instanceBar:Hide()
|
||||
instanceBar:SetAlpha(0)
|
||||
end
|
||||
return
|
||||
end
|
||||
|
||||
--if is a framework widget
|
||||
elseif (frame.dframework) then
|
||||
frame = frame.widget
|
||||
end
|
||||
end
|
||||
|
||||
speed = speed or 0.3
|
||||
--animationType = upper(animationType)
|
||||
|
||||
--hide all instanceBars on all instances
|
||||
if (frame == "all") then
|
||||
for _, instancia in _ipairs(_detalhes.tabela_instancias) do
|
||||
if (hideType == "barras") then
|
||||
for i = 1, instancia.rows_created do
|
||||
local instanceBar = instancia.barras[i]
|
||||
Details.FadeHandler.Fader(instanceBar, animationType, speed+(i/10))
|
||||
end
|
||||
end
|
||||
end
|
||||
return
|
||||
|
||||
elseif (upper(animationType) == "IN") then --hide the frame
|
||||
|
||||
--check if already hidden
|
||||
if (frame:GetAlpha() == 0 and frame.hidden and not frame.fading_out) then
|
||||
return
|
||||
--chekc if already with an animation going on
|
||||
elseif (frame.fading_in) then
|
||||
return
|
||||
end
|
||||
|
||||
--cancel face out animation if exists
|
||||
if (frame.fading_out) then
|
||||
frame.fading_out = false
|
||||
end
|
||||
|
||||
-- _UIFrameFadeIn (frame, speed, frame:GetAlpha(), 0)
|
||||
startFadeINAnimation(frame, speed, frame:GetAlpha(), 0)
|
||||
|
||||
elseif (upper(animationType) == "OUT") then --show the frame
|
||||
|
||||
if (frame:GetAlpha() == 1 and not frame.hidden and not frame.fading_in) then --> ja esta na tela
|
||||
return
|
||||
elseif (frame.fading_out) then --> j� ta com fading out
|
||||
return
|
||||
end
|
||||
|
||||
if (frame.fading_in) then --> se tiver uma anima��o de hidar em andamento se for true
|
||||
frame.fading_in = false
|
||||
end
|
||||
|
||||
frame:Show()
|
||||
-- _UIFrameFadeOut (frame, speed, frame:GetAlpha(), 1.0)
|
||||
startFadeOUTAnimation(frame, speed, frame:GetAlpha(), 1.0)
|
||||
frame.fading_out = true
|
||||
|
||||
elseif (animationType == 0) then --force show the frame
|
||||
frame.hidden = false
|
||||
frame.faded = false
|
||||
frame.fading_out = false
|
||||
frame.fading_in = false
|
||||
cancelFadeAnimation(frame) --cancel any ongoing animation
|
||||
frame:Show()
|
||||
frame:SetAlpha(1)
|
||||
|
||||
elseif (animationType == 1) then --force hide the frame
|
||||
frame.hidden = true
|
||||
frame.faded = true
|
||||
frame.fading_out = false
|
||||
frame.fading_in = false
|
||||
cancelFadeAnimation(frame) --cancel any ongoing animation
|
||||
frame:SetAlpha(0)
|
||||
frame:Hide()
|
||||
|
||||
elseif (animationType == -1) then --just fade to zero without hidding the frame
|
||||
--check already hidden
|
||||
if (frame:GetAlpha() == 0 and frame.hidden and not frame.fading_out) then
|
||||
return
|
||||
--check already hidding
|
||||
elseif (frame.fading_in) then
|
||||
return
|
||||
end
|
||||
|
||||
if (frame.fading_out) then
|
||||
frame.fading_out = false
|
||||
end
|
||||
|
||||
startFadeINAnimation(frame, speed, frame:GetAlpha(), 0, just_fade_func)
|
||||
-- _UIFrameFadeIn (frame, speed, frame:GetAlpha(), 0)
|
||||
|
||||
elseif (upper(animationType) == "ALPHAANIM") then
|
||||
|
||||
local value = speed
|
||||
local currentApha = frame:GetAlpha()
|
||||
frame:Show()
|
||||
|
||||
if (currentApha < value) then
|
||||
if (frame.fading_in) then
|
||||
frame.fading_in = false
|
||||
end
|
||||
startFadeOUTAnimation(frame, 0.3, currentApha, value, function(frame) frame.fading_out = false end)
|
||||
-- _UIFrameFadeOut (frame, 0.3, currentApha, value)
|
||||
|
||||
else
|
||||
if (frame.fading_out) then
|
||||
frame.fading_out = false
|
||||
end
|
||||
|
||||
-- _UIFrameFadeIn (frame, 0.3, currentApha, value)
|
||||
startFadeINAnimation(frame, 0.3, currentApha, value, function(frame) frame.fading_in = false end)
|
||||
end
|
||||
|
||||
--set a fixed alpha value
|
||||
elseif (upper(animationType) == "ALPHA") then
|
||||
local alphaAmount = speed
|
||||
|
||||
if (frame.fading_in or frame.fading_out) then
|
||||
startFadeINAnimation(frame, speed, alphaAmount, alphaAmount)
|
||||
end
|
||||
frame.hidden = false
|
||||
frame.faded = false
|
||||
frame.fading_in = false
|
||||
frame.fading_out = false
|
||||
frame:Show()
|
||||
frame:SetAlpha(alphaAmount)
|
||||
end
|
||||
end
|
||||
|
||||
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||||
--> details api functions
|
||||
|
||||
@@ -91,7 +354,7 @@
|
||||
|
||||
--> get the fractional number representing the alphabetical letter
|
||||
function _detalhes:GetOrderNumber (who_name)
|
||||
--local name = _upper (who_name .. "zz")
|
||||
--local name = upper (who_name .. "zz")
|
||||
--local byte1 = _math_abs (_string_byte (name, 2)-91)/1000000
|
||||
--return byte1 + _math_abs (_string_byte (name, 1)-91)/10000
|
||||
return _math_random (1000, 9000) / 1000000
|
||||
@@ -563,10 +826,9 @@
|
||||
--yah, i know
|
||||
|
||||
function _detalhes.table.copy (t1, t2)
|
||||
local table_deepcopy = table_deepcopy
|
||||
for key, value in pairs (t2) do
|
||||
if (type (value) == "table") then
|
||||
t1 [key] = table_deepcopy (value)
|
||||
t1 [key] = Details.CopyTable (value)
|
||||
else
|
||||
t1 [key] = value
|
||||
end
|
||||
@@ -611,7 +873,7 @@
|
||||
|
||||
for key, value in pairs (t) do
|
||||
|
||||
local tpe = _type (value)
|
||||
local tpe = type (value)
|
||||
|
||||
if (type (key) == "function") then
|
||||
key = "#function#"
|
||||
@@ -801,7 +1063,7 @@ end
|
||||
function _detalhes:SetFontOutline (fontString, outline)
|
||||
local fonte, size = fontString:GetFont()
|
||||
if (outline) then
|
||||
if (_type (outline) == "boolean" and outline) then
|
||||
if (type (outline) == "boolean" and outline) then
|
||||
outline = "OUTLINE"
|
||||
elseif (outline == 1) then
|
||||
outline = "OUTLINE"
|
||||
@@ -863,7 +1125,7 @@ end
|
||||
end
|
||||
return true
|
||||
|
||||
elseif ((_detalhes.zone_type == "pvp" and _detalhes.use_battleground_server_parser) or _detalhes.zone_type == "arena" or _InCombatLockdown()) then
|
||||
elseif ((_detalhes.zonetype == "pvp" and _detalhes.use_battleground_server_parser) or _detalhes.zonetype == "arena" or _InCombatLockdown()) then
|
||||
return true
|
||||
|
||||
elseif (_UnitAffectingCombat("player")) then
|
||||
@@ -1043,7 +1305,7 @@ end
|
||||
end
|
||||
end
|
||||
|
||||
if (EndFunction and _type (EndFunction) == "string") then
|
||||
if (EndFunction and type (EndFunction) == "string") then
|
||||
EndFunction = loadstring (EndFunction) or false
|
||||
end
|
||||
|
||||
@@ -1151,14 +1413,7 @@ end
|
||||
|
||||
--> todo: remove the function creation everytime this function run.
|
||||
|
||||
local fade_IN_finished_func = function (frame)
|
||||
if (frame.fading_in) then
|
||||
frame.hidden = true
|
||||
frame.faded = true
|
||||
frame.fading_in = false
|
||||
frame:Hide()
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
local fade_OUT_finished_func = function (frame)
|
||||
if (frame:IsShown() and frame.fading_out) then
|
||||
@@ -1183,22 +1438,26 @@ end
|
||||
local anim_IN_alpha_func = function (frame)
|
||||
frame.fading_in = false
|
||||
end
|
||||
|
||||
|
||||
--this functions should be called anymore
|
||||
function gump:Fade (frame, tipo, velocidade, parametros)
|
||||
|
||||
a = a + 1 --throw an error if called
|
||||
|
||||
if (_type (frame) == "table") then
|
||||
if (type (frame) == "table") then
|
||||
|
||||
if (frame.meu_id) then --> ups, � uma inst�ncia
|
||||
if (parametros == "barras") then --> hida todas as barras da inst�ncia
|
||||
if (velocidade) then
|
||||
for i = 1, frame.rows_created, 1 do
|
||||
gump:Fade (frame.barras[i], tipo, velocidade)
|
||||
Details.FadeHandler.Fader (frame.barras[i], tipo, velocidade)
|
||||
end
|
||||
return
|
||||
else
|
||||
velocidade = velocidade or 0.3
|
||||
for i = 1, frame.rows_created, 1 do
|
||||
gump:Fade (frame.barras[i], tipo, 0.3+(i/10))
|
||||
Details.FadeHandler.Fader (frame.barras[i], tipo, 0.3+(i/10))
|
||||
end
|
||||
return
|
||||
end
|
||||
@@ -1207,7 +1466,7 @@ end
|
||||
local esta_barra = frame.barras[i]
|
||||
if (esta_barra.fading_in or esta_barra.fading_out) then
|
||||
esta_barra.fadeInfo.finishedFunc = nil
|
||||
_UIFrameFadeIn (esta_barra, 0.01, esta_barra:GetAlpha(), esta_barra:GetAlpha())
|
||||
-- _UIFrameFadeIn (esta_barra, 0.01, esta_barra:GetAlpha(), esta_barra:GetAlpha())
|
||||
end
|
||||
esta_barra.hidden = true
|
||||
esta_barra.faded = true
|
||||
@@ -1230,12 +1489,12 @@ end
|
||||
for _, instancia in _ipairs (_detalhes.tabela_instancias) do
|
||||
if (parametros == "barras") then --> hida todas as barras da inst�ncia
|
||||
for i = 1, instancia.rows_created, 1 do
|
||||
gump:Fade (instancia.barras[i], tipo, velocidade+(i/10))
|
||||
Details.FadeHandler.Fader (instancia.barras[i], tipo, velocidade+(i/10))
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
elseif (_upper (tipo) == "IN") then
|
||||
elseif (upper (tipo) == "IN") then
|
||||
|
||||
if (frame:GetAlpha() == 0 and frame.hidden and not frame.fading_out) then --> ja esta escondida
|
||||
return
|
||||
@@ -1247,13 +1506,13 @@ end
|
||||
frame.fading_out = false
|
||||
end
|
||||
|
||||
_UIFrameFadeIn (frame, velocidade, frame:GetAlpha(), 0)
|
||||
-- _UIFrameFadeIn (frame, velocidade, frame:GetAlpha(), 0)
|
||||
frame.fading_in = true
|
||||
|
||||
frame.fadeInfo.finishedFunc = fade_IN_finished_func
|
||||
frame.fadeInfo.finishedArg1 = frame
|
||||
|
||||
elseif (_upper (tipo) == "OUT") then --> aparecer
|
||||
elseif (upper (tipo) == "OUT") then --> aparecer
|
||||
|
||||
if (frame:GetAlpha() == 1 and not frame.hidden and not frame.fading_in) then --> ja esta na tela
|
||||
return
|
||||
@@ -1266,7 +1525,7 @@ end
|
||||
end
|
||||
|
||||
frame:Show()
|
||||
_UIFrameFadeOut (frame, velocidade, frame:GetAlpha(), 1.0)
|
||||
-- _UIFrameFadeOut (frame, velocidade, frame:GetAlpha(), 1.0)
|
||||
frame.fading_out = true
|
||||
|
||||
frame.fadeInfo.finishedFunc = fade_OUT_finished_func
|
||||
@@ -1299,12 +1558,12 @@ end
|
||||
frame.fading_out = false
|
||||
end
|
||||
|
||||
_UIFrameFadeIn (frame, velocidade, frame:GetAlpha(), 0)
|
||||
-- _UIFrameFadeIn (frame, velocidade, frame:GetAlpha(), 0)
|
||||
frame.fading_in = true
|
||||
frame.fadeInfo.finishedFunc = just_fade_func
|
||||
frame.fadeInfo.finishedArg1 = frame
|
||||
|
||||
elseif (_upper (tipo) == "ALPHAANIM") then
|
||||
elseif (upper (tipo) == "ALPHAANIM") then
|
||||
|
||||
local value = velocidade
|
||||
local currentApha = frame:GetAlpha()
|
||||
@@ -1315,7 +1574,7 @@ end
|
||||
frame.fading_in = false
|
||||
frame.fadeInfo.finishedFunc = nil
|
||||
end
|
||||
_UIFrameFadeOut (frame, 0.3, currentApha, value)
|
||||
-- _UIFrameFadeOut (frame, 0.3, currentApha, value)
|
||||
frame.fading_out = true
|
||||
|
||||
frame.fadeInfo.finishedFunc = anim_OUT_alpha_func
|
||||
@@ -1326,17 +1585,17 @@ end
|
||||
frame.fading_out = false
|
||||
frame.fadeInfo.finishedFunc = nil
|
||||
end
|
||||
_UIFrameFadeIn (frame, 0.3, currentApha, value)
|
||||
-- _UIFrameFadeIn (frame, 0.3, currentApha, value)
|
||||
frame.fading_in = true
|
||||
|
||||
frame.fadeInfo.finishedFunc = anim_IN_alpha_func
|
||||
frame.fadeInfo.finishedArg1 = frame
|
||||
end
|
||||
|
||||
elseif (_upper (tipo) == "ALPHA") then --> setando um alpha determinado
|
||||
elseif (upper (tipo) == "ALPHA") then --> setando um alpha determinado
|
||||
if (frame.fading_in or frame.fading_out) then
|
||||
frame.fadeInfo.finishedFunc = nil
|
||||
_UIFrameFadeIn (frame, velocidade, frame:GetAlpha(), frame:GetAlpha())
|
||||
-- _UIFrameFadeIn (frame, velocidade, frame:GetAlpha(), frame:GetAlpha())
|
||||
end
|
||||
frame.hidden = false
|
||||
frame.faded = false
|
||||
|
||||
Reference in New Issue
Block a user