? civscore.log ? rand_pos.diff ? title.diff ? diff ? tinydent-1.11.4.tar.gz ? null_flags1.diff ? map_iterate.diff ? data/tinydent ? data/tinydent.tilespec ? data/tinydent.mod ? data/tinydent1.diff Index: common/game.c =================================================================== RCS file: /home/freeciv/CVS/freeciv/common/game.c,v retrieving revision 1.112 diff -u -r1.112 game.c --- common/game.c 2001/10/26 07:33:23 1.112 +++ common/game.c 2001/11/11 14:28:23 @@ -104,12 +104,38 @@ return (((when >= 0) && (when < sizeof (list))) ? list[when] : '?'); } +/* + * Writes the map_char_expr expression for each position on the map. + * map_char_expr is provided with the variables x,y to evaluate the + * position. The 'type' argument is used for formatting by printf; for + * instance it should be "%c" for characters. + */ +#define WRITE_MAP_DATA(type, map_char_expr) \ +{ \ + int x, y; \ + for (x = 0; x < map.xsize; x++) { \ + printf("%d", x % 10); \ + } \ + putchar('\n'); \ + for (y = 0; y < map.ysize; y++) { \ + printf("%d ", y % 10); \ + for (x = 0; x < map.xsize; x++) { \ + if (regular_map_pos_is_normal(x, y)) { \ + printf(type, map_char_expr); \ + } else { \ + putchar(' '); \ + } \ + } \ + printf(" %d\n", y % 10); \ + } \ +} + /************************************************************************** ... **************************************************************************/ static void print_landarea_map(struct claim_map *pcmap, int turn) { - int x, y, p; + int p; if (turn == 0) { putchar ('\n'); @@ -122,78 +148,27 @@ for (p = 0; p < game.nplayers; p++) { printf (".know (%d)\n ", p); - for (x = 0; x < map.xsize; x++) - { - printf ("%d", x % 10); - } - putchar ('\n'); - for (y = 0; y < map.ysize; y++) - { - printf ("%d ", y % 10); - for (x = 0; x < map.xsize; x++) - { - printf ("%c", - (pcmap->claims[map_inx(x,y)].know & (1u << p)) ? - 'X' : - '-'); - } - printf (" %d\n", y % 10); - } + WRITE_MAP_DATA("%c", + pcmap->claims[map_inx(x, y)]. + know & (1u << p) ? 'X' : '-'); printf (".cities (%d)\n ", p); - for (x = 0; x < map.xsize; x++) - { - printf ("%d", x % 10); - } - putchar ('\n'); - for (y = 0; y < map.ysize; y++) - { - printf ("%d ", y % 10); - for (x = 0; x < map.xsize; x++) - { - printf ("%c", - (pcmap->claims[map_inx(x,y)].cities & (1u << p)) ? - 'O' : - '-'); - } - printf (" %d\n", y % 10); - } + WRITE_MAP_DATA("%c", + pcmap->claims[map_inx(x, y)]. + cities & (1u << p) ? 'O' : '-'); } } printf ("Turn %d (%c)...\n", turn, when_char (turn)); printf (".whom\n "); - for (x = 0; x < map.xsize; x++) - { - printf ("%d", x % 10); - } - putchar ('\n'); - for (y = 0; y < map.ysize; y++) - { - printf ("%d ", y % 10); - for (x = 0; x < map.xsize; x++) - { - printf ("%X", pcmap->claims[map_inx(x,y)].whom); - } - printf (" %d\n", y % 10); - } + WRITE_MAP_DATA((pcmap->claims[map_inx(x, y)].whom == + 32) ? "%c" : "%X", + (pcmap->claims[map_inx(x, y)].whom == + 32) ? '-' : pcmap->claims[map_inx(x, y)].whom); printf (".when\n "); - for (x = 0; x < map.xsize; x++) - { - printf ("%d", x % 10); - } - putchar ('\n'); - for (y = 0; y < map.ysize; y++) - { - printf ("%d ", y % 10); - for (x = 0; x < map.xsize; x++) - { - printf ("%c", when_char (pcmap->claims[map_inx(x,y)].when)); - } - printf (" %d\n", y % 10); - } + WRITE_MAP_DATA("%c", when_char(pcmap->claims[map_inx(x, y)].when)); } #endif Index: common/map.h =================================================================== RCS file: /home/freeciv/CVS/freeciv/common/map.h,v retrieving revision 1.101 diff -u -r1.101 map.h --- common/map.h 2001/10/30 10:59:20 1.101 +++ common/map.h 2001/11/11 14:28:24 @@ -274,6 +274,14 @@ enum known_type tile_is_known(int x, int y); int is_real_tile(int x, int y); int is_normal_map_pos(int x, int y); + +/* + * Determines whether the position is normal given that it's in the + * range 0<=xname); sz_strlcpy(barbarians->username, barbarians->name); /* I need to make them to forget the map, I think */ - for( j = 0; j < map.xsize; j++ ) - for( k = 0; k < map.ysize; k++ ) - map_clear_known( j, k, barbarians); + whole_map_iterate(x, y) { + map_clear_known(x, y, barbarians); + } whole_map_iterate_end; } barbarians->economic.gold += 100; /* New leader, new money */ return barbarians; Index: server/gamelog.c =================================================================== RCS file: /home/freeciv/CVS/freeciv/server/gamelog.c,v retrieving revision 1.14 diff -u -r1.14 gamelog.c --- server/gamelog.c 2001/01/13 13:43:38 1.14 +++ server/gamelog.c 2001/11/11 14:28:25 @@ -91,7 +91,11 @@ for (y=0;yplayer; @@ -297,21 +306,18 @@ } if (pplayer) { - for (x=0; xself, x, y, 0); - send_tile_info_always(pplayer, &pconn->self, x, y); - } - } - } else { - for (x=0; xself, x, y, 0); send_tile_info_always(pplayer, &pconn->self, x, y); } + } else { + send_tile_info_always(pplayer, &pconn->self, x, y); } } conn_list_iterate_end; - conn_list_do_unbuffer(dest); - flush_packets(); - } + } whole_map_iterate_end; + + conn_list_do_unbuffer(dest); + flush_packets(); } /************************************************************************** Index: server/savegame.c =================================================================== RCS file: /home/freeciv/CVS/freeciv/server/savegame.c,v retrieving revision 1.39 diff -u -r1.39 savegame.c --- server/savegame.c 2001/11/01 10:03:06 1.39 +++ server/savegame.c 2001/11/11 14:28:27 @@ -68,7 +68,7 @@ \ for (y = 0; y < map.ysize; y++) { \ for (x = 0; x < map.xsize; x++) { \ - if (is_normal_map_pos(x, y)) { \ + if (regular_map_pos_is_normal(x, y)) { \ line[x] = get_xy_char; \ if(!isprint(line[x] & 0x7f)) { \ freelog(LOG_FATAL, "Trying to write invalid" \ @@ -127,7 +127,7 @@ } \ for(x = 0; x < map.xsize; x++) { \ char ch = line[x]; \ - if (is_normal_map_pos(x, y)) { \ + if (regular_map_pos_is_normal(x, y)) { \ set_xy_char; \ } else { \ assert(ch == '#'); \