Adjusted 0 ARR to trigger onPieceMove multiple times

pull/16/head
Ishaan Bhardwaj 2021-02-17 17:21:51 -05:00
parent d350b25726
commit 99b15803ee
1 changed files with 23 additions and 9 deletions

View File

@ -163,22 +163,36 @@ end
function Ruleset:movePiece(piece, grid, move, instant) function Ruleset:movePiece(piece, grid, move, instant)
if not self:canPieceMove(piece, grid) then return end if not self:canPieceMove(piece, grid) then return end
local x = piece.position.x
local was_drop_blocked = piece:isDropBlocked(grid) local was_drop_blocked = piece:isDropBlocked(grid)
local offset = ({x=0, y=0})
local moves = 0
if move == "left" then if move == "left" then
piece:moveInGrid({x=-1, y=0}, 1, grid, false) offset.x = -1
moves = 1
elseif move == "right" then elseif move == "right" then
piece:moveInGrid({x=1, y=0}, 1, grid, false) offset.x = 1
moves = 1
elseif move == "speedleft" then elseif move == "speedleft" then
piece:moveInGrid({x=-1, y=0}, grid.width, grid, instant) offset.x = -1
moves = grid.width
elseif move == "speedright" then elseif move == "speedright" then
piece:moveInGrid({x=1, y=0}, grid.width, grid, instant) offset.x = 1
moves = grid.width
end end
if piece.position.x ~= x then for i = 1, moves do
self:onPieceMove(piece, grid) local x = piece.position.x
if not was_drop_blocked and piece:isDropBlocked(grid) then if moves ~= 1 then
playSE("bottom") piece:moveInGrid(offset, 1, grid, instant)
else
piece:moveInGrid(offset, 1, grid, false)
end end
if piece.position.x ~= x then
self:onPieceMove(piece, grid)
if piece.locked then break end
end
end
if not was_drop_blocked and piece:isDropBlocked(grid) then
playSE("bottom")
end end
end end