Author: cazfi
Date: Fri Jan 22 15:14:52 2016
New Revision: 31533

URL: http://svn.gna.org/viewcvs/freeciv?rev=31533&view=rev
Log:
Keep random seed values actually used separate from the server settings.

Reported by Jacob Nevins <jtn>

See bug #24319

Modified:
    trunk/common/game.h
    trunk/common/map.c
    trunk/common/map_types.h
    trunk/server/generator/mapgen.c
    trunk/server/savegame3.c
    trunk/server/settings.c
    trunk/server/srv_main.c

Modified: trunk/common/game.h
URL: 
http://svn.gna.org/viewcvs/freeciv/trunk/common/game.h?rev=31533&r1=31532&r2=31533&view=diff
==============================================================================
--- trunk/common/game.h (original)
+++ trunk/common/game.h Fri Jan 22 15:14:52 2016
@@ -212,6 +212,7 @@
       enum scorelog_level scoreloglevel;
       char scorefile[MAX_LEN_NAME];
       int scoreturn;    /* next make_history_report() */
+      int seed_setting;
       int seed;
 
       bool global_warming;

Modified: trunk/common/map.c
URL: 
http://svn.gna.org/viewcvs/freeciv/trunk/common/map.c?rev=31533&r1=31532&r2=31533&view=diff
==============================================================================
--- trunk/common/map.c  (original)
+++ trunk/common/map.c  Fri Jan 22 15:14:52 2016
@@ -171,6 +171,7 @@
     game.map.server.mapsize = MAP_DEFAULT_MAPSIZE;
     game.map.server.size = MAP_DEFAULT_SIZE;
     game.map.server.tilesperplayer = MAP_DEFAULT_TILESPERPLAYER;
+    game.map.server.seed_setting = MAP_DEFAULT_SEED;
     game.map.server.seed = MAP_DEFAULT_SEED;
     game.map.server.riches = MAP_DEFAULT_RICHES;
     game.map.server.huts = MAP_DEFAULT_HUTS;

Modified: trunk/common/map_types.h
URL: 
http://svn.gna.org/viewcvs/freeciv/trunk/common/map_types.h?rev=31533&r1=31532&r2=31533&view=diff
==============================================================================
--- trunk/common/map_types.h    (original)
+++ trunk/common/map_types.h    Fri Jan 22 15:14:52 2016
@@ -78,6 +78,7 @@
       enum mapsize_type mapsize; /* how the map size is defined */
       int size; /* used to calculate [xy]size */
       int tilesperplayer; /* tiles per player; used to calculate size */
+      int seed_setting;
       int seed;
       int riches;
       int huts;

Modified: trunk/server/generator/mapgen.c
URL: 
http://svn.gna.org/viewcvs/freeciv/trunk/server/generator/mapgen.c?rev=31533&r1=31532&r2=31533&view=diff
==============================================================================
--- trunk/server/generator/mapgen.c     (original)
+++ trunk/server/generator/mapgen.c     Fri Jan 22 15:14:52 2016
@@ -1378,7 +1378,7 @@
    * set seed. */
   seed_rand = fc_rand(MAX_UINT32);
 
