local fadeDuration = 0.35
local startDelay = {0.55, 0.45}
local startScale = 2.5
local endScale = 1.0
local bounceDuration = 0.15
local elapsedTime = {0, 0}
local isAnimating = {false, false}
local isBouncing = {false, false}
function onStartCountdown()
for i = 1, 2 do
elapsedTime[i] = 0
isAnimating[i] = true
setProperty('iconP' .. i .. '.alpha', 0)
setProperty('iconP' .. i .. '.scale.x', startScale)
setProperty('iconP' .. i .. '.scale.y', startScale)
isBouncing[i] = false
end
end
function animateIcon(index, elapsed)
elapsedTime[index] = elapsedTime[index] + elapsed
if elapsedTime[index] > startDelay[index] then
local progress = (elapsedTime[index] - startDelay[index]) / fadeDuration
if progress < 1 then
setProperty('iconP' .. index .. '.alpha', progress)
local scaleProgress = progress
setProperty('iconP' .. index .. '.scale.x', startScale + (endScale - startScale) * scaleProgress)
setProperty('iconP' .. index .. '.scale.y', startScale + (endScale - startScale) * scaleProgress)
else
setProperty('iconP' .. index .. '.alpha', 1)
setProperty('iconP' .. index .. '.scale.x', endScale)
setProperty('iconP' .. index .. '.scale.y', endScale)
isBouncing[index] = true
elapsedTime[index] = 0
isAnimating[index] = false
end
end
end
function bounceIcon(index, elapsed)
elapsedTime[index] = elapsedTime[index] + elapsed
local bounceProgress = elapsedTime[index] / bounceDuration
local scaleFactor
if bounceProgress < 0.5 then
scaleFactor = endScale - (endScale - (endScale * 0.8)) * (bounceProgress * 2)
else
scaleFactor = (endScale * 0.8) + (endScale - (endScale * 0.8)) * ((bounceProgress - 0.5) * 2)
end
setProperty('iconP' .. index .. '.scale.x', scaleFactor)
setProperty('iconP' .. index .. '.scale.y', scaleFactor)
if bounceProgress >= 1 then
setProperty('iconP' .. index .. '.scale.x', endScale)
setProperty('iconP' .. index .. '.scale.y', endScale)
isBouncing[index] = false
end
end
function onUpdate(elapsed)
for i = 1, 2 do
if isAnimating[i] then
animateIcon(i, elapsed)
end
if isBouncing[i] then
bounceIcon(i, elapsed)
end
end
end