Author: cazfi Date: Fri Jan 22 15:15:00 2016 New Revision: 31534 URL: http://svn.gna.org/viewcvs/freeciv?rev=31534&view=rev Log: Keep random seed values actually used separate from the server settings.
Reported by Jacob Nevins <jtn> See bug #24319 Modified: branches/S2_6/common/game.h branches/S2_6/common/map.c branches/S2_6/common/map_types.h branches/S2_6/server/generator/mapgen.c branches/S2_6/server/savegame2.c branches/S2_6/server/settings.c branches/S2_6/server/srv_main.c Modified: branches/S2_6/common/game.h URL: http://svn.gna.org/viewcvs/freeciv/branches/S2_6/common/game.h?rev=31534&r1=31533&r2=31534&view=diff ============================================================================== --- branches/S2_6/common/game.h (original) +++ branches/S2_6/common/game.h Fri Jan 22 15:15:00 2016 @@ -211,6 +211,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: branches/S2_6/common/map.c URL: http://svn.gna.org/viewcvs/freeciv/branches/S2_6/common/map.c?rev=31534&r1=31533&r2=31534&view=diff ============================================================================== --- branches/S2_6/common/map.c (original) +++ branches/S2_6/common/map.c Fri Jan 22 15:15:00 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: branches/S2_6/common/map_types.h URL: http://svn.gna.org/viewcvs/freeciv/branches/S2_6/common/map_types.h?rev=31534&r1=31533&r2=31534&view=diff ============================================================================== --- branches/S2_6/common/map_types.h (original) +++ branches/S2_6/common/map_types.h Fri Jan 22 15:15:00 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: branches/S2_6/server/generator/mapgen.c URL: http://svn.gna.org/viewcvs/freeciv/branches/S2_6/server/generator/mapgen.c?rev=31534&r1=31533&r2=31534&view=diff ============================================================================== --- branches/S2_6/server/generator/mapgen.c (original) +++ branches/S2_6/server/generator/mapgen.c Fri Jan 22 15:15:00 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: branches/S2_6/server/savegame2.c URL: http://svn.gna.org/viewcvs/freeciv/branches/S2_6/server/savegame2.c?rev=31534&r1=31533&r2=31534&view=diff ============================================================================== --- branches/S2_6/server/savegame2.c (original) +++ branches/S2_6/server/savegame2.c Fri Jan 22 15:15:00 2016 @@ -2405,6 +2405,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'; @@ -2818,6 +2822,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: branches/S2_6/server/settings.c URL: http://svn.gna.org/viewcvs/freeciv/branches/S2_6/server/settings.c?rev=31534&r1=31533&r2=31534&view=diff ============================================================================== --- branches/S2_6/server/settings.c (original) +++ branches/S2_6/server/settings.c Fri Jan 22 15:15:00 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: branches/S2_6/server/srv_main.c URL: http://svn.gna.org/viewcvs/freeciv/branches/S2_6/server/srv_main.c?rev=31534&r1=31533&r2=31534&view=diff ============================================================================== --- branches/S2_6/server/srv_main.c (original) +++ branches/S2_6/server/srv_main.c Fri Jan 22 15:15:00 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