From 8089441bdd45e81e838ecef4110195426186b57e Mon Sep 17 00:00:00 2001 From: Kevin Worth Date: Sat, 8 Aug 2009 13:28:57 -0400 Subject: [PATCH] Make game.current_tile a pointer of type tile_t rather than a simple int. This is much more powerful as the tiles in players' hands can be set as the current tile, not just those in the deck. --- .gitignore | 0 Makefile | 0 kub.c | 66 +++++++-- kub_todo.txt | 0 tiles/blank_tile.svg | 57 ++++---- tiles/owned_tile.svg | 297 ++++++++++++++++++++++++++++++++-------- tiles/red6.svg | 0 tiles/selected_tile.svg | 33 ++--- tiles/tile_wild.svg | 0 9 files changed, 346 insertions(+), 107 deletions(-) mode change 100644 => 100755 .gitignore mode change 100644 => 100755 Makefile mode change 100644 => 100755 kub.c mode change 100644 => 100755 kub_todo.txt mode change 100644 => 100755 tiles/red6.svg mode change 100644 => 100755 tiles/selected_tile.svg mode change 100644 => 100755 tiles/tile_wild.svg diff --git a/.gitignore b/.gitignore old mode 100644 new mode 100755 diff --git a/Makefile b/Makefile old mode 100644 new mode 100755 diff --git a/kub.c b/kub.c old mode 100644 new mode 100755 index 558a280..f4a5788 --- a/kub.c +++ b/kub.c @@ -100,8 +100,10 @@ typedef struct game { RsvgHandle *selectedtile; RsvgHandle *ownedtile; - int current_tile; + tile_t *current_tile; +// int current_tile; int select_mode; + int drag_group_mode; int diff_x, diff_y; int click_x, click_y; int release_x, release_y; /*Currently unused*/ @@ -502,8 +504,10 @@ static void game_init(game_t *game) if (error) FATAL_ERROR (error->message); - game->current_tile = game->deck.num_tiles - 1; +// game->current_tile = game->deck.num_tiles - 1; + game->current_tile = &game->deck.tiles[0]; game->select_mode = 1; + game->drag_group_mode = 0; game->diff_x = game->diff_y = 0; } @@ -529,6 +533,8 @@ static gboolean on_expose_event (GtkWidget *widget, GdkEventExpose *event, game_ static gboolean on_key_press_event (GtkWidget *widget, GdkEventKey *event, game_t *game) { printf ("You pressed key %d\n", event->keyval); + if (event->keyval == 65505 || event->keyval == 65506) + game->drag_group_mode = 1; return TRUE; } @@ -536,8 +542,39 @@ static gboolean on_key_press_event (GtkWidget *widget, GdkEventKey *event, game_ static gboolean on_button_press_event (GtkWidget *widget, GdkEventButton *event, game_t *game) { int i, tile_x, tile_y; - tile_t *curr_tile = &game->deck.tiles[game->current_tile]; + tile_t *curr_tile; + player_t *curr_player = &game->players[0]; + /*Handle tiles in player's hand */ + for (i = 0; i < curr_player->hand.num_tiles; i++) + { + curr_tile = &curr_player->hand.tiles[i]; + if (curr_tile->selected) + { + curr_tile->selected = 0; + gtk_widget_queue_draw_area (widget, curr_tile->x - 1, curr_tile->y - 1, TILE_WIDTH + 1, TILE_HEIGHT + 2); + } + tile_x = curr_player->hand.tiles[i].x; + tile_y = curr_player->hand.tiles[i].y; + if (event->x >= tile_x && event->x <= (tile_x + TILE_WIDTH) && + event->y >= tile_y && event->y <= (tile_y + TILE_HEIGHT) ) + { + game->select_mode = 0; + + game->current_tile = curr_tile; + + if (!curr_tile->selected) + curr_tile->selected = 1; + else + curr_tile->selected = 0; + gtk_widget_queue_draw_area (widget, curr_tile->x - 1, curr_tile->y - 1, TILE_WIDTH + 1, TILE_HEIGHT + 2); + + game->diff_x = event->x - tile_x; + game->diff_y = event->y - tile_y; + } + } + + /*Handle tiles in deck */ for (i = 0; i < game->deck.num_tiles; i++) { curr_tile = &game->deck.tiles[i]; @@ -554,8 +591,10 @@ static gboolean on_button_press_event (GtkWidget *widget, GdkEventButton *event, { game->select_mode = 0; - game->current_tile = i; - curr_tile = &game->deck.tiles[game->current_tile]; +// game->current_tile = i; + game->current_tile = curr_tile; + +//delete_this? curr_tile = &game->deck.tiles[game->current_tile]; if (!curr_tile->selected) curr_tile->selected = 1; else @@ -568,14 +607,15 @@ static gboolean on_button_press_event (GtkWidget *widget, GdkEventButton *event, } if (game->select_mode) { - game->deck.tiles[game->current_tile].selected = 0; +// game->deck.tiles[game->current_tile].selected = 0; + game->current_tile->selected = 0; gtk_widget_queue_draw_area (widget, curr_tile->x - 1, curr_tile->y - 1, TILE_WIDTH + 1, TILE_HEIGHT + 2); game->selection_box.visible = 1; - /*These next two lines are likely to be replaced by...*/ + /*These next two lines appear to be dead game->click_x = event->x; - game->click_y = event->y; - /*...these two lines*/ + game->click_y = event->y;*/ + game->selection_box.x1 = event->x; game->selection_box.x2 = event->x; game->selection_box.y1 = event->y; @@ -760,8 +800,14 @@ static gboolean on_button_motion_event (GtkWidget *widget, GdkEventMotion *event } else { + if (game->drag_group_mode) + { + + } + tile_t *tile; - tile = &game->deck.tiles[game->current_tile]; +// tile = &game->deck.tiles[game->current_tile]; + tile = game->current_tile; /* First, invalidate the region where the tile currently is. */ gtk_widget_queue_draw_area (widget, tile->x - 1, tile->y - 1, TILE_WIDTH + 1, TILE_HEIGHT + 2); diff --git a/kub_todo.txt b/kub_todo.txt old mode 100644 new mode 100755 diff --git a/tiles/blank_tile.svg b/tiles/blank_tile.svg index 08080de..f37c2da 100644 --- a/tiles/blank_tile.svg +++ b/tiles/blank_tile.svg @@ -1,19 +1,21 @@ + inkscape:version="0.46" + sodipodi:docname="blank_tile_1.svg" + sodipodi:docbase="/home/kworth/kub/tiles" + inkscape:output_extension="org.inkscape.output.svg.inkscape" + version="1.0"> @@ -26,47 +28,56 @@ + id="defs1436"> + + + inkscape:zoom="9.6862745" + inkscape:cx="17.5" + inkscape:cy="24.719209" + inkscape:window-x="6" + inkscape:window-y="24" + inkscape:current-layer="svg1421" + showgrid="false" /> + x="0.5" + y="0.5" /> + transform="matrix(0.5905,0,0,0.5905,-56.24979,-51.94054)"> + inkscape:output_extension="org.inkscape.output.svg.inkscape" + version="1.0"> @@ -37,7 +38,7 @@ id="perspective2532" /> - + style="fill:#a15d2e;fill-opacity:1;stroke:#b2964a;stroke-width:1" + transform="matrix(0.5905,0,0,0.5905,-56.24979,-51.94054)"> + d="M 139.38034,162.33228 L 132.916,161.60434 L 131.18921,168.5345 L 125.8984,164.2523 L 120.91689,168.73756 L 119.6583,162.38682 L 112.48703,162.86394 L 114.80783,156.12386 L 109.11958,153.15712 L 114.8007,149.75492 L 112.10076,143.3248 L 119.03117,143.60194 L 120.29189,137.12259 L 125.36176,141.10086 L 130.56421,136.91952 L 132.1242,143.32475 L 138.99407,142.79315 L 136.39722,148.95452 L 142.36152,152.49996 L 136.64051,156.25356 L 139.38034,162.33228 z" + id="path1425" + style="fill:#a15d2e;fill-opacity:1" /> + d="M 133.69581,149.74696 C 133.69843,155.9537 128.66761,160.98664 122.46087,160.98664 C 116.25413,160.98664 111.22331,155.9537 111.22593,149.74696 C 111.22331,143.54022 116.25413,138.50728 122.46087,138.50728 C 128.66761,138.50728 133.69843,143.54022 133.69581,149.74696 z" + id="path1427" + style="fill:#a15d2e;fill-opacity:1" /> + d="M 121.49343,146.01378 C 121.49343,146.93435 120.8135,147.68061 119.97476,147.68061 C 119.13602,147.68061 118.45609,146.93435 118.45609,146.01378 C 118.45609,145.09321 119.13602,144.34695 119.97476,144.34695 C 120.8135,144.34695 121.49343,145.09321 121.49343,146.01378 z" + id="path1429" + style="fill:#a15d2e;fill-opacity:1" /> + d="M 121.49343,146.01378 C 121.49343,146.93435 120.8135,147.68061 119.97476,147.68061 C 119.13602,147.68061 118.45609,146.93435 118.45609,146.01378 C 118.45609,145.09321 119.13602,144.34695 119.97476,144.34695 C 120.8135,144.34695 121.49343,145.09321 121.49343,146.01378 z" + id="path1431" + style="fill:#a15d2e;fill-opacity:1" /> + id="path1433" + style="fill:#a15d2e;fill-opacity:1" /> + + + + + + + + + + + + + + + + diff --git a/tiles/red6.svg b/tiles/red6.svg old mode 100644 new mode 100755 diff --git a/tiles/selected_tile.svg b/tiles/selected_tile.svg old mode 100644 new mode 100755 index 760a627..1225e40 --- a/tiles/selected_tile.svg +++ b/tiles/selected_tile.svg @@ -7,14 +7,15 @@ xmlns="http://www.w3.org/2000/svg" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" - width="544" - height="852" + width="36" + height="51" id="svg1421" sodipodi:version="0.32" inkscape:version="0.46" - sodipodi:docname="selectedtile.svg" + sodipodi:docname="selected_tile.svg" sodipodi:docbase="/home/kworth/kub/tiles" - inkscape:output_extension="org.inkscape.output.svg.inkscape"> + inkscape:output_extension="org.inkscape.output.svg.inkscape" + version="1.0"> @@ -37,7 +38,7 @@ id="perspective2486" /> + x="0.5" + y="0.5" /> + transform="matrix(0.5905,0,0,0.5905,-56.24979,-51.94054)"> diff --git a/tiles/tile_wild.svg b/tiles/tile_wild.svg old mode 100644 new mode 100755 -- 2.43.0