]> git.draconx.ca Git - rrace.git/blobdiff - src/game.c
Only redraw changed tiles when right clicking.
[rrace.git] / src / game.c
index c478eef5b55e97bb2043fcc936640914c7bcb93a..bdd8f2b3ac103c6e2974fe138c1b23f342a81673 100644 (file)
@@ -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)