X-Git-Url: http://git.draconx.ca/gitweb/rrace.git/blobdiff_plain/4c08507a26fbe96d3978191a8dea26c1dc4e3d55..f6be82664a5b8e8bc34c048b56417b591dcd5a5e:/src/game.h diff --git a/src/game.h b/src/game.h index 7640b41..e5b9cbe 100644 --- a/src/game.h +++ b/src/game.h @@ -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