Add: Setting to save a unique id for each savegame
This commit is contained in:
@@ -105,6 +105,11 @@ static void _GenerateWorld(void *)
|
|||||||
/* Set the Random() seed to generation_seed so we produce the same map with the same seed */
|
/* Set the Random() seed to generation_seed so we produce the same map with the same seed */
|
||||||
if (_settings_game.game_creation.generation_seed == GENERATE_NEW_SEED) _settings_game.game_creation.generation_seed = _settings_newgame.game_creation.generation_seed = InteractiveRandom();
|
if (_settings_game.game_creation.generation_seed == GENERATE_NEW_SEED) _settings_game.game_creation.generation_seed = _settings_newgame.game_creation.generation_seed = InteractiveRandom();
|
||||||
_random.SetSeed(_settings_game.game_creation.generation_seed);
|
_random.SetSeed(_settings_game.game_creation.generation_seed);
|
||||||
|
|
||||||
|
/* Generates a unique id for the savegame, to avoid accidentally overwriting a save */
|
||||||
|
/* We keep id 0 for old savegames that don't have an id */
|
||||||
|
_settings_game.game_creation.generation_unique_id = _interactive_random.Next(UINT32_MAX - 1) + 1; /* Generates between [1,UINT32_MAX] */
|
||||||
|
|
||||||
SetGeneratingWorldProgress(GWP_MAP_INIT, 2);
|
SetGeneratingWorldProgress(GWP_MAP_INIT, 2);
|
||||||
SetObjectToPlace(SPR_CURSOR_ZZZ, PAL_NONE, HT_NONE, WC_MAIN_WINDOW, 0);
|
SetObjectToPlace(SPR_CURSOR_ZZZ, PAL_NONE, HT_NONE, WC_MAIN_WINDOW, 0);
|
||||||
|
|
||||||
|
@@ -3045,6 +3045,12 @@ bool AfterLoadGame()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (IsSavegameVersionBefore(203)) {
|
||||||
|
/* Generate a random id for savegames that didn't have one */
|
||||||
|
/* We keep id 0 for old savegames that don't have an id */
|
||||||
|
_settings_game.game_creation.generation_unique_id = _interactive_random.Next(UINT32_MAX-1) + 1; /* Generates between [1;UINT32_MAX] */
|
||||||
|
}
|
||||||
|
|
||||||
/* Station acceptance is some kind of cache */
|
/* Station acceptance is some kind of cache */
|
||||||
if (IsSavegameVersionBefore(127)) {
|
if (IsSavegameVersionBefore(127)) {
|
||||||
Station *st;
|
Station *st;
|
||||||
|
@@ -270,8 +270,9 @@
|
|||||||
* 200 #6805 Extend railtypes to 64, adding uint16 to map array.
|
* 200 #6805 Extend railtypes to 64, adding uint16 to map array.
|
||||||
* 201 #6885 Extend NewGRF persistant storages.
|
* 201 #6885 Extend NewGRF persistant storages.
|
||||||
* 202 #6867 Increase industry cargo slots to 16 in, 16 out
|
* 202 #6867 Increase industry cargo slots to 16 in, 16 out
|
||||||
|
* 203 #6973 Add unique id to savegames
|
||||||
*/
|
*/
|
||||||
extern const uint16 SAVEGAME_VERSION = 202; ///< Current savegame version of OpenTTD.
|
extern const uint16 SAVEGAME_VERSION = 203; ///< Current savegame version of OpenTTD.
|
||||||
|
|
||||||
SavegameType _savegame_type; ///< type of savegame we are loading
|
SavegameType _savegame_type; ///< type of savegame we are loading
|
||||||
FileToSaveLoad _file_to_saveload; ///< File to save or load in the openttd loop.
|
FileToSaveLoad _file_to_saveload; ///< File to save or load in the openttd loop.
|
||||||
|
@@ -283,6 +283,7 @@ struct NetworkSettings {
|
|||||||
/** Settings related to the creation of games. */
|
/** Settings related to the creation of games. */
|
||||||
struct GameCreationSettings {
|
struct GameCreationSettings {
|
||||||
uint32 generation_seed; ///< noise seed for world generation
|
uint32 generation_seed; ///< noise seed for world generation
|
||||||
|
uint32 generation_unique_id; ///< random id to differentiate savegames
|
||||||
Year starting_year; ///< starting date
|
Year starting_year; ///< starting date
|
||||||
uint8 map_x; ///< X size of map
|
uint8 map_x; ///< X size of map
|
||||||
uint8 map_y; ///< Y size of map
|
uint8 map_y; ///< Y size of map
|
||||||
|
@@ -2208,6 +2208,15 @@ min = 0
|
|||||||
max = UINT32_MAX
|
max = UINT32_MAX
|
||||||
cat = SC_EXPERT
|
cat = SC_EXPERT
|
||||||
|
|
||||||
|
[SDT_VAR]
|
||||||
|
base = GameSettings
|
||||||
|
var = game_creation.generation_unique_id
|
||||||
|
type = SLE_UINT32
|
||||||
|
from = 203
|
||||||
|
def = 0
|
||||||
|
min = 0
|
||||||
|
max = UINT32_MAX
|
||||||
|
|
||||||
[SDT_VAR]
|
[SDT_VAR]
|
||||||
base = GameSettings
|
base = GameSettings
|
||||||
var = game_creation.tree_placer
|
var = game_creation.tree_placer
|
||||||
|
Reference in New Issue
Block a user