summary refs log tree commit diff
path: root/inc/tetromino.h
diff options
context:
space:
mode:
Diffstat (limited to 'inc/tetromino.h')
-rw-r--r--inc/tetromino.h86
1 files changed, 86 insertions, 0 deletions
diff --git a/inc/tetromino.h b/inc/tetromino.h
index 30d55a3..04f21d3 100644
--- a/inc/tetromino.h
+++ b/inc/tetromino.h
@@ -20,6 +20,8 @@ struct Tetromino {
     int size;
     struct Color color;
     int directions[4][4][4];
+    int cw_kick_table[4][10];
+    int ccw_kick_table[4][10];
 };
 
 struct Tetromino tetrominos[7] = {
@@ -52,6 +54,18 @@ struct Tetromino tetrominos[7] = {
                 {0, 1, 0, 0},
                 {0, 1, 0, 0}
             }
+        },
+        .cw_kick_table = {
+            {+0,+0, -2,+0, +1,+0, -2,-1, +1,+2},
+            {+0,+0, -1,+0, +2,+0, -1,+2, +2,-1},
+            {+0,+0, +2,+0, -1,+0, +2,+1, -1,-2},
+            {+0,+0, +1,+0, -2,+0, +1,-2, -2,+1}
+        },
+        .ccw_kick_table = {
+            {+0,+0, -1,+0, +2,+0, -1,+2, +2,-1},
+            {+0,+0, +2,+0, -1,+0, +2,+1, -1,-2},
+            {+0,+0, +1,+0, -2,+0, +1,-2, -2,+1},
+            {+0,+0, -2,+0, +1,+0, -2,-1, +1,+2}
         }
     },
     [J] = {
@@ -78,6 +92,18 @@ struct Tetromino tetrominos[7] = {
                 {0, 1, 0},
                 {0, 1, 0}
             }
+        },
+        .cw_kick_table = {
+            {+0,+0, -1,+0, -1,+1, +0,-2, -1,-2},
+            {+0,+0, +1,+0, +1,-1, +0,+2, +1,+2},
+            {+0,+0, +1,+0, +1,+1, +0,-2, +1,-2},
+            {+0,+0, -1,+0, -1,-1, +0,+2, -1,+2}
+        },
+        .ccw_kick_table = {
+            {+0,+0, +1,+0, +1,+1, +0,-2, +1,-2},
+            {+0,+0, +1,+0, +1,-1, +0,+2, +1,+2},
+            {+0,+0, -1,+0, -1,+1, +0,-2, -1,-2},
+            {+0,+0, -1,+0, -1,-1, +0,+2, -1,+2}
         }
     },
     [L] = {
@@ -104,6 +130,18 @@ struct Tetromino tetrominos[7] = {
                 {0, 1, 0},
                 {1, 1, 0}
             }
+        },
+        .cw_kick_table = {
+            {+0,+0, -1,+0, -1,+1, +0,-2, -1,-2},
+            {+0,+0, +1,+0, +1,-1, +0,+2, +1,+2},
+            {+0,+0, +1,+0, +1,+1, +0,-2, +1,-2},
+            {+0,+0, -1,+0, -1,-1, +0,+2, -1,+2}
+        },
+        .ccw_kick_table = {
+            {+0,+0, +1,+0, +1,+1, +0,-2, +1,-2},
+            {+0,+0, +1,+0, +1,-1, +0,+2, +1,+2},
+            {+0,+0, -1,+0, -1,+1, +0,-2, -1,-2},
+            {+0,+0, -1,+0, -1,-1, +0,+2, -1,+2}
         }
     },
     [O] = {
@@ -130,6 +168,18 @@ struct Tetromino tetrominos[7] = {
                 {0, 1, 1},
                 {0, 1, 1}
             }
+        },
+        .cw_kick_table = {
+            {+0,+0, +0,+0, +0,+0, +0,+0, +0,+0},
+            {+0,+0, +0,+0, +0,+0, +0,+0, +0,+0},
+            {+0,+0, +0,+0, +0,+0, +0,+0, +0,+0},
+            {+0,+0, +0,+0, +0,+0, +0,+0, +0,+0}
+        },
+        .ccw_kick_table = {
+            {+0,+0, +0,+0, +0,+0, +0,+0, +0,+0},
+            {+0,+0, +0,+0, +0,+0, +0,+0, +0,+0},
+            {+0,+0, +0,+0, +0,+0, +0,+0, +0,+0},
+            {+0,+0, +0,+0, +0,+0, +0,+0, +0,+0}
         }
     },
     [S] = {
@@ -156,6 +206,18 @@ struct Tetromino tetrominos[7] = {
                 {1, 1, 0},
                 {1, 0, 0}
             }
+        },
+        .cw_kick_table = {
+            {+0,+0, -1,+0, -1,+1, +0,-2, -1,-2},
+            {+0,+0, +1,+0, +1,-1, +0,+2, +1,+2},
+            {+0,+0, +1,+0, +1,+1, +0,-2, +1,-2},
+            {+0,+0, -1,+0, -1,-1, +0,+2, -1,+2}
+        },
+        .ccw_kick_table = {
+            {+0,+0, +1,+0, +1,+1, +0,-2, +1,-2},
+            {+0,+0, +1,+0, +1,-1, +0,+2, +1,+2},
+            {+0,+0, -1,+0, -1,+1, +0,-2, -1,-2},
+            {+0,+0, -1,+0, -1,-1, +0,+2, -1,+2}
         }
     },
     [T] = {
@@ -182,6 +244,18 @@ struct Tetromino tetrominos[7] = {
                 {1, 1, 0},
                 {0, 1, 0}
             }
+        },
+        .cw_kick_table = {
+            {+0,+0, -1,+0, -1,+1, +0,-2, -1,-2},
+            {+0,+0, +1,+0, +1,-1, +0,+2, +1,+2},
+            {+0,+0, +1,+0, +1,+1, +0,-2, +1,-2},
+            {+0,+0, -1,+0, -1,-1, +0,+2, -1,+2}
+        },
+        .ccw_kick_table = {
+            {+0,+0, +1,+0, +1,+1, +0,-2, +1,-2},
+            {+0,+0, +1,+0, +1,-1, +0,+2, +1,+2},
+            {+0,+0, -1,+0, -1,+1, +0,-2, -1,-2},
+            {+0,+0, -1,+0, -1,-1, +0,+2, -1,+2}
         }
     },
     [Z] = {
@@ -208,6 +282,18 @@ struct Tetromino tetrominos[7] = {
                 {1, 1, 0},
                 {0, 1, 0}
             }
+        },
+        .cw_kick_table = {
+            {+0,+0, -1,+0, -1,+1, +0,-2, -1,-2},
+            {+0,+0, +1,+0, +1,-1, +0,+2, +1,+2},
+            {+0,+0, +1,+0, +1,+1, +0,-2, +1,-2},
+            {+0,+0, -1,+0, -1,-1, +0,+2, -1,+2}
+        },
+        .ccw_kick_table = {
+            {+0,+0, +1,+0, +1,+1, +0,-2, +1,-2},
+            {+0,+0, +1,+0, +1,-1, +0,+2, +1,+2},
+            {+0,+0, -1,+0, -1,+1, +0,-2, -1,-2},
+            {+0,+0, -1,+0, -1,-1, +0,+2, -1,+2}
         }
     }
 };