X-Git-Url: https://git.cworth.org/git?a=blobdiff_plain;f=dvonn.c;h=e14001658fc3d1a6d7c3d6a101d874f6b2cc1ece;hb=b6319a6d89f61c95cf98faf4918ae4dc39c61001;hp=806a8e69247c289f3a712d12293b610f54e43384;hpb=1e29ece3252138d372b47499dd4c77f01413c7fc;p=dvonn diff --git a/dvonn.c b/dvonn.c index 806a8e6..e140016 100644 --- a/dvonn.c +++ b/dvonn.c @@ -157,6 +157,17 @@ on_button_press_event (GtkWidget *widget, int x, y; char *error; + /* Ignore double and triple clicks. */ + if (event->type >= GDK_2BUTTON_PRESS) + return TRUE; + + /* Right-click means pass, (yes, it would be better to add some + * actual UI elements... */ + if (event->button == 3) { + dvonn_board_pass (&game->board); + return TRUE; + } + x = event->x; y = event->y; layout_device_to_board (layout, &x, &y); @@ -185,12 +196,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; } @@ -427,7 +440,7 @@ view_init (view_t *view, dvonn_game_t *game, GtkWidget *window) view->layout.height = 0; } -static void +static GtkWidget* dvonn_game_create_view (dvonn_game_t *game) { view_t *view; @@ -470,20 +483,34 @@ dvonn_game_create_view (dvonn_game_t *game) G_CALLBACK (on_button_press_event), view); gtk_widget_show_all (window); + + return window; } int main (int argc, char *argv[]) { + GtkWidget *window; + GdkDisplay *display; + GdkScreen *screen; dvonn_game_t game; dvonn_game_init (&game); gtk_init (&argc, &argv); - /* Create two views of the game (one for each player) */ - dvonn_game_create_view (&game); + /* Create a view for player 1. */ dvonn_game_create_view (&game); + + /* If Keith has connected to my machine, create a view for him as + * well. */ + setenv ("XAUTHORITY", "/home/keithp/.Xauthority", 1); + display = gdk_display_open ("localhost:10.0"); + if (display) { + screen = gdk_display_get_default_screen (display); + window = dvonn_game_create_view (&game); + gtk_window_set_screen (GTK_WINDOW (window), screen); + } gtk_main ();