X-Git-Url: https://git.draconx.ca/gitweb/rrace.git/blobdiff_plain/991d1e7ca8ae3bee59619812e9f08bde8c17ad02..23aee3322744aa3c65de28c3ebe1509e291b8702:/src/game.c diff --git a/src/game.c b/src/game.c index c478eef..bdd8f2b 100644 --- a/src/game.c +++ b/src/game.c @@ -199,13 +199,16 @@ int game_do_move(struct board *board, int x, int y) return 0; } -int game_check_goal(struct board *board) +uint_fast32_t game_check_goal(struct board *board) { - int i, ret = 1; + uint_least32_t *game = board->game; + uint_least16_t *goal = board->goal; + uint_least32_t mask = 0; + int i; for (i = 0; i < 3; i++) - ret &= ((board->game[i] & GOAL_MASK) >> 6) == board->goal[i]; - return ret; + mask |= goal[i] ^ (game[i] >> GOAL_SHIFT); + return (mask << GOAL_SHIFT) & GOAL_MASK; } void game_begin(struct board *board)