/************************************************************************** ... **************************************************************************/ void update_info_label(void) { int d = 0; xaw_set_label(info_command, get_info_label_text(TRUE)); set_indicator_icons(client_research_sprite(), client_warming_sprite(), client_cooling_sprite(), client_government_sprite()); if (NULL == client.conn.playing) { return; } for (; d < (client.conn.playing->economic.luxury) / 10; d++) { xaw_set_bitmap(econ_label[d], get_tax_sprite(tileset, O_LUXURY)->pixmap); } for (; d < (client.conn.playing->economic.science + client.conn.playing->economic.luxury) / 10; d++) { xaw_set_bitmap(econ_label[d], get_tax_sprite(tileset, O_SCIENCE)->pixmap); } for(; d < 10; d++) { xaw_set_bitmap(econ_label[d], get_tax_sprite(tileset, O_GOLD)->pixmap); } update_timeout_label(); }
/************************************************************************** ... **************************************************************************/ void set_indicator_icons(struct sprite *bulb, struct sprite *sol, struct sprite *flake, struct sprite *gov) { xaw_set_bitmap(bulb_label, bulb->pixmap); xaw_set_bitmap(sun_label, sol->pixmap); xaw_set_bitmap(flake_label, flake->pixmap); xaw_set_bitmap(government_label, gov->pixmap); }
/************************************************************************** Set the "more arrow" for the unit icons to on(1) or off(0). Maintains a static record of current state to avoid unnecessary redraws. Note initial state should match initial gui setup (off). **************************************************************************/ void set_unit_icons_more_arrow(bool onoff) { static bool showing = FALSE; if (onoff && !showing) { /* FIXME: what about the mask? */ xaw_set_bitmap(more_arrow_label, get_arrow_sprite(tileset, ARROW_RIGHT)->pixmap); showing = TRUE; } else if(!onoff && showing) { xaw_set_bitmap(more_arrow_label, None); showing = FALSE; } }
/************************************************************************** ... **************************************************************************/ void update_diplomacy_dialog(struct Diplomacy_dialog *pdialog) { int i; struct genlist_iterator myiter; genlist_iterator_init(&myiter, &pdialog->treaty.clauses, 0); for(i=0; i<MAX_NO_CLAUSES && ITERATOR_PTR(myiter); ITERATOR_NEXT(myiter)) { struct Clause *pclause=(struct Clause *)ITERATOR_PTR(myiter); switch(pclause->type) { case CLAUSE_ADVANCE: sprintf(pdialog->clauselist_strings[i], "The %s give %s", get_race_name_plural(pclause->from->race), advances[pclause->value].name); break; case CLAUSE_GOLD: sprintf(pdialog->clauselist_strings[i], "The %s give %d gold", get_race_name_plural(pclause->from->race), pclause->value); break; case CLAUSE_MAP: sprintf(pdialog->clauselist_strings[i], "The %s give their worldmap", get_race_name_plural(pclause->from->race)); break; } pdialog->clauselist_strings_ptrs[i]=pdialog->clauselist_strings[i]; i++; } pdialog->clauselist_strings_ptrs[i]=0; XawListChange(pdialog->dip_clauselist, pdialog->clauselist_strings_ptrs, 0, 0, False); xaw_set_bitmap(pdialog->dip_acceptthumb0, get_thumb_pixmap(pdialog->treaty.accept0)); xaw_set_bitmap(pdialog->dip_acceptthumb1, get_thumb_pixmap(pdialog->treaty.accept1)); }
/************************************************************************** Called when the tileset is changed to reset unit pixmaps. **************************************************************************/ void reset_unit_below_pixmaps(void) { long i; for (i = 0; i < num_units_below; i++) { XFreePixmap(display, unit_below_pixmap[i]); } xaw_set_bitmap(more_arrow_label, None); fill_unit_below_pixmaps(); set_unit_icons_more_arrow(FALSE); if (get_num_units_in_focus() == 1) { set_unit_icon(-1, head_of_units_in_focus()); } else { set_unit_icon(-1, NULL); } update_unit_pix_label(get_units_in_focus()); }
/**************************************************************** ... *****************************************************************/ void city_dialog_update_citizens(struct city_dialog *pdialog) { int i, n; struct city *pcity=pdialog->pcity; for(i=0, n=0; n<pcity->ppl_happy[4] && i<NO_CITIZENS_SHOWN; n++, i++) if(pdialog->citizen_type[i]!=5 && pdialog->citizen_type[i]!=6) { pdialog->citizen_type[i]=5+i%2; xaw_set_bitmap(pdialog->citizen_labels[i], get_citizen_pixmap(pdialog->citizen_type[i])); XtSetSensitive(pdialog->citizen_labels[i], FALSE); XtRemoveAllCallbacks(pdialog->citizen_labels[i], XtNcallback); } for(n=0; n<pcity->ppl_content[4] && i<NO_CITIZENS_SHOWN; n++, i++) if(pdialog->citizen_type[i]!=3 && pdialog->citizen_type[i]!=4) { pdialog->citizen_type[i]=3+i%2; xaw_set_bitmap(pdialog->citizen_labels[i], get_citizen_pixmap(pdialog->citizen_type[i])); XtSetSensitive(pdialog->citizen_labels[i], FALSE); XtRemoveAllCallbacks(pdialog->citizen_labels[i], XtNcallback); } for(n=0; n<pcity->ppl_unhappy[4] && i<NO_CITIZENS_SHOWN; n++, i++) if(pdialog->citizen_type[i]!=7) { xaw_set_bitmap(pdialog->citizen_labels[i], get_citizen_pixmap(7)); pdialog->citizen_type[i]=7; XtRemoveAllCallbacks(pdialog->citizen_labels[i], XtNcallback); XtSetSensitive(pdialog->citizen_labels[i], FALSE); } for(n=0; n<pcity->ppl_elvis && i<NO_CITIZENS_SHOWN; n++, i++) if(pdialog->citizen_type[i]!=0) { xaw_set_bitmap(pdialog->citizen_labels[i], get_citizen_pixmap(0)); pdialog->citizen_type[i]=0; XtRemoveAllCallbacks(pdialog->citizen_labels[i], XtNcallback); XtAddCallback(pdialog->citizen_labels[i], XtNcallback, elvis_callback, (XtPointer)pdialog); XtSetSensitive(pdialog->citizen_labels[i], TRUE); } for(n=0; n<pcity->ppl_scientist && i<NO_CITIZENS_SHOWN; n++, i++) if(pdialog->citizen_type[i]!=1) { xaw_set_bitmap(pdialog->citizen_labels[i], get_citizen_pixmap(1)); pdialog->citizen_type[i]=1; XtRemoveAllCallbacks(pdialog->citizen_labels[i], XtNcallback); XtAddCallback(pdialog->citizen_labels[i], XtNcallback, scientist_callback, (XtPointer)pdialog); XtSetSensitive(pdialog->citizen_labels[i], TRUE); } for(n=0; n<pcity->ppl_taxman && i<NO_CITIZENS_SHOWN; n++, i++) if(pdialog->citizen_type[i]!=2) { xaw_set_bitmap(pdialog->citizen_labels[i], get_citizen_pixmap(2)); pdialog->citizen_type[i]=2; XtRemoveAllCallbacks(pdialog->citizen_labels[i], XtNcallback); XtAddCallback(pdialog->citizen_labels[i], XtNcallback, taxman_callback, (XtPointer)pdialog); XtSetSensitive(pdialog->citizen_labels[i], TRUE); } for(; i<NO_CITIZENS_SHOWN; i++) { xaw_set_bitmap(pdialog->citizen_labels[i], None); XtSetSensitive(pdialog->citizen_labels[i], FALSE); XtRemoveAllCallbacks(pdialog->citizen_labels[i], XtNcallback); } }