diff options
author | the lemons <citrons@mondecitronne.com> | 2023-03-26 22:46:28 -0500 |
---|---|---|
committer | the lemons <citrons@mondecitronne.com> | 2023-03-26 22:46:28 -0500 |
commit | a75f34a1fc91fa90340b51004e55c656ba06ca0c (patch) | |
tree | ba50b4f751d35cd3f4d3b899763f4065f0c02279 | |
parent | a966f45abf25dd486071a9552686e579de717417 (diff) |
drop next piece immediately
-rw-r--r-- | game/init.lua | 15 |
1 files changed, 7 insertions, 8 deletions
diff --git a/game/init.lua b/game/init.lua index 1dba8b8..9872a4c 100644 --- a/game/init.lua +++ b/game/init.lua @@ -87,8 +87,8 @@ end function M:place_piece() if not self.piece:can_move(-1, 0) then self.piece:place() - self.piece = nil evloop.queue "game.lock_cancel" + self:next_piece() return true else return false @@ -103,7 +103,7 @@ end function M:lock_loop() local function loop() - assert(evloop.poll "game.lock" == "game.lock") + evloop.poll "game.lock" local e = evloop.poll(self.lock_delay, "game.lock_cancel") if e then return loop() @@ -119,20 +119,19 @@ function M:gravity_loop() local function loop() evloop.sleep(self.gravity_delay) self.field:remove_cleared() - if not self.piece then - assert(self:next_piece(), "you lose!") - return loop() - end - if not self.piece:move(-1, 0) then + if self.piece and not self.piece:move(-1, 0) then evloop.queue "game.lock" end - return loop() + if self.piece then + return loop() + end end return loop end function M:loop() local function loop() + self:next_piece() evloop.await_any( self:input_loop(), self:gravity_loop(), |