summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorthe lemons <citrons@mondecitronne.com>2023-03-26 22:46:28 -0500
committerthe lemons <citrons@mondecitronne.com>2023-03-26 22:46:28 -0500
commita75f34a1fc91fa90340b51004e55c656ba06ca0c (patch)
treeba50b4f751d35cd3f4d3b899763f4065f0c02279
parenta966f45abf25dd486071a9552686e579de717417 (diff)
drop next piece immediately
-rw-r--r--game/init.lua15
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(),