367
373
/* try to trace that hard-to-find assert that we sometimes get */
368
freelog(LOG_NORMAL, "show_city_desc(%s) pcx=%d->%d (%d) pcy=%d->%d (%d)", city_name(pcity),
374
freelog(LOG_TEST, "show_city_desc(%s) pcx=%d->%d (%d) pcy=%d->%d (%d)", city_name(pcity),
369
375
canvas_x, canvas_x+tileset_tile_width(tileset) / 2, all_rect.width,
370
376
canvas_y, canvas_y+tileset_tile_height(tileset), all_rect.height);
383
389
line1_b = ct_string_clone4(style->growth_template, buffer2,
384
390
enum_color_to_be_color(color));
386
if (draw_city_productions && (city_owner(pcity) == game.player_idx)) {
392
if (draw_city_productions && (city_owner(pcity) == client.conn.playing)) {
387
393
get_city_mapview_production(pcity, buffer, sizeof(buffer));
389
395
ct_string_clone4(style->prod_template, buffer,
450
456
freelog(LOG_DEBUG, "flush_mapcanvas=%s", ct_rect_to_string(&rect));
451
457
be_copy_osda_to_osda(sw_window_get_canvas_background(mapview_window),
452
458
mapview.store->osda, &size, &pos, &pos);
453
sw_window_canvas_background_region_needs_repaint(mapview_window,
459
sw_window_canvas_background_region_needs_repaint(mapview_window, &rect);
457
462
/**************************************************************************
461
466
void dirty_rect(int canvas_x, int canvas_y,
462
467
int pixel_width, int pixel_height)
464
struct ct_rect rect = { canvas_x, canvas_y, pixel_width, pixel_height };
466
//freelog(LOG_NORMAL, "dirty_rect(...)");
467
sw_window_canvas_background_region_needs_repaint(mapview_window, &rect);
470
struct ct_rect *rect = fc_malloc(sizeof(*rect));
472
*rect = (struct ct_rect){ canvas_x, canvas_y, pixel_width, pixel_height };
474
//freelog(LOG_TEST, "dirty_rect(...)");
475
region_list_append(region_list, rect);
470
479
/**************************************************************************
487
492
**************************************************************************/
488
493
void flush_dirty(void)
490
flush_mapcanvas(0, 0, mapview.width, mapview.height);
496
region_list_iterate(region_list, region) {
498
} region_list_iterate_end;
499
region_list_clear(region_list);
501
flush_mapcanvas(0, 0, mapview.width, mapview.height);
504
region_list_iterate(region_list, region) {
505
flush_mapcanvas(region->x, region->y, region->width, region->height);
507
} region_list_iterate_end;
508
region_list_clear(region_list);
493
513
/**************************************************************************
855
875
char *action = (char *) data;
857
freelog(LOG_NORMAL, "action '%s' requested", action);
877
freelog(LOG_VERBOSE, "action_button_callback(): action '%s' requested", action);
879
if (strcmp(action, "unit_fortifying") == 0) {
881
} else if (strcmp(action, "unit_add_to_city") == 0) {
882
key_unit_build_city();
883
} else if (strcmp(action, "unit_build_city") == 0) {
884
key_unit_build_city();
885
} else if (strcmp(action, "unit_auto_explore") == 0) {
886
key_unit_auto_explore();
887
} else if (strcmp(action, "unit_irrigate") == 0) {
889
} else if (strcmp(action, "unit_sentry") == 0) {
891
} else if (strcmp(action, "unit_return_nearest") == 0) {
893
} else if (strcmp(action, "unit_disband") == 0) {
895
} else if (strcmp(action, "unit_mine") == 0) {
897
} else if (strcmp(action, "unit_road") == 0) {
899
} else if (strcmp(action, "unit_auto_settler") == 0) {
900
key_unit_auto_settle();
901
} else if (strcmp(action, "unit_connect") == 0) {
902
/* key_unit_connect(enum unit_activity activity);*/
903
} else if (strcmp(action, "unit_auto_attack") == 0) {
905
} else if (strcmp(action, "unit_homecity") == 0) {
907
} else if (strcmp(action, "unit_fortress") == 0) {
909
} else if (strcmp(action, "unit_pillage") == 0) {
911
} else if (strcmp(action, "unit_airbase") == 0) {
913
} else if (strcmp(action, "unit_transform") == 0) {
914
key_unit_transform();
915
} else if (strcmp(action, "unit_unload") == 0) {
916
key_unit_unload_all();
917
} else if (strcmp(action, "unit_goto") == 0) {
919
} else if (strcmp(action, "unit_goto_city") == 0) {
921
} else if (strcmp(action, "unit_airlift") == 0) {
923
} else if (strcmp(action, "unit_patrol") == 0) {
925
} else if (strcmp(action, "unit_wait") == 0) {
927
} else if (strcmp(action, "unit_railroad") == 0) {
929
} else if (strcmp(action, "unit_done") == 0) {
933
"action_button_callback(): action request '%s' not handled", action);
860
937
/**************************************************************************
1121
1198
return textyear(game.info.year);
1122
1199
} else if (strcmp(id, "gold") == 0) {
1123
1200
my_snprintf(buffer, sizeof(buffer),
1124
"%d", game.player_ptr->economic.gold);
1201
"%d", client.conn.playing->economic.gold);
1126
1203
} else if (strcmp(id, "nation_name") == 0) {
1127
return nation_plural_for_player(game.player_ptr);
1204
return nation_plural_for_player(client.conn.playing);
1128
1205
} else if (strcmp(id, "population") == 0) {
1129
return population_to_text(civ_population(game.player_ptr));
1206
return population_to_text(civ_population(client.conn.playing));
1130
1207
} else if (strcmp(id, "general") == 0) {
1131
1208
my_snprintf(buffer, sizeof(buffer),
1132
1209
_("Population: %s\n"
1135
1212
"Tax: %d Lux: %d Sci: %d"),
1136
population_to_text(civ_population(game.player_ptr)),
1137
textyear(game.info.year), game.player_ptr->economic.gold,
1138
game.player_ptr->economic.tax,
1139
game.player_ptr->economic.luxury,
1140
game.player_ptr->economic.science);
1213
population_to_text(civ_population(client.conn.playing)),
1214
textyear(game.info.year),
1215
client.conn.playing->economic.gold,
1216
client.conn.playing->economic.tax,
1217
client.conn.playing->economic.luxury,
1218
client.conn.playing->economic.science);
1142
1220
} else if (strcmp(id, "focus_item") == 0) {
1143
1221
return tile_list2.item[tile_list2.selected].info_text;
1149
1227
"Tax: %d Lux: %d Sci: %d"),
1150
population_to_text(civ_population(game.player_ptr)),
1151
textyear(game.info.year), game.player_ptr->economic.gold,
1152
game.player_ptr->economic.tax,
1153
game.player_ptr->economic.luxury,
1154
game.player_ptr->economic.science);
1228
population_to_text(civ_population(client.conn.playing)),
1229
textyear(game.info.year),
1230
client.conn.playing->economic.gold,
1231
client.conn.playing->economic.tax,
1232
client.conn.playing->economic.luxury,
1233
client.conn.playing->economic.science);
1211
1292
**************************************************************************/
1212
1293
void popdown_mapcanvas(void)
1295
region_list_iterate(region_list, region) {
1297
} region_list_iterate_end;
1298
region_list_free(region_list);
1214
1300
te_destroy_screen(screen);
1227
1313
**************************************************************************/
1228
1314
static void unshow_actions(void)
1316
struct ct_rect rect;
1232
1319
for (i = 0; i < actions_shown.actions; i++) {
1320
sw_widget_get_bounds(actions_shown.action[i].widget, &rect);
1321
be_draw_region(sw_widget_get_osda(screen->window), &rect,
1322
be_get_color(0, 0, 0, MIN_OPACITY));
1233
1323
sw_window_remove(actions_shown.action[i].widget);
1234
1324
actions_shown.action[i].widget = NULL;
1235
1325
free(actions_shown.action[i].name);
1319
1409
if (unit_can_help_build_wonder_here(punit)) {
1320
1410
ADD("unit_help_wonder");
1322
if (unit_can_est_traderoute_here(punit)) {
1323
ADD("unit_traderoute");
1412
if (unit_can_est_trade_route_here(punit)) {
1413
ADD("unit_trade_route");
1326
1416
if (can_unit_add_or_build_city(punit)) {
1327
if (tile_get_city(punit->tile)) {
1417
if (tile_city(punit->tile)) {
1328
1418
ADD("unit_add_to_city");
1330
1420
ADD("unit_build_city");