(svn r11829) -Feature: allow reloading openttd.cfg when starting a new game on a dedicated server. Patch by dihedral.
authorrubidium
Sun, 13 Jan 2008 01:39:22 +0000
changeset 8761 afcf3b687a3e
parent 8760 ce0891c412ce
child 8762 e0d5cde5228f
(svn r11829) -Feature: allow reloading openttd.cfg when starting a new game on a dedicated server. Patch by dihedral.
src/console_cmds.cpp
src/network/network.cpp
src/network/network.h
src/openttd.cpp
src/settings.cpp
--- a/src/console_cmds.cpp	Sun Jan 13 01:21:35 2008 +0000
+++ b/src/console_cmds.cpp	Sun Jan 13 01:39:22 2008 +0000
@@ -1652,6 +1652,8 @@
 	IConsoleVarRegister("min_players",           &_network_min_players, ICONSOLE_VAR_BYTE, "Automatically pause the game when the number of active players passes below the given amount");
 	IConsoleVarHookAdd("min_players",            ICONSOLE_HOOK_ACCESS, ConHookServerOnly);
 	IConsoleVarHookAdd("min_players",            ICONSOLE_HOOK_POST_ACTION, ConHookCheckMinPlayers);
+	IConsoleVarRegister("reload_cfg",            &_network_reload_cfg, ICONSOLE_VAR_BOOLEAN, "reload the entire config file between the end of this game, and starting the next new game - dedicated servers");
+	IConsoleVarHookAdd("reload_cfg",             ICONSOLE_HOOK_ACCESS, ConHookServerOnly);
 
 #endif /* ENABLE_NETWORK */
 
--- a/src/network/network.cpp	Sun Jan 13 01:21:35 2008 +0000
+++ b/src/network/network.cpp	Sun Jan 13 01:39:22 2008 +0000
@@ -38,6 +38,8 @@
 
 #include "table/strings.h"
 
+bool _network_reload_cfg;
+
 /* Check whether NETWORK_NUM_LANDSCAPES is still in sync with NUM_LANDSCAPE */
 assert_compile((int)NETWORK_NUM_LANDSCAPES == (int)NUM_LANDSCAPE);
 
--- a/src/network/network.h	Sun Jan 13 01:21:35 2008 +0000
+++ b/src/network/network.h	Sun Jan 13 01:39:22 2008 +0000
@@ -211,6 +211,7 @@
 VARDEF bool _network_available;  ///< is network mode available?
 VARDEF bool _network_dedicated;  ///< are we a dedicated server?
 VARDEF bool _network_advertise;  ///< is the server advertising to the master server?
+extern bool _network_reload_cfg; ///< will we reload the entire config for the next game?
 
 #else /* ENABLE_NETWORK */
 /* Network function stubs when networking is disabled */
--- a/src/openttd.cpp	Sun Jan 13 01:21:35 2008 +0000
+++ b/src/openttd.cpp	Sun Jan 13 01:39:22 2008 +0000
@@ -843,6 +843,13 @@
 		if (_is_network_server) {
 			/* But not if we are going to the menu */
 			if (new_mode != SM_MENU) {
+				/* check if we should reload the config */
+				if (_network_reload_cfg) {
+					LoadFromConfig();
+					_patches = _patches_newgame;
+					_opt = _opt_newgame;
+					ResetGRFConfig(false);
+				}
 				NetworkServerStart();
 			} else {
 				/* This client no longer wants to be a network-server */
--- a/src/settings.cpp	Sun Jan 13 01:21:35 2008 +0000
+++ b/src/settings.cpp	Sun Jan 13 01:39:22 2008 +0000
@@ -1307,6 +1307,7 @@
 	  SDTG_VAR("restart_game_year",    SLE_INT32, S,D0, _network_restart_game_year,    0, MIN_YEAR, MAX_YEAR, 1, STR_NULL, NULL),
 	  SDTG_VAR("min_players",          SLE_UINT8, S, 0, _network_min_players,               0, 0, 10,   0, STR_NULL, NULL),
 	SDTG_OMANY("server_lang",          SLE_UINT8, S, 0, _network_game_info.server_lang,     0, 28, "ANY|ENGLISH|GERMAN|FRENCH|BRAZILIAN|BULGARIAN|CHINESE|CZECH|DANISH|DUTCH|ESPERANTO|FINNISH|HUNGARIAN|ICELANDIC|ITALIAN|JAPANESE|KOREAN|LITHUANIAN|NORWEGIAN|POLISH|PORTUGUESE|ROMANIAN|RUSSIAN|SLOVAK|SLOVENIAN|SPANISH|SWEDISH|TURKISH|UKRAINIAN", STR_NULL, NULL),
+	 SDTG_BOOL("reload_cfg",                      S, 0, _network_reload_cfg,           false,              STR_NULL, NULL),
 	  SDTG_END()
 };
 #endif /* ENABLE_NETWORK */