From 2676142ca934b4da52b0ab11191296abcccfcccb Mon Sep 17 00:00:00 2001 From: rubidium Date: Wed, 3 Jan 2007 18:06:50 +0000 Subject: [PATCH] (svn r7801) -Feature: add command line option to prevent saving of highscore and configuration on exit and a console command to manually initiate a configuration save (Aloysha). --- src/console_cmds.c | 14 ++++++++++++++ src/openttd.c | 12 +++++++++--- 2 files changed, 23 insertions(+), 3 deletions(-) diff --git a/src/console_cmds.c b/src/console_cmds.c index 7ec55c6b97..46846af7d7 100644 --- a/src/console_cmds.c +++ b/src/console_cmds.c @@ -201,6 +201,19 @@ DEF_CONSOLE_CMD(ConSave) return false; } +/* Explicitly save the configuration */ +DEF_CONSOLE_CMD(ConSaveConfig) +{ + if (argc == 0) { + IConsoleHelp("Saves the current config, typically to 'openttd.cfg'."); + return true; + } + + SaveToConfig(); + IConsolePrint(_icolour_def, "Saved config."); + return true; +} + static const FiosItem* GetFiosItem(const char* file) { int i; @@ -1475,6 +1488,7 @@ void IConsoleStdLibRegister(void) IConsoleCmdRegister("load", ConLoad); IConsoleCmdRegister("rm", ConRemove); IConsoleCmdRegister("save", ConSave); + IConsoleCmdRegister("saveconfig", ConSaveConfig); IConsoleCmdRegister("ls", ConListFiles); IConsoleCmdRegister("cd", ConChangeDirectory); IConsoleCmdRegister("pwd", ConPrintWorkingDirectory); diff --git a/src/openttd.c b/src/openttd.c index 3f15a944e4..67670cdeac 100644 --- a/src/openttd.c +++ b/src/openttd.c @@ -165,6 +165,7 @@ static void showhelp(void) " -i = Force to use the DOS palette\n" " (use this if you see a lot of pink)\n" " -c config_file = Use 'config_file' instead of 'openttd.cfg'\n" + " -x = Do not automatically save to config file on exit\n" "\n", lastof(buf) ); @@ -333,6 +334,7 @@ int ttd_main(int argc, char *argv[]) uint generation_seed = GENERATE_NEW_SEED; bool dedicated = false; bool network = false; + bool save_config = true; char *network_conn = NULL; musicdriver[0] = sounddriver[0] = videodriver[0] = 0; @@ -347,7 +349,7 @@ int ttd_main(int argc, char *argv[]) // a letter means: it accepts that param (e.g.: -h) // a ':' behind it means: it need a param (e.g.: -m) // a '::' behind it means: it can optional have a param (e.g.: -d) - optformat = "m:s:v:hDn::eit:d::r:g::G:c:" + optformat = "m:s:v:hDn::eit:d::r:g::G:c:x" #if !defined(__MORPHOS__) && !defined(__AMIGA__) && !defined(WIN32) "f" #endif @@ -390,6 +392,7 @@ int ttd_main(int argc, char *argv[]) break; case 'G': generation_seed = atoi(mgo.opt); break; case 'c': _config_file = strdup(mgo.opt); break; + case 'x': save_config = false; break; case -2: case 'h': showhelp(); @@ -523,8 +526,11 @@ int ttd_main(int argc, char *argv[]) _music_driver->stop(); _sound_driver->stop(); - SaveToConfig(); - SaveToHighScore(); + /* only save config if we have to */ + if (save_config) { + SaveToConfig(); + SaveToHighScore(); + } // uninitialize airport state machines UnInitializeAirports();