-  if (game.map.server.seed == 0) {
+  if (game.map.server.seed_setting == 0) {
     /* Create a "random" map seed. */
     game.map.server.seed = seed_rand & (MAX_UINT32 >> 1);
 #ifdef TESTMATIC_ENABLED
@@ -1387,6 +1387,8 @@
 #else /* TESTMATICE_ENABLED */
     log_debug("Setting map.seed:%d", game.map.server.seed);
 #endif /* TESTMATIC_ENABLED */
+  } else {
+    game.map.server.seed = game.map.server.seed_setting;
   }
 
   rstate = fc_rand_state();

Modified: trunk/server/savegame3.c
URL: 
http://svn.gna.org/viewcvs/freeciv/trunk/server/savegame3.c?rev=31533&r1=31532&r2=31533&view=diff
==============================================================================
--- trunk/server/savegame3.c    (original)
+++ trunk/server/savegame3.c    Fri Jan 22 15:14:52 2016
@@ -2013,6 +2013,10 @@
   secfile_insert_int(saving->file, game.info.coolinglevel,
                      "game.coolinglevel");
 
+  /* For debugging purposes only */
+  secfile_insert_int(saving->file, game.server.seed,
+                     "game.random_seed");
+
   /* Global advances. */
   for (i = 0; i < game.control.num_tech_types; i++) {
     global_advances[i] = game.info.global_advances[i] ? '1' : '0';
@@ -2380,6 +2384,10 @@
     /* No map. */
     return;
   }
+
+  /* For debugging purposes only */
+  secfile_insert_int(saving->file, game.map.server.seed,
+                     "map.random_seed");
 
   sg_save_map_tiles(saving);
   sg_save_map_startpos(saving);

Modified: trunk/server/settings.c
URL: 
http://svn.gna.org/viewcvs/freeciv/trunk/server/settings.c?rev=31533&r1=31532&r2=31533&view=diff
==============================================================================
--- trunk/server/settings.c     (original)
+++ trunk/server/settings.c     Fri Jan 22 15:14:52 2016
@@ -1527,13 +1527,12 @@
               "as a result of nuclear war."), NULL, NULL,
            GAME_DEFAULT_NUCLEAR_WINTER)
 
-  GEN_INT("mapseed", game.map.server.seed,
+  GEN_INT("mapseed", game.map.server.seed_setting,
           SSET_MAP_GEN, SSET_INTERNAL, SSET_RARE, SSET_SERVER_ONLY,
           N_("Map generation random seed"),
           N_("The same seed will always produce the same map; "
              "for zero (the default) a seed will be chosen based on "
-             "the time to give a random map. This setting is usually "
-             "only of interest while debugging the game."),
+             "the time to give a random map."),
           NULL, NULL, NULL,
           MAP_MIN_SEED, MAP_MAX_SEED, MAP_DEFAULT_SEED)
 
@@ -1542,12 +1541,11 @@
    * These are done when the game starts, so these are historical and
    * fixed after the game has started.
    */
-  GEN_INT("gameseed", game.server.seed,
+  GEN_INT("gameseed", game.server.seed_setting,
           SSET_MAP_ADD, SSET_INTERNAL, SSET_RARE, SSET_SERVER_ONLY,
           N_("Game random seed"),
           N_("For zero (the default) a seed will be chosen based "
-             "on the current time. This setting is usually "
-             "only of interest while debugging the game."),
+             "on the current time."),
           NULL, NULL, NULL,
           GAME_MIN_SEED, GAME_MAX_SEED, GAME_DEFAULT_SEED)
 

Modified: trunk/server/srv_main.c
URL: 
http://svn.gna.org/viewcvs/freeciv/trunk/server/srv_main.c?rev=31533&r1=31532&r2=31533&view=diff
==============================================================================
--- trunk/server/srv_main.c     (original)
+++ trunk/server/srv_main.c     Fri Jan 22 15:14:52 2016
@@ -197,7 +197,7 @@
 **************************************************************************/
 void init_game_seed(void)
 {
-  if (game.server.seed == 0) {
+  if (game.server.seed_setting == 0) {
     /* We strip the high bit for now because neither game file nor
        server options can handle unsigned ints yet. - Cedric */
     game.server.seed = time(NULL) & (MAX_UINT32 >> 1);
@@ -207,6 +207,8 @@
 #else  /* TESTMATIC_ENABLED */
     log_debug("Setting game.seed:%d", game.server.seed);
 #endif /* TESTMATIC_ENABLED */
+  } else {
+    game.server.seed = game.server.seed_setting;
   }
 
   if (!fc_rand_is_init()) {


_______________________________________________
Freeciv-commits mailing list
Freeciv-commits@gna.org
https://mail.gna.org/listinfo/freeciv-commits

Reply via email to