diff --git a/scripts/gameplay/track_end.lua b/scripts/gameplay/track_end.lua index cd4f137..8f8f3f4 100644 --- a/scripts/gameplay/track_end.lua +++ b/scripts/gameplay/track_end.lua @@ -11,16 +11,30 @@ local trackCompImage = gfx.CreateSkinImage("gameplay/track_end/track_comp.png", local particleRedBall = gfx.CreateSkinImage("gameplay/track_end/particles/red_ball.png", 0) local particleRedRing = gfx.CreateSkinImage("gameplay/track_end/particles/red_ring.png", 0) +local particleYellowRing = gfx.CreateSkinImage("gameplay/track_end/particles/yellow_ring.png", 0) + +local particleSmallRainbowRing = gfx.CreateSkinImage("gameplay/track_end/particles/small_rainbow_ring.png", 0) +local particleSmYellowRingA = gfx.CreateSkinImage("gameplay/track_end/particles/small_yellow_ring_1.png", 0) +local particleSmYellowRingB = gfx.CreateSkinImage("gameplay/track_end/particles/small_yellow_ring_2.png", 0) +local particleSmYellowRingC = gfx.CreateSkinImage("gameplay/track_end/particles/small_yellow_ring_4.png", 0) + local outroTransitionScale = 0; local outroTransitionGlobalAlpha = 0; local outroTransitionEnterFlareX = -1920; + local outroTransitionTextCutX = 0; -local outroTransitionFlareRedX = -500; + +local outroTransitionParticleRedX = -500; + +local outroTransitionParticleSmallRainbowX = 1080; +local outroTransitionParticleSmallYellowRingAX = 1080; +local outroTransitionParticleSmallYellowRingBX = 1080; +local outroTransitionParticleSmallYellowRingCX = 1080; local tickTransitions = function (deltaTime) if outroTransitionScale < 1 then - outroTransitionScale = outroTransitionScale + deltaTime / 15 -- transition should last for that time in seconds + outroTransitionScale = outroTransitionScale + deltaTime / 3.5 -- transition should last for that time in seconds else outroTransitionScale = 1 end @@ -37,18 +51,47 @@ local tickTransitions = function (deltaTime) (1920) -- reveal this amount during the transition (the whole width) )-0); -- start from 0 - outroTransitionFlareRedX = math.min(1080+150, ( - Easing.outQuad(math.min(1, - (outroTransitionScale-0.25)/0.2) -- Last from 0.25 transition scale for 0.2 transition scale, ending at 0.45 TS - )* + local particleTransitionScale = Easing.outQuad(math.min(1, + (outroTransitionScale-0.25)/0.2) -- Last from 0.25 transition scale for 0.2 transition scale, ending at 0.45 TS + ) + + outroTransitionParticleRedX = math.min(1080+150, ( + particleTransitionScale* (1080+150) -- reveal this amount during the transition (the whole width) )-500); -- start from -500 (off-screen) + + outroTransitionParticleSmallRainbowX = math.max(-1080-250, ( + particleTransitionScale* + (-1080-250) -- reveal this amount during the transition (the whole width) + )+1080); -- start from 1080+500 (off-screen) + outroTransitionParticleSmallYellowRingAX = math.max(-1080+0, ( + particleTransitionScale* + (-1080+0) -- reveal this amount during the transition (the whole width) + )+1080); -- start from 1080+500 (off-screen) + outroTransitionParticleSmallYellowRingBX = math.max(-1080+250, ( + particleTransitionScale* + (-1080+250) -- reveal this amount during the transition (the whole width) + )+1080); -- start from 1080+500 (off-screen) + outroTransitionParticleSmallYellowRingCX = math.max(-1080+200, ( + particleTransitionScale* + (-1080+200) -- reveal this amount during the transition (the whole width) + )+1080); -- start from 1080+500 (off-screen) end local drawParticles = function () gfx.BeginPath(); gfx.ImageRect( - outroTransitionFlareRedX, + outroTransitionParticleRedX-80, + 510-80, + 787*0.7, + 818*0.7, + particleYellowRing, + 1, + 0 + ); + gfx.BeginPath(); + gfx.ImageRect( + outroTransitionParticleRedX, 510, 787*0.5, 818*0.5, @@ -58,7 +101,7 @@ local drawParticles = function () ); gfx.BeginPath(); gfx.ImageRect( - outroTransitionFlareRedX, + outroTransitionParticleRedX, 510, 787*0.5, 818*0.5, @@ -66,6 +109,48 @@ local drawParticles = function () 1, 0 ); + + -- Right side + gfx.BeginPath(); + gfx.ImageRect( + outroTransitionParticleSmallRainbowX, + 465, + 1117*0.5, + 1117*0.5, + particleSmallRainbowRing, + 1, + 0 + ); + gfx.BeginPath(); + gfx.ImageRect( + outroTransitionParticleSmallYellowRingAX, + 575, + 579*0.5, + 557*0.5, + particleSmYellowRingA, + 1, + 0 + ); + gfx.BeginPath(); + gfx.ImageRect( + outroTransitionParticleSmallYellowRingBX, + 585, + 436*0.5, + 392*0.5, + particleSmYellowRingB, + 1, + 0 + ); + gfx.BeginPath(); + gfx.ImageRect( + outroTransitionParticleSmallYellowRingCX, + 625, + 275*0.5, + 275*0.5, + particleSmYellowRingC, + 1, + 0 + ); end local render = function (deltaTime)