summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/console_cmds.cpp18
-rw-r--r--src/openttd.cpp5
-rw-r--r--src/openttd.h1
3 files changed, 22 insertions, 2 deletions
diff --git a/src/console_cmds.cpp b/src/console_cmds.cpp
index 356cfc7ab..e1cabd88f 100644
--- a/src/console_cmds.cpp
+++ b/src/console_cmds.cpp
@@ -1073,6 +1073,23 @@ DEF_CONSOLE_CMD(ConRestart)
return true;
}
+DEF_CONSOLE_CMD(ConReload)
+{
+ if (argc == 0) {
+ IConsoleHelp("Reload game. Usage: 'reload'");
+ IConsoleHelp("Reloads a game.");
+ IConsoleHelp(" * if you started from a savegame / scenario / heightmap, that exact same savegame / scenario / heightmap will be loaded.");
+ IConsoleHelp(" * if you started from a new game, this acts the same as 'restart'.");
+ return true;
+ }
+
+ /* Don't copy the _newgame pointers to the real pointers, so call SwitchToMode directly */
+ _settings_game.game_creation.map_x = MapLogX();
+ _settings_game.game_creation.map_y = FindFirstBit(MapSizeY());
+ _switch_mode = SM_RELOADGAME;
+ return true;
+}
+
/**
* Print a text buffer line by line to the console. Lines are separated by '\n'.
* @param buf The buffer to print.
@@ -2113,6 +2130,7 @@ void IConsoleStdLibRegister()
IConsoleCmdRegister("list_aliases", ConListAliases);
IConsoleCmdRegister("newgame", ConNewGame);
IConsoleCmdRegister("restart", ConRestart);
+ IConsoleCmdRegister("reload", ConReload);
IConsoleCmdRegister("getseed", ConGetSeed);
IConsoleCmdRegister("getdate", ConGetDate);
IConsoleCmdRegister("getsysdate", ConGetSysDate);
diff --git a/src/openttd.cpp b/src/openttd.cpp
index 805e591b9..9d28a3fe5 100644
--- a/src/openttd.cpp
+++ b/src/openttd.cpp
@@ -1046,9 +1046,9 @@ void SwitchToMode(SwitchMode new_mode)
MakeNewEditorWorld();
break;
- case SM_RESTARTGAME: // Restart --> Current settings preserved
+ case SM_RELOADGAME: // Reload with what-ever started the game
if (_file_to_saveload.abstract_ftype == FT_SAVEGAME || _file_to_saveload.abstract_ftype == FT_SCENARIO) {
- /* Restart current savegame/scenario */
+ /* Reload current savegame/scenario */
_switch_mode = _game_mode == GM_EDITOR ? SM_LOAD_SCENARIO : SM_LOAD_GAME;
SwitchToMode(_switch_mode);
break;
@@ -1062,6 +1062,7 @@ void SwitchToMode(SwitchMode new_mode)
MakeNewGame(false, new_mode == SM_NEWGAME);
break;
+ case SM_RESTARTGAME: // Restart --> 'Random game' with current settings
case SM_NEWGAME: // New Game --> 'Random game'
if (_network_server) {
seprintf(_network_game_info.map_name, lastof(_network_game_info.map_name), "Random Map");
diff --git a/src/openttd.h b/src/openttd.h
index 6568881c4..62651fe7f 100644
--- a/src/openttd.h
+++ b/src/openttd.h
@@ -25,6 +25,7 @@ enum SwitchMode {
SM_NONE,
SM_NEWGAME, ///< New Game --> 'Random game'.
SM_RESTARTGAME, ///< Restart --> 'Random game' with current settings.
+ SM_RELOADGAME, ///< Reload the savegame / scenario / heightmap you started the game with.
SM_EDITOR, ///< Switch to scenario editor.
SM_LOAD_GAME, ///< Load game, Play Scenario.
SM_MENU, ///< Switch to game intro menu.