X-Git-Url: https://git.cworth.org/git?a=blobdiff_plain;f=kub.c;h=558a280828adf582630ef3fc6f40d531434056a2;hb=320ef475fdad0ee5db34de1698a01cd75b747f54;hp=74a37496700835deec7a47db8d802def15c43301;hpb=8b49dd4f15d5d44dae6a45278f1b202da2911032;p=kub diff --git a/kub.c b/kub.c index 74a3749..558a280 100644 --- a/kub.c +++ b/kub.c @@ -54,6 +54,7 @@ typedef struct tile { int x; int y; int selected; + int owned; } tile_t; #define DECK_MAX_TILES 104 @@ -97,6 +98,7 @@ typedef struct game { selection_box_t selection_box; RsvgHandle *blanktile; RsvgHandle *selectedtile; + RsvgHandle *ownedtile; int current_tile; int select_mode; @@ -128,6 +130,7 @@ static void tile_init (tile_t *tile, color_t color, int number) tile->x = 0; tile->y = 0; tile->selected = 0; + tile->owned = 0; } static void tile_set_x_y (tile_t *tile, int x, int y) @@ -163,6 +166,8 @@ static void tile_draw(game_t *game, tile_t *tile, cairo_t *cr, GdkRegion *region if (tile->selected) rsvg_handle_render_cairo (game->selectedtile, cr); + if (tile->owned) + rsvg_handle_render_cairo (game->ownedtile, cr); else rsvg_handle_render_cairo (game->blanktile, cr); @@ -364,6 +369,7 @@ static void deck_deal(game_t *game, deck_t *deck) temp = deck->tiles[rand_tile]; deck->tiles[rand_tile] = deck->tiles[deck->num_tiles - 1]; game->players[i].hand.tiles[j] = temp; + game->players[i].hand.tiles[j].owned = 1; deck->num_tiles -= 1; game->players[i].hand.num_tiles += 1; } @@ -484,11 +490,15 @@ static void game_init(game_t *game) deck_init(&game->deck); deck_shuffle(&game->deck); - game->selectedtile = rsvg_handle_new_from_file ("tiles/selectedtile.svg", &error); + game->selectedtile = rsvg_handle_new_from_file ("tiles/selected_tile.svg", &error); if (error) FATAL_ERROR (error->message); - game->blanktile = rsvg_handle_new_from_file ("tiles/blanktile.svg", &error); + game->ownedtile = rsvg_handle_new_from_file ("tiles/owned_tile.svg", &error); + if (error) + FATAL_ERROR (error->message); + + game->blanktile = rsvg_handle_new_from_file ("tiles/blank_tile.svg", &error); if (error) FATAL_ERROR (error->message); @@ -592,8 +602,11 @@ static gboolean on_button_release_event (GtkWidget *widget, GdkEventButton *even box->visible = 0; gtk_widget_queue_draw_area (widget, x_min, y_min, width, height); - tile_group_t group; - group.num_tiles = 0; +// tile_group_t group; +// group.num_tiles = 0; + + tile_t* group[TILE_GROUP_MAX_TILES]; + int num_tiles = 0; int i, tile_x, tile_y, tile_x2, tile_y2; for (i = 0; i < game->deck.num_tiles; i++) @@ -626,15 +639,45 @@ static gboolean on_button_release_event (GtkWidget *widget, GdkEventButton *even /*or bottom edge*/ (x_min >= tile_x && x_min <= tile_x2 && y_min >= tile_y && y_min <= tile_y) ) - { - group.tiles[group.num_tiles] = game->deck.tiles[i]; - group.num_tiles++; + { +// group.tiles[group.num_tiles] = game->deck.tiles[i]; +// group.num_tiles++; + + group[num_tiles] = &game->deck.tiles[i];; + num_tiles++; } } - printf("is run %d\n", tile_group_is_run_one(&group) ); - printf("is set %d\n", tile_group_is_set(&group) ); + //printf("is run %d\n", tile_group_is_run_one(&group) ); + //printf("is set %d\n", tile_group_is_set(&group) ); + +// int matching_y = y_min; + +// for (i = 0; i < group.num_tiles; i++) + for (i = 0; i < num_tiles; i++) + { +// tile_print(group.tiles[i]); + gtk_widget_queue_draw_area (widget, group[i]->x - 1 , group[i]->y - 1, TILE_WIDTH + 1, TILE_HEIGHT + 2); + group[i]->x = x_min + (i * (TILE_WIDTH)); + group[i]->y = y_min; + gtk_widget_queue_draw_area (widget, group[i]->x - 1 , group[i]->y - 1, TILE_WIDTH + 1, TILE_HEIGHT + 2); + } +/* int j; + int new_x = 0; for (i = 0; i < group.num_tiles; i++) - tile_print(group.tiles[i]); + { + for (j = 0; j < game->deck.num_tiles; j++) + { + if (group.tiles[i].x == game->deck.tiles[j].x && + group.tiles[i].y == game->deck.tiles[j].y) + { + new_x = x_min + (i * (TILE_WIDTH)); + gtk_widget_queue_draw_area (widget, game->deck.tiles[j].x - 1 , game->deck.tiles[j].y - 1, TILE_WIDTH + 1, TILE_HEIGHT + 2); + game->deck.tiles[j].x = new_x; + game->deck.tiles[j].y = matching_y; + gtk_widget_queue_draw_area (widget, new_x - 1 , matching_y - 1, TILE_WIDTH + 1, TILE_HEIGHT + 2); + } + } + }*/ } game->select_mode = 1;