static void lock_resource_tables(void) { gint idx; gint filter[NO_RESOURCE]; /* Lock the UI */ for (idx = 0; idx < NO_RESOURCE; idx++) filter[idx] = 0; resource_table_set_filter(RESOURCETABLE(want_table), filter); resource_table_set_filter(RESOURCETABLE(give_table), filter); resource_table_clear(RESOURCETABLE(want_table)); resource_table_clear(RESOURCETABLE(give_table)); }
static void set_resource_tables_filter(const gint * we_receive, const gint * we_supply) { if (player_is_viewer(my_player_num())) { lock_resource_tables(); } else { resource_table_set_filter(RESOURCETABLE(want_table), we_receive); resource_table_set_filter(RESOURCETABLE(give_table), we_supply); resource_table_clear(RESOURCETABLE(want_table)); resource_table_clear(RESOURCETABLE(give_table)); } }
const gint *quote_we_receive(void) { static gint we_receive[NO_RESOURCE]; resource_table_get_amount(RESOURCETABLE(want_table), we_receive); return we_receive; }
const gint *quote_we_supply(void) { static gint we_supply[NO_RESOURCE]; resource_table_get_amount(RESOURCETABLE(give_table), we_supply); return we_supply; }
gboolean can_submit_quote(void) { gint want_quote[NO_RESOURCE]; gint give_quote[NO_RESOURCE]; resource_table_get_amount(RESOURCETABLE(want_table), want_quote); resource_table_get_amount(RESOURCETABLE(give_table), give_quote); if (resource_count(want_quote) == 0 && resource_count(give_quote) == 0) return FALSE; return !quote_view_trade_exists(QUOTEVIEW(quoteview), give_quote, want_quote) && !player_is_viewer(my_player_num()); }
gboolean can_discard(void) { if (discard.dlg == NULL) return FALSE; return resource_table_is_total_reached(RESOURCETABLE (discard.resource_widget)); }
void discard_get_list(gint * discards) { if (discard.dlg != NULL) resource_table_get_amount(RESOURCETABLE (discard.resource_widget), discards); else memset(discards, 0, sizeof(discards)); }
static GtkWidget *discard_create_dlg(gint num) { GtkWidget *dlg_vbox; GtkWidget *vbox; gchar *text; discard.dlg = gtk_dialog_new_with_buttons( /* Dialog caption */ _("" "Discard Resources"), GTK_WINDOW (app_window), GTK_DIALOG_DESTROY_WITH_PARENT, GTK_STOCK_OK, GTK_RESPONSE_OK, NULL); g_signal_connect(G_OBJECT(discard.dlg), "destroy", G_CALLBACK(gtk_widget_destroyed), &discard.dlg); gtk_widget_realize(discard.dlg); /* Disable close */ gdk_window_set_functions(discard.dlg->window, GDK_FUNC_ALL | GDK_FUNC_CLOSE); dlg_vbox = GTK_DIALOG(discard.dlg)->vbox; gtk_widget_show(dlg_vbox); vbox = gtk_vbox_new(FALSE, 6); gtk_widget_show(vbox); gtk_box_pack_start(GTK_BOX(dlg_vbox), vbox, FALSE, TRUE, 0); gtk_container_set_border_width(GTK_CONTAINER(vbox), 6); text = g_strdup_printf(ngettext("You must discard %d resource", "You must discard %d resources", num), num); discard.resource_widget = resource_table_new(text, RESOURCE_TABLE_LESS_IN_HAND, FALSE, TRUE); g_free(text); resource_table_set_total(RESOURCETABLE(discard.resource_widget), /* Label */ _("Total discards"), num); gtk_widget_show(discard.resource_widget); gtk_box_pack_start(GTK_BOX(vbox), discard.resource_widget, FALSE, TRUE, 0); g_signal_connect(G_OBJECT(discard.resource_widget), "change", G_CALLBACK(amount_changed_cb), NULL); frontend_gui_register(gui_get_dialog_button (GTK_DIALOG(discard.dlg), 0), GUI_DISCARD, "clicked"); /* This _must_ be after frontend_gui_register, otherwise the * regeneration of the button happens before the destruction, which * results in an incorrectly sensitive OK button. */ g_signal_connect(gui_get_dialog_button(GTK_DIALOG(discard.dlg), 0), "destroy", G_CALLBACK(button_destroyed), GINT_TO_POINTER(num)); gtk_widget_show(discard.dlg); frontend_gui_update(); return discard.dlg; }
static void quote_update(void) { resource_table_update_hand(RESOURCETABLE(want_table)); resource_table_update_hand(RESOURCETABLE(give_table)); }
void plenty_create_dlg(const gint * bank) { GtkWidget *dlg_vbox; GtkWidget *vbox; const char *str; gint r; gint total; plenty.dlg = gtk_dialog_new_with_buttons(_("Year of Plenty"), GTK_WINDOW(app_window), GTK_DIALOG_DESTROY_WITH_PARENT, GTK_STOCK_OK, GTK_RESPONSE_OK, NULL); g_signal_connect(GTK_OBJECT(plenty.dlg), "destroy", G_CALLBACK(gtk_widget_destroyed), &plenty.dlg); gtk_widget_realize(plenty.dlg); /* Disable close */ gdk_window_set_functions(plenty.dlg->window, GDK_FUNC_ALL | GDK_FUNC_CLOSE); dlg_vbox = GTK_DIALOG(plenty.dlg)->vbox; gtk_widget_show(dlg_vbox); vbox = gtk_vbox_new(FALSE, 5); gtk_widget_show(vbox); gtk_box_pack_start(GTK_BOX(dlg_vbox), vbox, FALSE, TRUE, 0); gtk_container_set_border_width(GTK_CONTAINER(vbox), 5); total = 0; if (bank != NULL) for (r = 0; r < NO_RESOURCE; ++r) { plenty.bank[r] = bank[r]; total += bank[r]; } if (total == 1) str = _("Please choose one resource from the bank"); else if (total >= 2) { total = 2; str = _("Please choose two resources from the bank"); } else str = _("The bank is empty"); plenty.resource_widget = resource_table_new(str, RESOURCE_TABLE_MORE_IN_HAND, TRUE, TRUE); resource_table_set_total(RESOURCETABLE(plenty.resource_widget), /* Text for total in year of plenty dialog */ _("Total resources"), total); resource_table_limit_bank(RESOURCETABLE(plenty.resource_widget), TRUE); resource_table_set_bank(RESOURCETABLE(plenty.resource_widget), plenty.bank); gtk_widget_show(plenty.resource_widget); gtk_box_pack_start(GTK_BOX(vbox), plenty.resource_widget, FALSE, TRUE, 0); g_signal_connect(G_OBJECT(plenty.resource_widget), "change", G_CALLBACK(amount_changed_cb), NULL); frontend_gui_register(gui_get_dialog_button (GTK_DIALOG(plenty.dlg), 0), GUI_PLENTY, "clicked"); /* This _must_ be after frontend_gui_register, otherwise the * regeneration of the button happens before the destruction, which * results in an incorrectly sensitive OK button. */ g_signal_connect(gui_get_dialog_button(GTK_DIALOG(plenty.dlg), 0), "destroy", G_CALLBACK(plenty_destroyed), NULL); gtk_widget_show(plenty.dlg); frontend_gui_update(); }
void plenty_resources(gint * resources) { resource_table_get_amount(RESOURCETABLE(plenty.resource_widget), resources); }
gboolean plenty_can_activate(void) { return resource_table_is_total_reached(RESOURCETABLE (plenty.resource_widget)); }