]> git.cworth.org Git - dvonn/blobdiff - dvonn.c
Enforce legal moves
[dvonn] / dvonn.c
diff --git a/dvonn.c b/dvonn.c
index 806a8e69247c289f3a712d12293b610f54e43384..8ac72b1cdd40f4efdd97de2d968a0c40812783bd 100644 (file)
--- a/dvonn.c
+++ b/dvonn.c
@@ -157,6 +157,10 @@ on_button_press_event (GtkWidget   *widget,
     int x, y;
     char *error;
 
+    /* Ignore double and triple clicks. */
+    if (event->type >= GDK_2BUTTON_PRESS)
+       return TRUE;
+
     x = event->x;
     y = event->y;
     layout_device_to_board (layout, &x, &y);
@@ -185,12 +189,14 @@ on_button_press_event (GtkWidget  *widget,
     }
 
     if (! game->has_selected) {
-       if (game->board.cells[x][y].type == game->board.player) {
-           game->has_selected = TRUE;
-           game->selected_x = x;
-           game->selected_y = y;
-           dvonn_game_update_windows (game);
-       }
+       if (game->board.cells[x][y].type == game->board.player &&
+           ! dvonn_board_cell_surrounded (&game->board, x, y))
+           {
+                   game->has_selected = TRUE;
+                   game->selected_x = x;
+                   game->selected_y = y;
+                   dvonn_game_update_windows (game);
+           }
        return TRUE;
     }