summaryrefslogtreecommitdiff
path: root/src/openttd.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/openttd.cpp')
-rw-r--r--src/openttd.cpp11
1 files changed, 6 insertions, 5 deletions
diff --git a/src/openttd.cpp b/src/openttd.cpp
index 9fddfcb2e..046717db5 100644
--- a/src/openttd.cpp
+++ b/src/openttd.cpp
@@ -796,7 +796,7 @@ static void MakeNewGameDone()
MarkWholeScreenDirty();
}
-static void MakeNewGame(bool from_heightmap)
+static void MakeNewGame(bool from_heightmap, bool reset_settings)
{
_game_mode = GM_NORMAL;
@@ -807,7 +807,7 @@ static void MakeNewGame(bool from_heightmap)
_industry_mngr.ResetMapping();
GenerateWorldSetCallback(&MakeNewGameDone);
- GenerateWorld(from_heightmap ? GW_HEIGHTMAP : GW_NEWGAME, 1 << _settings_game.game_creation.map_x, 1 << _settings_game.game_creation.map_y);
+ GenerateWorld(from_heightmap ? GW_HEIGHTMAP : GW_NEWGAME, 1 << _settings_game.game_creation.map_x, 1 << _settings_game.game_creation.map_y, reset_settings);
}
static void MakeNewEditorWorldDone()
@@ -915,7 +915,7 @@ void SwitchToMode(SwitchMode new_mode)
if (new_mode != SM_SAVE) {
/* If the network is active, make it not-active */
if (_networking) {
- if (_network_server && (new_mode == SM_LOAD || new_mode == SM_NEWGAME)) {
+ if (_network_server && (new_mode == SM_LOAD || new_mode == SM_NEWGAME || new_mode == SM_RESTARTGAME)) {
NetworkReboot();
} else {
NetworkDisconnect();
@@ -948,13 +948,14 @@ void SwitchToMode(SwitchMode new_mode)
MakeNewEditorWorld();
break;
+ case SM_RESTARTGAME: // Restart --> 'Random game' with current settings
case SM_NEWGAME: // New Game --> 'Random game'
#ifdef ENABLE_NETWORK
if (_network_server) {
snprintf(_network_game_info.map_name, lengthof(_network_game_info.map_name), "Random Map");
}
#endif /* ENABLE_NETWORK */
- MakeNewGame(false);
+ MakeNewGame(false, new_mode == SM_NEWGAME);
break;
case SM_START_SCENARIO: // New Game --> Choose one of the preset scenarios
@@ -1000,7 +1001,7 @@ void SwitchToMode(SwitchMode new_mode)
snprintf(_network_game_info.map_name, lengthof(_network_game_info.map_name), "%s (Heightmap)", _file_to_saveload.title);
}
#endif /* ENABLE_NETWORK */
- MakeNewGame(true);
+ MakeNewGame(true, true);
break;
case SM_LOAD_HEIGHTMAP: // Load heightmap from scenario editor