shithub: gm4s

Download patch

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
--