]> git.cworth.org Git - dvonn/blobdiff - dvonn-board.c
Add a new dvonn_board_cell_owned_by function
[dvonn] / dvonn-board.c
index f8f9b93843556f3e20b482418c7ca75f768f28d2..eeab83076294649ebe0ccdaa846ca59307eef1e0 100644 (file)
@@ -101,6 +101,19 @@ dvonn_board_cell_occupied (dvonn_board_t *board,
     return TRUE;
 }
 
+dvonn_bool_t
+dvonn_board_cell_owned_by (dvonn_board_t *board,
+                          int x, int y,
+                          dvonn_player_t player)
+{
+    if (! dvonn_board_cell_occupied (board, x, y))
+       return FALSE;
+
+    /* Cast here to avoid compiler warning about mixing enum types in
+     * a comparison. */
+    return board->cells[x][y].type == (dvonn_cell_type_t) player;
+}
+
 dvonn_bool_t
 dvonn_board_cell_surrounded (dvonn_board_t *board,
                             int x, int y)
@@ -152,7 +165,7 @@ dvonn_board_move_legal (dvonn_board_t *board,
        return FALSE;
     }
 
-    if (board->cells[x1][y1].type != board->player) {
+    if (! dvonn_board_cell_owned_by (board, x1, y1, board->player)) {
        *error = "You cannot move your opponent's stack";
        return FALSE;
     }