From eae58f11e9f132a63d3e8dacb2c2891f43772918 Mon Sep 17 00:00:00 2001 From: Ishaan Bhardwaj Date: Sun, 21 Feb 2021 10:05:09 -0500 Subject: [PATCH] Fixed a clipping issue with negative gravity Gamemodes are able to define their own piece class behavior to override negative gravity handling --- tetris/components/piece.lua | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/tetris/components/piece.lua b/tetris/components/piece.lua index 5a227c5..6d0c592 100644 --- a/tetris/components/piece.lua +++ b/tetris/components/piece.lua @@ -126,7 +126,9 @@ function Piece:addGravity(gravity, grid, classic_lock) self.gravity = 0 self.lock_delay = self.lock_delay + 1 end - else + elseif not ( + self:isMoveBlocked(grid, { x=0, y=-1 }) and gravity < 0 + ) then local dropped_squares = math.floor(math.abs(new_gravity)) local new_frac_gravity = new_gravity - dropped_squares self.gravity = new_frac_gravity @@ -142,6 +144,8 @@ function Piece:addGravity(gravity, grid, classic_lock) self.gravity = new_frac_gravity self:moveInGrid({ x = 0, y = -1 }, dropped_squares, grid) end + else + self.gravity = 0 end return self end