X-Git-Url: http://git.draconx.ca/gitweb/rrace.git/blobdiff_plain/26fb4b6902a32be6e9f504bee44724a0dd4292f7..23aee3322744aa3c65de28c3ebe1509e291b8702:/src/game.h?ds=sidebyside diff --git a/src/game.h b/src/game.h index 6a02a42..a734e22 100644 --- a/src/game.h +++ b/src/game.h @@ -20,6 +20,7 @@ #define RRACE_GAME_H_ #include +#include enum { TILE_EMPTY, @@ -65,8 +66,10 @@ struct board { */ uint_least16_t goal[3]; - /* (x, y) position of the current empty position. */ + /* (x, y) position of the current empty space. */ uint_least8_t x, y; + + xtime_t time_start; }; /* Return the board bitmap with all bits in column x set */ @@ -163,9 +166,10 @@ static inline uint_fast32_t board_right(int x) int game_do_move(struct board *board, int x, int y); /* - * Returns 1 if the game is in a winning position, or 0 otherwise. + * Returns the board bitmap setting game locations that differ from the goal. + * A return value of 0 therefore indicates a winning position. */ -int game_check_goal(struct board *board); +uint_fast32_t game_check_goal(struct board *board); /* * Initialize the game RNG such that the next call to game_reset will produce a @@ -178,9 +182,15 @@ void game_reseed(unsigned long long seed); */ void game_reset(struct board *board); +/* + * Reset the game start time. + */ +void game_begin(struct board *board); + /* * Disable new moves and clear all tile bits other than the 9 goal tiles. + * Returns the total elapsed time (in ms). */ -void game_finish(struct board *board); +int_fast32_t game_finish(struct board *board); #endif