]> git.draconx.ca Git - rrace.git/blobdiff - src/game.h
Pack/unpack the tile planes arithmetically.
[rrace.git] / src / game.h
index 7640b415d0bd6aba2c67f98bd3692439f556c43c..e5b9cbed3acffd72dec6bd1ecbdb6b7af090416d 100644 (file)
@@ -167,6 +167,16 @@ static inline uint_fast32_t board_rect(int x1, int y1, int x2, int y2)
        return (board_left(x2-x1) << x1) & (board_above(y2-y1) << 5*y1);
 }
 
+/*
+ * Extract the tile colour from a specific position of one of the
+ * arrays of tile bitmaps.  The position is a bit index.  So for
+ * example, game the tile at a given (x, y) position can be extracted
+ * by board_tile(board.game, 5*y+x).
+ */
+#define board_tile(planes, bit) (((0[planes]<<0) >> (bit)) & 1) \
+                              | (((1[planes]<<1) >> (bit)) & 2) \
+                              | (((2[planes]<<2) >> (bit)) & 4)
+
 /*
  * Move the bits in the game bitmaps according to a move at position (x, y),
  * and update the location of the empty position which, if the move was valid