/**************************************************************** Updates caravan dialog ****************************************************************/ void caravan_dialog_update(void) { char buf[128]; bool can_help; get_help_build_wonder_button_label(buf, sizeof(buf), &can_help); choice_dialog_button_set_label(caravan_dialog, 1, buf); choice_dialog_button_set_sensitive(caravan_dialog, 1, can_help); }
/**************************************************************** ... *****************************************************************/ void popup_caravan_dialog(struct unit *punit, struct city *phomecity, struct city *pdestcity) { char title_buf[128], buf[128], wonder[128]; bool can_establish, can_trade, can_wonder; fc_snprintf(title_buf, sizeof(title_buf), /* TRANS: %s is a unit type */ _("Your %s Has Arrived"), unit_name_translation(punit)); fc_snprintf(buf, sizeof(buf), _("Your %s from %s reaches the city of %s.\nWhat now?"), unit_name_translation(punit), city_name(phomecity), city_name(pdestcity)); caravan_city_id=pdestcity->id; /* callbacks need these */ caravan_unit_id=punit->id; get_help_build_wonder_button_label(wonder, sizeof(wonder), &can_wonder); can_trade = can_cities_trade(phomecity, pdestcity); can_establish = can_trade && can_establish_trade_route(phomecity, pdestcity); caravan_dialog = popup_choice_dialog(GTK_WINDOW(toplevel), title_buf, buf, (can_establish ? _("Establish _Trade route") : _("Enter Marketplace")),caravan_establish_trade_callback, NULL, wonder,caravan_help_build_wonder_callback, NULL, _("_Keep moving"), NULL, NULL, NULL); g_signal_connect(caravan_dialog, "destroy", G_CALLBACK(caravan_destroy_callback), NULL); if (!can_trade) { choice_dialog_button_set_sensitive(caravan_dialog, 0, FALSE); } if (!can_wonder) { choice_dialog_button_set_sensitive(caravan_dialog, 1, FALSE); } }