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

Reply via email to