diff -urd -X work/diff_ignore freeciv.current/server/citytools.c work/server/citytools.c --- freeciv.current/server/citytools.c Fri Aug 24 09:13:23 2001 +++ work/server/citytools.c Fri Aug 24 20:30:15 2001 @@ -1145,7 +1145,7 @@ static void package_dumb_city(struct player* pplayer, int x, int y, struct packet_short_city *packet) { - struct dumb_city *pdcity = map_get_player_tile(x, y, pplayer->player_no)->city; + struct dumb_city *pdcity = map_get_player_tile(x, y, pplayer)->city; struct city *pcity; packet->id=pdcity->id; packet->owner=pdcity->owner; @@ -1238,7 +1238,7 @@ for(y=0; yplayer_no)->city) { + || map_get_player_tile(x, y, pplayer)->city) { send_city_info_at_tile(pplayer, &pconn->self, NULL, x, y); } } @@ -1345,7 +1345,7 @@ lsend_packet_short_city(dest, &sc_pack); } } else { /* not seen; send old info */ - pdcity = map_get_player_tile(x, y, pviewer->player_no)->city; + pdcity = map_get_player_tile(x, y, pviewer)->city; if (pdcity) { package_dumb_city(pviewer, x, y, &sc_pack); lsend_packet_short_city(dest, &sc_pack); @@ -1437,7 +1437,7 @@ void update_dumb_city(struct player *pplayer, struct city *pcity) { struct player_tile *plrtile = map_get_player_tile(pcity->x, pcity->y, - pplayer->player_no); + pplayer); struct dumb_city *pdcity; if (!plrtile->city) { plrtile->city = fc_malloc(sizeof(struct dumb_city)); @@ -1462,7 +1462,7 @@ { struct packet_generic_integer packet; struct city *pcity; - struct dumb_city *pdcity = map_get_player_tile(x, y, pplayer->player_no)->city; + struct dumb_city *pdcity = map_get_player_tile(x, y, pplayer)->city; if (pdcity) { pcity = map_get_tile(x,y)->city; @@ -1471,7 +1471,7 @@ lsend_packet_generic_integer(&pplayer->connections, PACKET_REMOVE_CITY, &packet); free(pdcity); - map_get_player_tile(x, y, pplayer->player_no)->city = NULL; + map_get_player_tile(x, y, pplayer)->city = NULL; } } } diff -urd -X work/diff_ignore freeciv.current/server/maphand.c work/server/maphand.c --- freeciv.current/server/maphand.c Fri Aug 24 09:23:29 2001 +++ work/server/maphand.c Fri Aug 24 20:44:48 2001 @@ -50,7 +50,7 @@ static void map_clear_sent(int x, int y, struct player *pplayer); static void set_unknown_tiles_to_unsent(struct player *pplayer); static void shared_vision_change_seen(int x, int y, struct player *pplayer, int change); -static int map_get_seen(int x, int y, int playerid); +static int map_get_seen(int x, int y, struct player *pplayer); /************************************************************************** Used only in global_warming() and nuclear_winter() below. @@ -377,13 +377,13 @@ info.special = ptile->special; } else if (map_get_known(x, y, pplayer)) { - if (map_get_seen(x, y, pplayer->player_no)) { /* known and seen */ + if (map_get_seen(x, y, pplayer)) { /* known and seen */ update_tile_knowledge(pplayer,x,y); /* visible; update info */ info.known = TILE_KNOWN; } else { /* known but not seen */ info.known = TILE_KNOWN_FOGGED; } - plrtile = map_get_player_tile(x, y, pplayer->player_no); + plrtile = map_get_player_tile(x, y, pplayer); info.type = plrtile->terrain; info.special = plrtile->special; } else { /* unknown (the client needs these sometimes to draw correctly) */ @@ -399,7 +399,7 @@ **************************************************************************/ static int map_get_pending_seen(struct player *pplayer, int x, int y) { - return map_get_player_tile(x, y, pplayer->player_no)->pending_seen; + return map_get_player_tile(x, y, pplayer)->pending_seen; } /************************************************************************** @@ -407,7 +407,7 @@ **************************************************************************/ static void map_set_pending_seen(struct player *pplayer, int x, int y, int newv) { - map_get_player_tile(x, y, pplayer->player_no)->pending_seen = newv; + map_get_player_tile(x, y, pplayer)->pending_seen = newv; } /************************************************************************** @@ -415,7 +415,7 @@ **************************************************************************/ static void increment_pending_seen(struct player *pplayer, int x, int y) { - map_get_player_tile(x, y, pplayer->player_no)->pending_seen += 1; + map_get_player_tile(x, y, pplayer)->pending_seen += 1; } /************************************************************************** @@ -423,9 +423,9 @@ **************************************************************************/ static void decrement_pending_seen(struct player *pplayer, int x, int y) { - struct player_tile *plr_tile = map_get_player_tile(x, y, pplayer->player_no); + struct player_tile *plr_tile = map_get_player_tile(x, y, pplayer); assert(plr_tile->pending_seen != 0); - map_get_player_tile(x, y, pplayer->player_no)->pending_seen -= 1; + map_get_player_tile(x, y, pplayer)->pending_seen -= 1; } /************************************************************************** @@ -489,14 +489,13 @@ **************************************************************************/ void unfog_area(struct player *pplayer, int x, int y, int len) { - int playerid = pplayer->player_no; /* Did the tile just become visible? - send info about units and cities and the tile itself */ buffer_shared_vision(pplayer); square_iterate(x, y, len, abs_x, abs_y) { /* the player himself */ shared_vision_change_seen(abs_x, abs_y, pplayer, +1); - if (map_get_seen(abs_x, abs_y, playerid) == 1 + if (map_get_seen(abs_x, abs_y, pplayer) == 1 || !map_get_known(abs_x, abs_y, pplayer)) really_unfog_area(pplayer, abs_x, abs_y); @@ -506,7 +505,7 @@ if (!(pplayer->really_gives_vision & (1<player_no; - freelog(LOG_DEBUG, "Fogging %i,%i. Previous fog: %i.", - x, y, map_get_seen(x, y, playerid)); + x, y, map_get_seen(x, y, pplayer)); - assert(map_get_seen(x, y, playerid) == 0); + assert(map_get_seen(x, y, pplayer) == 0); update_player_tile_last_seen(pplayer, x, y); send_tile_info_always(pplayer, &pplayer->connections, x, y); } @@ -557,14 +554,12 @@ **************************************************************************/ void fog_area(struct player *pplayer, int x, int y, int len) { - int playerid = pplayer->player_no; - buffer_shared_vision(pplayer); square_iterate(x, y, len, abs_x, abs_y) { if (map_get_known(abs_x, abs_y, pplayer)) { /* the player himself */ shared_vision_change_seen(abs_x, abs_y, pplayer, -1); - if (map_get_seen(abs_x, abs_y, playerid) == 0) + if (map_get_seen(abs_x, abs_y, pplayer) == 0) really_fog_area(pplayer, abs_x, abs_y); /* players (s)he gives shared vision */ @@ -572,7 +567,7 @@ int playerid2 = pplayer2->player_no; if (!(pplayer->really_gives_vision & (1<player_no; - map_change_seen(x, y, playerid, change); - map_change_own_seen(x, y, playerid, change); + map_change_seen(x, y, pplayer, change); + map_change_own_seen(x, y, pplayer, change); players_iterate(pplayer2) { int playerid2 = pplayer2->player_no; if (pplayer->really_gives_vision & (1<units, punit) send_unit_info(pplayer, punit); unit_list_iterate_end; @@ -783,38 +777,39 @@ /*************************************************************** Watch out - this can be true even if the tile is not known. ***************************************************************/ -static int map_get_seen(int x, int y, int playerid) +static int map_get_seen(int x, int y, struct player *pplayer) { - return map_get_player_tile(x, y, playerid)->seen; + return map_get_player_tile(x, y, pplayer)->seen; } /*************************************************************** ... ***************************************************************/ -void map_change_seen(int x, int y, int playerid, int change) +void map_change_seen(int x, int y, struct player *pplayer, int change) { - map_get_player_tile(x, y, playerid)->seen += change; - freelog(LOG_DEBUG, "%d,%d, p: %d, change %d, result %d\n", x, y, playerid, change, - map_get_player_tile(x, y, playerid)->seen); + map_get_player_tile(x, y, pplayer)->seen += change; + freelog(LOG_DEBUG, "%d,%d, p: %d, change %d, result %d\n", x, y, + pplayer->player_no, change, map_get_player_tile(x, y, + pplayer)->seen); } /*************************************************************** ... ***************************************************************/ -int map_get_own_seen(int x, int y, int playerid) +int map_get_own_seen(int x, int y, struct player *pplayer) { - int own_seen = map_get_player_tile(x, y, playerid)->own_seen; + int own_seen = map_get_player_tile(x, y, pplayer)->own_seen; if (own_seen) - assert(map_get_known(x, y, get_player(playerid))); + assert(map_get_known(x, y, pplayer)); return own_seen; } /*************************************************************** ... ***************************************************************/ -void map_change_own_seen(int x, int y, int playerid, int change) +void map_change_own_seen(int x, int y, struct player *pplayer, int change) { - map_get_player_tile(x, y, playerid)->own_seen += change; + map_get_player_tile(x, y, pplayer)->own_seen += change; } /*************************************************************** @@ -927,7 +922,7 @@ static void player_tile_init(int x, int y, struct player *pplayer) { struct player_tile *plrtile = - map_get_player_tile(x, y, pplayer->player_no); + map_get_player_tile(x, y, pplayer); plrtile->terrain = T_UNKNOWN; plrtile->special = S_NO_SPECIAL; @@ -950,15 +945,15 @@ /*************************************************************** ... ***************************************************************/ -struct player_tile *map_get_player_tile(int x, int y, int playerid) +struct player_tile *map_get_player_tile(int x, int y, + struct player *pplayer) { - if(y<0 || y>=map.ysize) { - freelog(LOG_ERROR, "Trying to get nonexistant tile at %i,%i", x,y); - return get_player(playerid)->private_map - + map_adjust_x(x)+map_adjust_y(y)*map.xsize; + if (y < 0 || y >= map.ysize) { + freelog(LOG_ERROR, "Trying to get nonexistant tile at %i,%i", x, y); + return pplayer->private_map + + map_adjust_x(x) + map_adjust_y(y) * map.xsize; } else - return get_player(playerid)->private_map - + map_adjust_x(x)+y*map.xsize; + return pplayer->private_map + map_adjust_x(x) + y * map.xsize; } /*************************************************************** @@ -967,7 +962,7 @@ void update_tile_knowledge(struct player *pplayer, int x, int y) { struct tile *ptile = map_get_tile(x, y); - struct player_tile *plrtile = map_get_player_tile(x, y, pplayer->player_no); + struct player_tile *plrtile = map_get_player_tile(x, y, pplayer); plrtile->terrain = ptile->terrain; plrtile->special = ptile->special; @@ -978,7 +973,7 @@ ***************************************************************/ void update_player_tile_last_seen(struct player *pplayer, int x, int y) { - map_get_player_tile(x, y, pplayer->player_no)->last_updated = game.year; + map_get_player_tile(x, y, pplayer)->last_updated = game.year; } /*************************************************************** @@ -999,11 +994,11 @@ OR it is not known by pdest) */ if (map_get_known_and_seen(x, y, pfrom->player_no) || (map_get_known(x,y,pfrom) - && (((map_get_player_tile(x, y, pfrom->player_no)->last_updated - > map_get_player_tile(x, y, pdest->player_no)->last_updated)) + && (((map_get_player_tile(x, y, pfrom)->last_updated + > map_get_player_tile(x, y, pdest)->last_updated)) || !map_get_known(x, y, pdest)))) { - from_tile = map_get_player_tile(x, y, pfrom->player_no); - dest_tile = map_get_player_tile(x, y, pdest->player_no); + from_tile = map_get_player_tile(x, y, pfrom); + dest_tile = map_get_player_tile(x, y, pdest); /* Update and send tile knowledge */ map_set_known(x, y, pdest); dest_tile->terrain = from_tile->terrain; @@ -1135,10 +1130,10 @@ freelog(LOG_DEBUG, "really giving shared vision from %s to %s\n", pplayer->username, pplayer2->username); whole_map_iterate(x, y) { - int change = map_get_own_seen(x, y, pplayer->player_no); + int change = map_get_own_seen(x, y, pplayer); if (change) { - map_change_seen(x, y, pplayer2->player_no, change); - if (map_get_seen(x, y, pplayer2->player_no) == change) { + map_change_seen(x, y, pplayer2, change); + if (map_get_seen(x, y, pplayer2) == change) { really_unfog_area(pplayer2, x, y); reveal_pending_seen(pplayer2, x, y, 0); } @@ -1189,10 +1184,10 @@ freelog(LOG_DEBUG, "really removing shared vision from %s to %s\n", pplayer->username, pplayer2->username); whole_map_iterate(x, y) { - int change = map_get_own_seen(x, y, pplayer->player_no); + int change = map_get_own_seen(x, y, pplayer); if (change > 0) { - map_change_seen(x, y, pplayer2->player_no, -change); - if (map_get_seen(x, y, pplayer2->player_no) == 0) + map_change_seen(x, y, pplayer2, -change); + if (map_get_seen(x, y, pplayer2) == 0) really_fog_area(pplayer2, x, y); } } whole_map_iterate_end; diff -urd -X work/diff_ignore freeciv.current/server/maphand.h work/server/maphand.h --- freeciv.current/server/maphand.h Sun Jan 28 22:53:09 2001 +++ work/server/maphand.h Fri Aug 24 20:42:07 2001 @@ -62,9 +62,9 @@ void map_fog_pseudo_city_area(struct player *pplayer, int x,int y); int map_get_known_and_seen(int x, int y, int playerid); -void map_change_seen(int x, int y, int playerid, int change); -int map_get_own_seen(int x, int y, int playerid); -void map_change_own_seen(int x, int y, int playerid, int change); +void map_change_seen(int x, int y, struct player *pplayer, int change); +int map_get_own_seen(int x, int y, struct player *pplayer); +void map_change_own_seen(int x, int y, struct player *pplayer, int change); int map_get_known(int x, int y, struct player *pplayer); void map_set_known(int x, int y, struct player *pplayer); void map_clear_known(int x, int y, struct player *pplayer); @@ -72,7 +72,8 @@ void map_know_and_see_all(struct player *pplayer); void show_map_to_all(void); void player_map_allocate(struct player *pplayer); -struct player_tile *map_get_player_tile(int x, int y, int playerid); +struct player_tile *map_get_player_tile(int x, int y, + struct player *pplayer); void update_tile_knowledge(struct player *pplayer,int x, int y); void update_player_tile_last_seen(struct player *pplayer, int x, int y); diff -urd -X work/diff_ignore freeciv.current/server/sanitycheck.c work/server/sanitycheck.c --- freeciv.current/server/sanitycheck.c Wed May 23 20:21:29 2001 +++ work/server/sanitycheck.c Fri Aug 24 20:45:54 2001 @@ -56,7 +56,7 @@ { whole_map_iterate(x, y) { players_iterate(pplayer) { - struct player_tile *plr_tile = map_get_player_tile(x, y, pplayer->player_no); + struct player_tile *plr_tile = map_get_player_tile(x, y, pplayer); /* underflow of unsigned int */ assert(plr_tile->seen < 60000); assert(plr_tile->own_seen < 60000); diff -urd -X work/diff_ignore freeciv.current/server/savegame.c work/server/savegame.c --- freeciv.current/server/savegame.c Fri Aug 24 09:24:28 2001 +++ work/server/savegame.c Fri Aug 24 20:50:44 2001 @@ -1143,7 +1143,7 @@ if (!plr->is_alive) for (x=0; xterrain=pch-terrain_chars; + map_get_player_tile(x, y, plr)->terrain=pch-terrain_chars; } } @@ -1177,14 +1177,14 @@ char ch=terline[x]; if(isxdigit(ch)) { - map_get_player_tile(x, y, plrno)->special=ch-(isdigit(ch) ? '0' : ('a'-10)); + map_get_player_tile(x, y, plr)->special=ch-(isdigit(ch) ? '0' : ('a'-10)); } else if(ch!=' ') { freelog(LOG_FATAL, "unknown special flag(lower) (map.l) in map " "at position(%d,%d): %d '%c'", x, y, ch, ch); exit(1); } else - map_get_player_tile(x, y, plrno)->special=S_NO_SPECIAL; + map_get_player_tile(x, y, plr)->special=S_NO_SPECIAL; } } @@ -1196,7 +1196,7 @@ char ch=terline[x]; if(isxdigit(ch)) { - map_get_player_tile(x, y, plrno)->special|=(ch-(isdigit(ch) ? '0' : 'a'-10))<<4; + map_get_player_tile(x, y, plr)->special|=(ch-(isdigit(ch) ? '0' : 'a'-10))<<4; } else if(ch!=' ') { freelog(LOG_FATAL, "unknown special flag(upper) (map.u) in map " "at position(%d,%d): %d '%c'", x, y, ch, ch); @@ -1214,7 +1214,7 @@ char ch=terline[x]; if(isxdigit(ch)) { - map_get_player_tile(x, y, plrno)->special|=(ch-(isdigit(ch) ? '0' : 'a'-10))<<8; + map_get_player_tile(x, y, plr)->special|=(ch-(isdigit(ch) ? '0' : 'a'-10))<<8; } else if(ch!=' ') { freelog(LOG_FATAL, "unknown special flag(next) (map.n) in map " "at position(%d,%d): %d '%c'", x, y, ch, ch); @@ -1231,7 +1231,7 @@ for(x=0; xlast_updated = ch-(isdigit(ch) ? '0' : ('a'-10)); + map_get_player_tile(x, y, plr)->last_updated = ch-(isdigit(ch) ? '0' : ('a'-10)); } } @@ -1241,7 +1241,7 @@ for(x=0; xlast_updated |= (ch-(isdigit(ch) ? '0' : 'a'-10))<<4; + map_get_player_tile(x, y, plr)->last_updated |= (ch-(isdigit(ch) ? '0' : 'a'-10))<<4; } } @@ -1252,7 +1252,7 @@ if (terline) { for(x=0; xlast_updated |= (ch-(isdigit(ch) ? '0' : 'a'-10))<<8; + map_get_player_tile(x, y, plr)->last_updated |= (ch-(isdigit(ch) ? '0' : 'a'-10))<<8; } } } @@ -1264,7 +1264,7 @@ if (terline) { for(x=0; xlast_updated |= (ch-(isdigit(ch) ? '0' : 'a'-10))<<12; + map_get_player_tile(x, y, plr)->last_updated |= (ch-(isdigit(ch) ? '0' : 'a'-10))<<12; } } } @@ -1282,7 +1282,7 @@ pdcity->size = secfile_lookup_int(file, "player%d.dc%d.size", plrno, j); pdcity->has_walls = secfile_lookup_int(file, "player%d.dc%d.has_walls", plrno, j); pdcity->owner = secfile_lookup_int(file, "player%d.dc%d.owner", plrno, j); - map_get_player_tile(x, y, plrno)->city = pdcity; + map_get_player_tile(x, y, plr)->city = pdcity; alloc_id(pdcity->id); } } @@ -1613,7 +1613,7 @@ /* put the terrain type */ for(y=0; yterrain]; + pbuf[x]=terrain_chars[map_get_player_tile(x, y, plr)->terrain]; pbuf[x]='\0'; secfile_insert_str(file, pbuf, "player%d.map_t%03d", plrno, y); @@ -1622,7 +1622,7 @@ /* put lower 4 bits of special flags */ for(y=0; yspecial&0xf]; + pbuf[x]=dec2hex[map_get_player_tile(x, y, plr)->special&0xf]; pbuf[x]='\0'; secfile_insert_str(file, pbuf, "player%d.map_l%03d",plrno, y); @@ -1631,7 +1631,7 @@ /* put upper 4 bits of special flags */ for(y=0; yspecial&0xf0)>>4]; + pbuf[x]=dec2hex[(map_get_player_tile(x, y, plr)->special&0xf0)>>4]; pbuf[x]='\0'; secfile_insert_str(file, pbuf, "player%d.map_u%03d", plrno, y); @@ -1640,7 +1640,7 @@ /* put "next" 4 bits of special flags */ for(y=0; yspecial&0xf00)>>8]; + pbuf[x]=dec2hex[(map_get_player_tile(x, y, plr)->special&0xf00)>>8]; pbuf[x]='\0'; secfile_insert_str(file, pbuf, "player%d.map_n%03d", plrno, y); @@ -1649,7 +1649,7 @@ /* put lower 4 bits of updated */ for(y=0; ylast_updated&0xf]; + pbuf[x]=dec2hex[map_get_player_tile(x, y, plr)->last_updated&0xf]; pbuf[x]='\0'; secfile_insert_str(file, pbuf, "player%d.map_ua%03d",plrno, y); @@ -1658,7 +1658,7 @@ /* put upper 4 bits of updated */ for(y=0; ylast_updated&0xf0)>>4]; + pbuf[x]=dec2hex[(map_get_player_tile(x, y, plr)->last_updated&0xf0)>>4]; pbuf[x]='\0'; secfile_insert_str(file, pbuf, "player%d.map_ub%03d", plrno, y); @@ -1667,7 +1667,7 @@ /* put "next" 4 bits of updated */ for(y=0; ylast_updated&0xf00)>>8]; + pbuf[x]=dec2hex[(map_get_player_tile(x, y, plr)->last_updated&0xf00)>>8]; pbuf[x]='\0'; secfile_insert_str(file, pbuf, "player%d.map_uc%03d", plrno, y); @@ -1676,7 +1676,7 @@ /* put "yet next" 4 bits of updated */ for(y=0; ylast_updated&0xf000)>>12]; + pbuf[x]=dec2hex[(map_get_player_tile(x, y, plr)->last_updated&0xf000)>>12]; pbuf[x]='\0'; secfile_insert_str(file, pbuf, "player%d.map_ud%03d", plrno, y); @@ -1690,7 +1690,7 @@ for (x = 0; x < map.xsize; x++) for (y = 0; y < map.ysize; y++) - if ((pdcity = map_get_player_tile(x, y, plrno)->city)) { + if ((pdcity = map_get_player_tile(x, y, plr)->city)) { secfile_insert_int(file, pdcity->id, "player%d.dc%d.id", plrno, i); secfile_insert_int(file, x, "player%d.dc%d.x", plrno, i); secfile_insert_int(file, y, "player%d.dc%d.y", plrno, i); diff -urd -X work/diff_ignore freeciv.current/server/unittools.c work/server/unittools.c --- freeciv.current/server/unittools.c Fri Aug 24 09:28:01 2001 +++ work/server/unittools.c Fri Aug 24 21:10:07 2001 @@ -1497,7 +1497,8 @@ static int is_airunit_refuel_point(int x, int y, int playerid, Unit_Type_id type, int unit_is_on_tile) { - struct player_tile *plrtile = map_get_player_tile(x, y, playerid); + struct player_tile *plrtile = + map_get_player_tile(x, y, get_player(playerid)); if ((is_allied_city_tile(map_get_tile(x, y), playerid) && !is_non_allied_unit_tile(map_get_tile(x, y), playerid)) @@ -2167,7 +2168,7 @@ return 0; } - if (map_get_player_tile(dest_x, dest_y, punit->owner)->terrain == T_OCEAN) { + if (map_get_player_tile(dest_x, dest_y, unit_owner(punit))->terrain == T_OCEAN) { notify_player_ex(unit_owner(punit), dest_x, dest_y, E_NOEVENT, _("Game: Cannot paradrop into ocean.")); return 0; @@ -2500,10 +2501,11 @@ return; /*** Allocate air and missile units ***/ } else if (is_air_units_transport(ptrans)) { - struct player_tile *plrtile = map_get_player_tile(x, y, playerid); + struct player_tile *plrtile = + map_get_player_tile(x, y, get_player(playerid)); int is_refuel_point = is_allied_city_tile(map_get_tile(x, y), playerid) - || (plrtile->special&S_AIRBASE - && !is_non_allied_unit_tile(map_get_tile(x, y), playerid)); + || (plrtile->special & S_AIRBASE + && !is_non_allied_unit_tile(map_get_tile(x, y), playerid)); int missiles_only = unit_flag(ptrans->type, F_MISSILE_CARRIER) && !unit_flag(ptrans->type, F_CARRIER);