예제 #1
0
파일: interface.c 프로젝트: jquick/pioneers
void frontend_quote_add(int player_num, int quote_num,
			const gint * they_supply,
			const gint * they_receive)
{
	quote_add_quote(player_num, quote_num, they_supply, they_receive);
	frontend_gui_update();
}
예제 #2
0
파일: interface.c 프로젝트: jquick/pioneers
void frontend_rolled_dice(gint die1, gint die2, gint player_num)
{
	histogram_dice_rolled(die1 + die2, player_num);
	identity_set_dice(die1, die2);
	gui_highlight_chits(die1 + die2);
	frontend_gui_update();
}
예제 #3
0
파일: monopoly.c 프로젝트: jquick/pioneers
void monopoly_create_dlg(void)
{
	GtkWidget *dlg_vbox;
	GtkWidget *vbox;
	GtkWidget *lbl;
	GSList *monop_grp = NULL;

	if (monop_dlg != NULL) {
		gtk_window_present(GTK_WINDOW(monop_dlg));
		return;
	};

	/* Dialog caption */
	monop_dlg = gtk_dialog_new_with_buttons(_("Monopoly"),
						GTK_WINDOW(app_window),
						GTK_DIALOG_DESTROY_WITH_PARENT,
						GTK_STOCK_OK,
						GTK_RESPONSE_OK, NULL);
	g_signal_connect(G_OBJECT(monop_dlg), "destroy",
			 G_CALLBACK(gtk_widget_destroyed), &monop_dlg);
	gtk_widget_realize(monop_dlg);
	/* Disable close */
	gdk_window_set_functions(monop_dlg->window,
				 GDK_FUNC_ALL | GDK_FUNC_CLOSE);

	dlg_vbox = GTK_DIALOG(monop_dlg)->vbox;
	gtk_widget_show(dlg_vbox);

	vbox = gtk_vbox_new(FALSE, 0);
	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);

	/* Label */
	lbl = gtk_label_new(_("Select the resource you wish to "
			      "monopolize."));
	gtk_widget_show(lbl);
	gtk_box_pack_start(GTK_BOX(vbox), lbl, TRUE, TRUE, 0);
	gtk_misc_set_alignment(GTK_MISC(lbl), 0, 0.5);

	monop_grp = add_resource_btn(vbox, monop_grp, BRICK_RESOURCE);
	monop_grp = add_resource_btn(vbox, monop_grp, GRAIN_RESOURCE);
	monop_grp = add_resource_btn(vbox, monop_grp, ORE_RESOURCE);
	monop_grp = add_resource_btn(vbox, monop_grp, WOOL_RESOURCE);
	monop_grp = add_resource_btn(vbox, monop_grp, LUMBER_RESOURCE);

	frontend_gui_register(gui_get_dialog_button
			      (GTK_DIALOG(monop_dlg), 0), GUI_MONOPOLY,
			      "clicked");
	gtk_dialog_set_default_response(GTK_DIALOG(monop_dlg),
					GTK_RESPONSE_OK);
	/* 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(monop_dlg), 0),
			 "destroy", G_CALLBACK(monopoly_destroyed), NULL);
	gtk_widget_show(monop_dlg);
	frontend_gui_update();
}
예제 #4
0
파일: quote.c 프로젝트: jquick/pioneers
static void quote_selected_cb(G_GNUC_UNUSED QuoteView * quoteview,
			      G_GNUC_UNUSED gpointer user_data)
{
	/** @todo RC 2006-05-27 Update the resource tables,
	 *  to show the effect of the selected quote
	 */
	frontend_gui_update();
}
예제 #5
0
파일: interface.c 프로젝트: jquick/pioneers
void frontend_discard_remove(gint player_num)
{
	if (discard_busy) {
		discard_player_did(player_num);
		if (player_num == my_player_num())
			set_gui_state(frontend_state_idle);
	}
	frontend_gui_update();
}
예제 #6
0
파일: interface.c 프로젝트: jquick/pioneers
void frontend_discard_add(gint player_num, gint discard_num)
{
	if (player_num == my_player_num())
		g_assert(callback_mode == MODE_DISCARD);
	discard_player_must(player_num, discard_num);
	if (player_num == my_player_num())
		set_gui_state(frontend_state_discard);
	frontend_gui_update();
}
예제 #7
0
파일: interface.c 프로젝트: jquick/pioneers
void frontend_setup(G_GNUC_UNUSED unsigned num_settlements,
		    G_GNUC_UNUSED unsigned num_roads)
{
	if (get_gui_state() == frontend_mode_setup) {
		frontend_gui_update();
		return;
	}
	set_gui_state(frontend_mode_setup);
	play_sound(SOUND_TURN);
}
예제 #8
0
파일: quote.c 프로젝트: jquick/pioneers
void frontend_quote_trade(G_GNUC_UNUSED gint player_num, gint partner_num,
			  gint quote_num,
			  G_GNUC_UNUSED const gint * they_supply,
			  G_GNUC_UNUSED const gint * they_receive)
{
	/* a quote has been accepted, remove it from the list. */
	quote_view_remove_quote(QUOTEVIEW(quoteview), partner_num,
				quote_num);
	quote_update();
	frontend_gui_update();
}
예제 #9
0
파일: interface.c 프로젝트: jquick/pioneers
void frontend_quote(gint player_num, gint * they_supply,
		    gint * they_receive)
{
	if (get_gui_state() == frontend_state_quote) {
		quote_begin_again(player_num, they_supply, they_receive);
	} else {
		quote_begin(player_num, they_supply, they_receive);
		set_gui_state(frontend_state_quote);
	}
	frontend_gui_update();
}
예제 #10
0
파일: quote.c 프로젝트: jquick/pioneers
void quote_begin_again(gint player_num, const gint * we_receive,
		       const gint * we_supply)
{
	/* show the new parameters */
	show_quote_params(player_num, we_receive, we_supply);
	/* throw out reject rows: everyone can quote again */
	quote_view_remove_rejected_quotes(QUOTEVIEW(quoteview));
	/* check if existing quotes are still valid */
	quote_view_check_validity_of_trades(QUOTEVIEW(quoteview));
	/* update everything */
	quote_update();
	set_resource_tables_filter(we_receive, we_supply);
	frontend_gui_update();
}
예제 #11
0
파일: interface.c 프로젝트: jquick/pioneers
void frontend_turn(void)
{
	/* if it already is our turn, just update the gui (maybe something
	 * happened), but don't beep */
	if (get_gui_state() == frontend_state_turn
	    || get_gui_state() == frontend_state_trade
	    || get_gui_state() == frontend_state_robber) {
		/* this is in the if, because it gets called from set_gui_state
		 * anyway. */
		frontend_gui_update();
		return;
	}
	set_gui_state(frontend_state_turn);
	play_sound(SOUND_TURN);
}
예제 #12
0
파일: interface.c 프로젝트: jquick/pioneers
void frontend_robber(void)
{
	if (!robber_busy) {
		/* Do this only once.  */
		robber_busy = TRUE;
		g_assert(previous_state == dummy_state);
		previous_state = get_gui_state();
	}
	/* These things are redone at undo.  */
	set_gui_state(frontend_state_robber);
	gui_cursor_set(ROBBER_CURSOR, check_move_robber_or_pirate,
		       place_robber_or_pirate_cb, NULL, NULL);
	gui_prompt_show(_("Place the robber."));
	frontend_gui_update();
}
예제 #13
0
파일: quote.c 프로젝트: jquick/pioneers
void quote_begin(gint player_num, const gint * we_receive,
		 const gint * we_supply)
{
	/* show what is asked */
	show_quote_params(player_num, we_receive, we_supply);
	/* reset variables */
	next_quote_num = 0;
	/* clear the gui list */
	quote_view_begin(QUOTEVIEW(quoteview));
	/* initialize our offer */
	quote_update();
	set_resource_tables_filter(we_receive, we_supply);
	frontend_gui_update();
	/* finally, show the page so the user can see it */
	gui_show_quote_page(TRUE);
}
예제 #14
0
파일: resource.c 프로젝트: jquick/pioneers
void frontend_resource_change(Resource type, gint new_amount)
{
	if (type < NO_RESOURCE) {
		char buff[16];
		gint res[NO_RESOURCE];

		memset(res, 0, sizeof(res));
		res[type] = new_amount;

		snprintf(buff, sizeof(buff), "%d", resource_total());
		gtk_label_set_text(GTK_LABEL(asset_total_label), buff);
		/* Force resize of the table, this is needed because
		 * GTK does not correctly redraw a label when the amounts
		 * cross the barrier of 1 or 2 positions.
		 */
		gtk_container_check_resize(GTK_CONTAINER
					   (gtk_widget_get_parent
					    (asset_total_label)));
		rebuild_single_resource(type);
	}
	frontend_gui_update();
}
예제 #15
0
파일: interface.c 프로젝트: jquick/pioneers
void frontend_quote_remove(int player_num, int quote_num)
{
	quote_delete_quote(player_num, quote_num);
	frontend_gui_update();
}
예제 #16
0
파일: quote.c 프로젝트: jquick/pioneers
static void amount_changed_cb(G_GNUC_UNUSED ResourceTable * rt,
			      G_GNUC_UNUSED gpointer user_data)
{
	quote_view_clear_selected_quote(QUOTEVIEW(quoteview));
	frontend_gui_update();
}
예제 #17
0
파일: interface.c 프로젝트: jquick/pioneers
void frontend_quote_player_end(gint player_num)
{
	quote_player_finish(player_num);
	frontend_gui_update();
}
예제 #18
0
파일: interface.c 프로젝트: jquick/pioneers
void frontend_gold_add(gint player_num, gint gold_num)
{
	gold_choose_player_prepare(player_num, gold_num);
	frontend_gui_update();
}
예제 #19
0
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();
}
예제 #20
0
파일: interface.c 프로젝트: jquick/pioneers
void frontend_gold_choose(gint gold_num, const gint * bank)
{
	gold_choose_player_must(gold_num, bank);
	frontend_gui_update();
}
예제 #21
0
파일: interface.c 프로젝트: jquick/pioneers
void frontend_gold_remove(gint player_num, gint * resources)
{
	gold_choose_player_did(player_num, resources);
	frontend_gui_update();
}
예제 #22
0
파일: discard.c 프로젝트: jquick/pioneers
static void amount_changed_cb(G_GNUC_UNUSED ResourceTable * rt,
			      G_GNUC_UNUSED gpointer user_data)
{
	frontend_gui_update();
}
예제 #23
0
파일: discard.c 프로젝트: jquick/pioneers
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;
}
예제 #24
0
파일: interface.c 프로젝트: jquick/pioneers
void frontend_trade_player_end(gint player_num)
{
	trade_player_finish(player_num);
	frontend_gui_update();
}