home · contact · privacy
Make grids hexagonal, remove all diagonal movement penalty hassle.
[plomrogue] / src / server / yx_uint8.c
index 06fa81db7707cf9240280d328a3a4afc4317d684..8d47c82e505d85ec275bfaf98b1bf3dfc2a4e760 100644 (file)
@@ -19,41 +19,33 @@ extern uint8_t yx_uint8_cmp(struct yx_uint8 * a, struct yx_uint8 * b)
 
 extern struct yx_uint8 mv_yx_in_dir(char d, struct yx_uint8 yx)
 {
-    if      (d == '8' && yx.y > 0)
+    if     (d == 'e' && yx.y > 0         && (yx.x < UINT8_MAX || !(yx.y % 2)))
     {
+        yx.x = yx.x + (yx.y % 2);
         yx.y--;
     }
-    else if (d == '9' && yx.y > 0 && yx.x < UINT8_MAX)
+    else if (d == 'd' && yx.x < UINT8_MAX)
     {
-        yx.y--;
-        yx.x++;
-    }
-    else if (d == '6' && yx.x < UINT8_MAX)
-    {
-        yx.x++;
-    }
-    else if (d == '3' && yx.x < UINT8_MAX && yx.y < UINT8_MAX)
-    {
-        yx.y++;
         yx.x++;
     }
-    else if (d == '2' && yx.y < UINT8_MAX)
+    else if (d == 'c' && yx.y < UINT8_MAX && (yx.x < UINT8_MAX || !(yx.y % 2)))
     {
+        yx.x = yx.x + (yx.y % 2);
         yx.y++;
     }
-    else if (d == '1' && yx.y < UINT8_MAX && yx.x > 0)
+    else if (d == 'x' && yx.y < UINT8_MAX && (yx.x > 0 || yx.y % 2))
     {
+        yx.x = yx.x - !(yx.y % 2);
         yx.y++;
-        yx.x--;
     }
-    else if (d == '4' && yx.x > 0)
+    else if (d == 's' && yx.x > 0)
     {
         yx.x--;
     }
-    else if (d == '7' && yx.x > 0 && yx.y > 0)
+    else if (d == 'w' && yx.y > 0         && (yx.x > 0 || yx.y % 2))
     {
+        yx.x = yx.x - !(yx.y % 2);
         yx.y--;
-        yx.x--;
     }
     return yx;
 }