From 9e59c158b289324affe347242c396765f98d2009 Mon Sep 17 00:00:00 2001 From: BoatsandJoes Date: Thu, 2 Dec 2021 16:22:29 -0600 Subject: [PATCH] Line clear easing is now quadratic for all line clear delays. --- tetris/modes/gamemode.lua | 35 ++++++++++++++++++++++------------- 1 file changed, 22 insertions(+), 13 deletions(-) diff --git a/tetris/modes/gamemode.lua b/tetris/modes/gamemode.lua index e43267b..abbee8e 100644 --- a/tetris/modes/gamemode.lua +++ b/tetris/modes/gamemode.lua @@ -612,18 +612,8 @@ function GameMode:animation(x, y, skin, colour) if self.last_lcd ~= 0 then progress = (self.last_lcd - self.lcd) / self.last_lcd end - -- Change this number to change "bounciness" - local bounce = 13 - -- Convert progress through the animation into an alpha value - local alpha = 0 - -- Cutoff is arbitrary: corresponds to level 500 in Marathon A2 - if self.last_lcd > 25 then - -- Goes up and down: looks better when animation is long - alpha = 1 - (bounce * progress^3 - 1.5 * bounce * progress^2 + (0.5 * bounce + 1) * progress) - else - -- Always decreasing: looks better when animation is short - alpha = 1 - progress * progress - end + -- Convert progress through the animation into an alpha value, with easing + local alpha = 1 - progress ^ 2 return { 1, 1, 1, alpha, @@ -641,7 +631,26 @@ function GameMode:drawLineClearAnimation() -- params: block x, y, skin, colour -- returns: table with RGBA, skin, colour, x, y - -- Flashy Fadeout (default) + -- Quadratic Fadeout (default) + --[[ + function animation(x, y, skin, colour) + -- Animation progress where 0 = start and 1 = end + local progress = 1 + if self.last_lcd ~= 0 then + progress = (self.last_lcd - self.lcd) / self.last_lcd + end + -- Convert progress through the animation into an alpha value, with easing + local alpha = 1 - progress ^ 2 + return { + 1, 1, 1, + alpha, + skin, colour, + 48 + x * 16, y * 16 + } + end + --]] + + -- Flashy Fadeout --[[ function animation(x, y, skin, colour) -- Animation progress where 0 = start and 1 = end