ref: dedb6f71a08333b6a06ee22ea654cbe95ce27b08
parent: 25d7ad5e4fb40d731f3433df3dc684c334943d25
author: qwx <qwx@sciops.net>
date: Sat Mar 15 09:59:02 EDT 2025
fix pushing pieces through the wall, tweak order of operations
--- a/gm4s.c
+++ b/gm4s.c
@@ -24,7 +24,7 @@
static void
kevent(ulong k)
{
- char r, rot;
+ char r;
static char rr[] = {Left, Up, Right, Down, Left, Up};
if(cur == nil)
@@ -31,18 +31,17 @@
return;
if(k & Khold)
hold();
- rot = cur->rot;
- if(k & Krotl && !collide(cur->x, cur->y, (r = rr[1+rot-1]))
- || k & Krotr && !collide(cur->x, cur->y, (r = rr[1+rot+1])))
+ if(k & K↓ && !collide(cur->x, cur->y + 1, cur->rot))
+ cur->y++;
+ if(k & Krotl && !collide(cur->x, cur->y, (r = rr[1+cur->rot-1]))
+ || k & Krotr && !collide(cur->x, cur->y, (r = rr[1+cur->rot+1])))
cur->rot = r;
- if(k & K← && !collide(cur->x - 1, cur->y, rot))
+ if(k & K← && !collide(cur->x - 1, cur->y, cur->rot))
cur->x--;
- if(k & K→ && !collide(cur->x + 1, cur->y, rot))
+ if(k & K→ && !collide(cur->x + 1, cur->y, cur->rot))
cur->x++;
if(k & K↑)
drop();
- if(k & K↓ && !collide(cur->x, cur->y + 1, rot))
- cur->y++;
}
static void
--
⑨