castbar: code optimization

This commit is contained in:
shagu
2017-01-05 04:24:31 +01:00
parent d249595d1a
commit d7539e8f4e
+47 -27
View File
@@ -110,20 +110,32 @@ pfUI:RegisterModule("castbar", function ()
elseif event == "SPELLCAST_STOP" then elseif event == "SPELLCAST_STOP" then
if pfUI.castbar.player.casting then if pfUI.castbar.player.casting then
pfUI.castbar.player.fadeout = 1 pfUI.castbar.player.fadeout = 1
pfUI.castbar.player.casting = nil
pfUI.castbar.player.bar:SetMinMaxValues(1,pfUI.castbar.player.bar:GetValue()) pfUI.castbar.player.bar:SetMinMaxValues(1,pfUI.castbar.player.bar:GetValue())
end end
elseif event == "SPELLCAST_CHANNEL_STOP" then elseif event == "SPELLCAST_CHANNEL_STOP" then
if pfUI.castbar.player.channeling then if pfUI.castbar.player.channeling then
pfUI.castbar.player.fadeout = 1 pfUI.castbar.player.fadeout = 1
pfUI.castbar.player.bar:SetMinMaxValues(1,pfUI.castbar.player.bar:GetValue()) pfUI.castbar.player.channeling = nil
if ( GetTime() + 0.3 < pfUI.castbar.player.endTime ) then
pfUI.castbar.player.bar:SetStatusBarColor(1,.5,.5,1)
pfUI.castbar.player.bar:SetMinMaxValues(1,100)
pfUI.castbar.player.bar:SetValue(100)
return
end
end end
elseif event == "SPELLCAST_FAILED" or event == "SPELLCAST_INTERRUPTED" then elseif event == "SPELLCAST_FAILED" or event == "SPELLCAST_INTERRUPTED" then
pfUI.castbar.player.fadeout = 1 if pfUI.castbar.player.casting then
pfUI.castbar.player.bar:SetStatusBarColor(1,.5,.5,1) pfUI.castbar.player.fadeout = 1
pfUI.castbar.player.bar:SetMinMaxValues(1,100) pfUI.castbar.player.casting = nil
pfUI.castbar.player.bar:SetValue(100)
pfUI.castbar.player.bar:SetStatusBarColor(1,.5,.5,1)
pfUI.castbar.player.bar:SetMinMaxValues(1,100)
pfUI.castbar.player.bar:SetValue(100)
end
elseif ( event == "SPELLCAST_DELAYED" ) then elseif ( event == "SPELLCAST_DELAYED" ) then
if( pfUI.castbar.player:IsShown() ) then if( pfUI.castbar.player:IsShown() ) then
@@ -147,56 +159,64 @@ pfUI:RegisterModule("castbar", function ()
pfUI.castbar.player:SetScript("OnUpdate", function () pfUI.castbar.player:SetScript("OnUpdate", function ()
if pfUI_config.castbar.player.hide_pfui == "1" then pfUI.castbar.player:Hide() return end if pfUI_config.castbar.player.hide_pfui == "1" then pfUI.castbar.player:Hide() return end
-- fadeout
if pfUI.castbar.player.fadeout and pfUI.castbar.player:GetAlpha() > 0 then
pfUI.castbar.player:SetAlpha(pfUI.castbar.player:GetAlpha()-0.025)
if pfUI.castbar.player:GetAlpha() == 0 then
pfUI.castbar.player:Hide()
pfUI.castbar.player.fadeout = nil
end
end
-- cast -- cast
if ( pfUI.castbar.player.casting ) then if pfUI.castbar.player.casting then
local status = GetTime() local status = GetTime()
local cur = pfUI.api.round(GetTime() - pfUI.castbar.player.startTime,1) local cur = GetTime() - pfUI.castbar.player.startTime
local max = pfUI.api.round(pfUI.castbar.player.maxValue - pfUI.castbar.player.startTime,1) local max = pfUI.castbar.player.maxValue - pfUI.castbar.player.startTime
local delay = pfUI.castbar.player.delay local delay = pfUI.castbar.player.delay
pfUI.castbar.player.bar:SetValue(status)
if cur > max then cur = max end if cur > max then cur = max end
if ( status > pfUI.castbar.player.maxValue ) then if ( status > pfUI.castbar.player.maxValue ) then
status = pfUI.castbar.player.maxValue status = pfUI.castbar.player.maxValue
end end
if delay > 0 then if delay > 0 then
delay = "|cffffaaaa+" .. pfUI.api.round(delay,1) .. " |r " delay = "|cffffaaaa+" .. pfUI.api.round(delay,1) .. " |r "
pfUI.castbar.player.bar.right:SetText(delay .. cur .. " / " .. max) pfUI.castbar.player.bar.right:SetText(delay .. pfUI.api.round(cur,1) .. " / " .. max)
else else
pfUI.castbar.player.bar.right:SetText(cur .. " / " .. max) pfUI.castbar.player.bar.right:SetText(pfUI.api.round(cur,1) .. " / " .. pfUI.api.round(max,1))
end end
pfUI.castbar.player.bar:SetValue(status)
return
-- channel -- channel
elseif ( pfUI.castbar.player.channeling ) then elseif pfUI.castbar.player.channeling then
local time = GetTime() local time = GetTime()
local barValue = pfUI.castbar.player.startTime + (pfUI.castbar.player.endTime - time) local barValue = pfUI.castbar.player.startTime + (pfUI.castbar.player.endTime - time)
local cur = pfUI.api.round(pfUI.castbar.player.endTime - GetTime(),1)
local max = pfUI.api.round(pfUI.castbar.player.endTime - pfUI.castbar.player.startTime,1) pfUI.castbar.player.bar:SetValue( barValue )
local cur = pfUI.castbar.player.endTime - GetTime()
local max = pfUI.castbar.player.endTime - pfUI.castbar.player.startTime
local delay = pfUI.castbar.player.delay local delay = pfUI.castbar.player.delay
if cur > max then cur = max end if cur > max then cur = max end
if ( time > pfUI.castbar.player.endTime ) then if ( time > pfUI.castbar.player.endTime ) then
time = pfUI.castbar.player.endTime time = pfUI.castbar.player.endTime
end end
if ( time == pfUI.castbar.player.endTime ) then if ( time >= pfUI.castbar.player.endTime ) then
pfUI.castbar.player.channeling = nil pfUI.castbar.player.channeling = nil
pfUI.castbar.player.fadeout = 1 pfUI.castbar.player.fadeout = 1
return return
end end
if delay > 0 then if delay > 0 then
delay = "|cffffaaaa-" .. pfUI.api.round(delay,1) .. " |r " delay = "|cffffaaaa-" .. pfUI.api.round(delay,1) .. " |r "
pfUI.castbar.player.bar.right:SetText(delay .. cur) pfUI.castbar.player.bar.right:SetText(delay .. pfUI.api.round(cur,1))
else else
pfUI.castbar.player.bar.right:SetText(cur) pfUI.castbar.player.bar.right:SetText(pfUI.api.round(cur,1))
end
return
-- fadeout
elseif pfUI.castbar.player.fadeout and pfUI.castbar.player:GetAlpha() > 0 then
pfUI.castbar.player:SetAlpha(pfUI.castbar.player:GetAlpha()-0.025)
if pfUI.castbar.player:GetAlpha() == 0 then
pfUI.castbar.player:Hide()
pfUI.castbar.player.fadeout = nil
end end
pfUI.castbar.player.bar:SetValue( barValue )
end end
end) end)
end end