Author: cazfi Date: Sat Oct 29 13:04:10 2016 New Revision: 34287 URL: http://svn.gna.org/viewcvs/freeciv?rev=34287&view=rev Log: Store turn, not year, to plrtile last_updated.
See patch #7880 Modified: trunk/common/game.c trunk/common/game.h trunk/server/legacysave.c trunk/server/maphand.c trunk/server/savegame2.c trunk/server/savegame3.c Modified: trunk/common/game.c URL: http://svn.gna.org/viewcvs/freeciv/trunk/common/game.c?rev=34287&r1=34286&r2=34287&view=diff ============================================================================== --- trunk/common/game.c (original) +++ trunk/common/game.c Sat Oct 29 13:04:10 2016 @@ -365,6 +365,7 @@ game.server.event_cache.turns = GAME_DEFAULT_EVENT_CACHE_TURNS; game.server.foggedborders = GAME_DEFAULT_FOGGEDBORDERS; game.server.fogofwar_old = game.info.fogofwar; + game.server.last_updated_year = FALSE; game.server.freecost = GAME_DEFAULT_FREECOST; game.server.homecaughtunits = GAME_DEFAULT_HOMECAUGHTUNITS; game.server.kick_time = GAME_DEFAULT_KICK_TIME; Modified: trunk/common/game.h URL: http://svn.gna.org/viewcvs/freeciv/trunk/common/game.h?rev=34287&r1=34286&r2=34287&view=diff ============================================================================== --- trunk/common/game.h (original) +++ trunk/common/game.h Sat Oct 29 13:04:10 2016 @@ -222,6 +222,8 @@ bool fogofwar_old; /* as the fog_of_war bit get changed by setting * the server we need to remember the old setting */ + bool last_updated_year; /* last_updated is still counted as year in this + * game. */ char rulesetdir[MAX_LEN_NAME]; char demography[MAX_LEN_DEMOGRAPHY]; char allow_take[MAX_LEN_ALLOW_TAKE]; Modified: trunk/server/legacysave.c URL: http://svn.gna.org/viewcvs/freeciv/trunk/server/legacysave.c?rev=34287&r1=34286&r2=34287&view=diff ============================================================================== --- trunk/server/legacysave.c (original) +++ trunk/server/legacysave.c Sat Oct 29 13:04:10 2016 @@ -3979,6 +3979,9 @@ int loaded_players = 0; int players; + /* Update time has been saved as year in legacysave.c */ + game.server.last_updated_year = TRUE; + /* destroyed wonders: */ string = secfile_lookup_str(file, "game.destroyed_wonders_new"); if (!string) { Modified: trunk/server/maphand.c URL: http://svn.gna.org/viewcvs/freeciv/trunk/server/maphand.c?rev=34287&r1=34286&r2=34287&view=diff ============================================================================== --- trunk/server/maphand.c (original) +++ trunk/server/maphand.c Sat Oct 29 13:04:10 2016 @@ -1211,7 +1211,11 @@ plrtile->extras_owner = NULL; plrtile->site = NULL; BV_CLR_ALL(plrtile->extras); - plrtile->last_updated = game.info.year; + if (!game.server.last_updated_year) { + plrtile->last_updated = game.info.turn; + } else { + plrtile->last_updated = game.info.year; + } plrtile->seen_count[V_MAIN] = !game.server.fogofwar_old; plrtile->seen_count[V_INVIS] = 0; @@ -1333,14 +1337,15 @@ /*************************************************************** Remember that tile was last seen this year. - - FIXME: Should last_updated be turn rather than year? Turn is - guaranteed to go forward when game proceeds, but year - is not (it can remain same or even go backwards) ***************************************************************/ -void update_player_tile_last_seen(struct player *pplayer, struct tile *ptile) -{ - map_get_player_tile(ptile, pplayer)->last_updated = game.info.year; +void update_player_tile_last_seen(struct player *pplayer, + struct tile *ptile) +{ + if (!game.server.last_updated_year) { + map_get_player_tile(ptile, pplayer)->last_updated = game.info.turn; + } else { + map_get_player_tile(ptile, pplayer)->last_updated = game.info.year; + } } /*************************************************************** Modified: trunk/server/savegame2.c URL: http://svn.gna.org/viewcvs/freeciv/trunk/server/savegame2.c?rev=34287&r1=34286&r2=34287&view=diff ============================================================================== --- trunk/server/savegame2.c (original) +++ trunk/server/savegame2.c Sat Oct 29 13:04:10 2016 @@ -1117,6 +1117,11 @@ (void) secfile_entry_by_path(loading->file, "savefile.reason"); (void) secfile_entry_by_path(loading->file, "savefile.revision"); + /* In case of savegame2.c saves, missing entry means savegame older than support + * for saving last_updated by turn. So this must default to TRUE. */ + game.server.last_updated_year = secfile_lookup_bool_default(loading->file, TRUE, + "savefile.last_updated_as_year"); + /* Load improvements. */ loading->improvement.size = secfile_lookup_int_default(loading->file, 0, Modified: trunk/server/savegame3.c URL: http://svn.gna.org/viewcvs/freeciv/trunk/server/savegame3.c?rev=34287&r1=34286&r2=34287&view=diff ============================================================================== --- trunk/server/savegame3.c (original) +++ trunk/server/savegame3.c Sat Oct 29 13:04:10 2016 @@ -1310,6 +1310,11 @@ } } + /* This is in the savegame only if the game has been started before savegame3.c time, + * and in that case it's TRUE. If it's missing, it's to be considered FALSE. */ + game.server.last_updated_year = secfile_lookup_bool_default(loading->file, FALSE, + "savefile.last_updated_as_year"); + /* Load improvements. */ loading->improvement.size = secfile_lookup_int_default(loading->file, 0, @@ -1526,6 +1531,10 @@ /* Current ruleset has version information, save it. * This is never loaded, but exist in savegame file only for debugging purposes. */ secfile_insert_str(saving->file, game.control.version, "savefile.rulesetversion"); + } + + if (game.server.last_updated_year) { + secfile_insert_bool(saving->file, TRUE, "savefile.last_updated_as_year"); } /* Save improvement order in savegame, so we are not dependent on ruleset _______________________________________________ Freeciv-commits mailing list Freeciv-commits@gna.org https://mail.gna.org/listinfo/freeciv-commits