summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/console_cmds.cpp63
-rw-r--r--src/network/network.cpp49
-rw-r--r--src/network/network.h1
-rw-r--r--src/network/network_client.cpp6
-rw-r--r--src/network/network_gui.cpp54
-rw-r--r--src/network/network_internal.h30
-rw-r--r--src/network/network_server.cpp22
-rw-r--r--src/network/network_udp.cpp6
-rw-r--r--src/openttd.cpp12
-rw-r--r--src/players.cpp4
-rw-r--r--src/settings.cpp54
-rw-r--r--src/settings_type.h36
12 files changed, 174 insertions, 163 deletions
diff --git a/src/console_cmds.cpp b/src/console_cmds.cpp
index 4cc16a86f..d5d30f057 100644
--- a/src/console_cmds.cpp
+++ b/src/console_cmds.cpp
@@ -1307,12 +1307,12 @@ DEF_CONSOLE_CMD(ConSayClient)
DEF_CONSOLE_HOOK(ConHookServerPW)
{
- if (strcmp(_network_server_password, "*") == 0) {
- _network_server_password[0] = '\0';
- _network_game_info.use_password = 0;
+ if (strcmp(_settings_client.network.server_password, "*") == 0) {
+ _settings_client.network.server_password[0] = '\0';
+ _network_game_info.use_password = false;
} else {
- ttd_strlcpy(_network_game_info.server_password, _network_server_password, sizeof(_network_server_password));
- _network_game_info.use_password = 1;
+ ttd_strlcpy(_network_game_info.server_password, _settings_client.network.server_password, sizeof(_network_game_info.server_password));
+ _network_game_info.use_password = true;
}
return true;
@@ -1320,10 +1320,11 @@ DEF_CONSOLE_HOOK(ConHookServerPW)
DEF_CONSOLE_HOOK(ConHookRconPW)
{
- if (strcmp(_network_rcon_password, "*") == 0)
- _network_rcon_password[0] = '\0';
+ if (strcmp(_settings_client.network.rcon_password, "*") == 0) {
+ _settings_client.network.rcon_password[0] = '\0';
+ }
- ttd_strlcpy(_network_game_info.rcon_password, _network_rcon_password, sizeof(_network_game_info.rcon_password));
+ ttd_strlcpy(_network_game_info.rcon_password, _settings_client.network.rcon_password, sizeof(_network_game_info.rcon_password));
return true;
}
@@ -1368,13 +1369,13 @@ DEF_CONSOLE_HOOK(ConProcPlayerName)
if (ci == NULL) return false;
/* Don't change the name if it is the same as the old name */
- if (strcmp(ci->client_name, _network_player_name) != 0) {
+ if (strcmp(ci->client_name, _settings_client.network.player_name) != 0) {
if (!_network_server) {
- SEND_COMMAND(PACKET_CLIENT_SET_NAME)(_network_player_name);
+ SEND_COMMAND(PACKET_CLIENT_SET_NAME)(_settings_client.network.player_name);
} else {
- if (NetworkFindName(_network_player_name)) {
- NetworkTextMessage(NETWORK_ACTION_NAME_CHANGE, CC_DEFAULT, false, ci->client_name, "%s", _network_player_name);
- ttd_strlcpy(ci->client_name, _network_player_name, sizeof(ci->client_name));
+ if (NetworkFindName(_settings_client.network.player_name)) {
+ NetworkTextMessage(NETWORK_ACTION_NAME_CHANGE, CC_DEFAULT, false, ci->client_name, "%s", _settings_client.network.player_name);
+ ttd_strlcpy(ci->client_name, _settings_client.network.player_name, sizeof(ci->client_name));
NetworkUpdateClientInfo(NETWORK_SERVER_INDEX);
}
}
@@ -1385,7 +1386,7 @@ DEF_CONSOLE_HOOK(ConProcPlayerName)
DEF_CONSOLE_HOOK(ConHookServerName)
{
- ttd_strlcpy(_network_game_info.server_name, _network_server_name, sizeof(_network_game_info.server_name));
+ ttd_strlcpy(_network_game_info.server_name, _settings_client.network.server_name, sizeof(_network_game_info.server_name));
return true;
}
@@ -1407,7 +1408,7 @@ DEF_CONSOLE_CMD(ConProcServerIP)
if (argc != 1) return false;
_network_server_bind_ip = (strcmp(argv[0], "all") == 0) ? inet_addr("0.0.0.0") : inet_addr(argv[0]);
- snprintf(_network_server_bind_ip_host, sizeof(_network_server_bind_ip_host), "%s", inet_ntoa(*(struct in_addr *)&_network_server_bind_ip));
+ snprintf(_settings_client.network.server_bind_ip, sizeof(_settings_client.network.server_bind_ip), "%s", inet_ntoa(*(struct in_addr *)&_network_server_bind_ip));
IConsolePrintF(CC_WARNING, "'server_ip' changed to: %s", inet_ntoa(*(struct in_addr *)&_network_server_bind_ip));
return true;
}
@@ -1594,16 +1595,16 @@ void IConsoleStdLibRegister()
IConsoleCmdHookAdd("unpause", ICONSOLE_HOOK_ACCESS, ConHookServerOnly);
/*** Networking variables ***/
- IConsoleVarRegister("net_frame_freq", &_network_frame_freq, ICONSOLE_VAR_BYTE, "The amount of frames before a command will be (visibly) executed. Default value: 1");
+ IConsoleVarRegister("net_frame_freq", &_settings_client.network.frame_freq, ICONSOLE_VAR_BYTE, "The amount of frames before a command will be (visibly) executed. Default value: 1");
IConsoleVarHookAdd("net_frame_freq", ICONSOLE_HOOK_ACCESS, ConHookServerOnly);
- IConsoleVarRegister("net_sync_freq", &_network_sync_freq, ICONSOLE_VAR_UINT16, "The amount of frames to check if the game is still in sync. Default value: 100");
+ IConsoleVarRegister("net_sync_freq", &_settings_client.network.sync_freq, ICONSOLE_VAR_UINT16, "The amount of frames to check if the game is still in sync. Default value: 100");
IConsoleVarHookAdd("net_sync_freq", ICONSOLE_HOOK_ACCESS, ConHookServerOnly);
- IConsoleVarStringRegister("server_pw", &_network_server_password, sizeof(_network_server_password), "Set the server password to protect your server. Use '*' to clear the password");
+ IConsoleVarStringRegister("server_pw", &_settings_client.network.server_password, sizeof(_settings_client.network.server_password), "Set the server password to protect your server. Use '*' to clear the password");
IConsoleVarHookAdd("server_pw", ICONSOLE_HOOK_ACCESS, ConHookServerOnly);
IConsoleVarHookAdd("server_pw", ICONSOLE_HOOK_POST_ACTION, ConHookServerPW);
IConsoleAliasRegister("server_password", "server_pw %+");
- IConsoleVarStringRegister("rcon_pw", &_network_rcon_password, sizeof(_network_rcon_password), "Set the rcon-password to change server behaviour. Use '*' to disable rcon");
+ IConsoleVarStringRegister("rcon_pw", &_settings_client.network.rcon_password, sizeof(_settings_client.network.rcon_password), "Set the rcon-password to change server behaviour. Use '*' to disable rcon");
IConsoleVarHookAdd("rcon_pw", ICONSOLE_HOOK_ACCESS, ConHookServerOnly);
IConsoleVarHookAdd("rcon_pw", ICONSOLE_HOOK_POST_ACTION, ConHookRconPW);
IConsoleAliasRegister("rcon_password", "rcon_pw %+");
@@ -1612,20 +1613,20 @@ void IConsoleStdLibRegister()
IConsoleVarProcAdd("company_pw", NetworkChangeCompanyPassword);
IConsoleAliasRegister("company_password", "company_pw %+");
- IConsoleVarStringRegister("name", &_network_player_name, sizeof(_network_player_name), "Set your name for multiplayer");
+ IConsoleVarStringRegister("name", &_settings_client.network.player_name, sizeof(_settings_client.network.player_name), "Set your name for multiplayer");
IConsoleVarHookAdd("name", ICONSOLE_HOOK_ACCESS, ConHookNeedNetwork);
IConsoleVarHookAdd("name", ICONSOLE_HOOK_POST_ACTION, ConProcPlayerName);
- IConsoleVarStringRegister("server_name", &_network_server_name, sizeof(_network_server_name), "Set the name of the server for multiplayer");
+ IConsoleVarStringRegister("server_name", &_settings_client.network.server_name, sizeof(_settings_client.network.server_name), "Set the name of the server for multiplayer");
IConsoleVarHookAdd("server_name", ICONSOLE_HOOK_ACCESS, ConHookServerOnly);
IConsoleVarHookAdd("server_name", ICONSOLE_HOOK_POST_ACTION, ConHookServerName);
- IConsoleVarRegister("server_port", &_network_server_port, ICONSOLE_VAR_UINT32, "Set the server port. Changes take effect the next time you start a server");
+ IConsoleVarRegister("server_port", &_settings_client.network.server_port, ICONSOLE_VAR_UINT32, "Set the server port. Changes take effect the next time you start a server");
IConsoleVarRegister("server_ip", &_network_server_bind_ip, ICONSOLE_VAR_UINT32, "Set the IP the server binds to. Changes take effect the next time you start a server. Use 'all' to bind to any IP.");
IConsoleVarProcAdd("server_ip", ConProcServerIP);
IConsoleAliasRegister("server_bind_ip", "server_ip %+");
IConsoleAliasRegister("server_ip_bind", "server_ip %+");
IConsoleAliasRegister("server_bind", "server_ip %+");
- IConsoleVarRegister("server_advertise", &_network_advertise, ICONSOLE_VAR_BOOLEAN, "Set if the server will advertise to the master server and show up there");
+ IConsoleVarRegister("server_advertise", &_settings_client.network.server_advertise, ICONSOLE_VAR_BOOLEAN, "Set if the server will advertise to the master server and show up there");
IConsoleVarHookAdd("server_advertise", ICONSOLE_HOOK_ACCESS, ConHookServerOnly);
IConsoleVarHookAdd("server_advertise", ICONSOLE_HOOK_POST_ACTION, ConHookServerAdvertise);
@@ -1639,24 +1640,24 @@ void IConsoleStdLibRegister()
IConsoleVarHookAdd("max_spectators", ICONSOLE_HOOK_ACCESS, ConHookServerOnly);
IConsoleVarHookAdd("max_spectators", ICONSOLE_HOOK_POST_ACTION, ConHookValidateMaxSpectatorsCount);
- IConsoleVarRegister("max_join_time", &_network_max_join_time, ICONSOLE_VAR_UINT16, "Set the maximum amount of time (ticks) a client is allowed to join. Default value: 500");
+ IConsoleVarRegister("max_join_time", &_settings_client.network.max_join_time, ICONSOLE_VAR_UINT16, "Set the maximum amount of time (ticks) a client is allowed to join. Default value: 500");
- IConsoleVarRegister("pause_on_join", &_network_pause_on_join, ICONSOLE_VAR_BOOLEAN, "Set if the server should pause gameplay while a client is joining. This might help slow users");
+ IConsoleVarRegister("pause_on_join", &_settings_client.network.pause_on_join, ICONSOLE_VAR_BOOLEAN, "Set if the server should pause gameplay while a client is joining. This might help slow users");
IConsoleVarHookAdd("pause_on_join", ICONSOLE_HOOK_ACCESS, ConHookServerOnly);
- IConsoleVarRegister("autoclean_companies", &_network_autoclean_companies, ICONSOLE_VAR_BOOLEAN, "Automatically shut down inactive companies to free them up for other players. Customize with 'autoclean_(un)protected'");
+ IConsoleVarRegister("autoclean_companies", &_settings_client.network.autoclean_companies, ICONSOLE_VAR_BOOLEAN, "Automatically shut down inactive companies to free them up for other players. Customize with 'autoclean_(un)protected'");
IConsoleVarHookAdd("autoclean_companies", ICONSOLE_HOOK_ACCESS, ConHookServerOnly);
- IConsoleVarRegister("autoclean_protected", &_network_autoclean_protected, ICONSOLE_VAR_BYTE, "Automatically remove the password from an inactive company after the given amount of months");
+ IConsoleVarRegister("autoclean_protected", &_settings_client.network.autoclean_protected, ICONSOLE_VAR_BYTE, "Automatically remove the password from an inactive company after the given amount of months");
IConsoleVarHookAdd("autoclean_protected", ICONSOLE_HOOK_ACCESS, ConHookServerOnly);
- IConsoleVarRegister("autoclean_unprotected", &_network_autoclean_unprotected, ICONSOLE_VAR_BYTE, "Automatically shut down inactive companies after the given amount of months");
+ IConsoleVarRegister("autoclean_unprotected", &_settings_client.network.autoclean_unprotected, ICONSOLE_VAR_BYTE, "Automatically shut down inactive companies after the given amount of months");
IConsoleVarHookAdd("autoclean_unprotected", ICONSOLE_HOOK_ACCESS, ConHookServerOnly);
- IConsoleVarRegister("restart_game_year", &_network_restart_game_year, ICONSOLE_VAR_UINT16, "Auto-restart the server when Jan 1st of the set year is reached. Use '0' to disable this");
+ IConsoleVarRegister("restart_game_year", &_settings_client.network.restart_game_year, ICONSOLE_VAR_UINT16, "Auto-restart the server when Jan 1st of the set year is reached. Use '0' to disable this");
IConsoleVarHookAdd("restart_game_year", ICONSOLE_HOOK_ACCESS, ConHookServerOnly);
- IConsoleVarRegister("min_players", &_network_min_players, ICONSOLE_VAR_BYTE, "Automatically pause the game when the number of active players passes below the given amount");
+ IConsoleVarRegister("min_players", &_settings_client.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");
+ IConsoleVarRegister("reload_cfg", &_settings_client.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 */
diff --git a/src/network/network.cpp b/src/network/network.cpp
index 959e1d66d..77003e6a1 100644
--- a/src/network/network.cpp
+++ b/src/network/network.cpp
@@ -216,8 +216,8 @@ uint NetworkCalculateLag(const NetworkTCPSocketHandler *cs)
// This client has missed his ACK packet after 1 DAY_TICKS..
// so we increase his lag for every frame that passes!
// The packet can be out by a max of _net_frame_freq
- if (cs->last_frame_server + DAY_TICKS + _network_frame_freq < _frame_counter)
- lag += _frame_counter - (cs->last_frame_server + DAY_TICKS + _network_frame_freq);
+ if (cs->last_frame_server + DAY_TICKS + _settings_client.network.frame_freq < _frame_counter)
+ lag += _frame_counter - (cs->last_frame_server + DAY_TICKS + _settings_client.network.frame_freq);
return lag;
}
@@ -332,7 +332,7 @@ void CheckMinPlayers()
{
if (!_network_dedicated) return;
- if (NetworkCountPlayers() < _network_min_players) {
+ if (NetworkCountPlayers() < _settings_client.network.min_players) {
if (_min_players_paused) return;
_min_players_paused = true;
@@ -662,7 +662,7 @@ void NetworkCloseClient(NetworkTCPSocketHandler *cs)
}
/* When the client was PRE_ACTIVE, the server was in pause mode, so unpause */
- if (cs->status == STATUS_PRE_ACTIVE && _network_pause_on_join) {
+ if (cs->status == STATUS_PRE_ACTIVE && _settings_client.network.pause_on_join) {
DoCommandP(0, 0, 0, NULL, CMD_PAUSE);
NetworkServer_HandleChat(NETWORK_ACTION_SERVER_MESSAGE, DESTTYPE_BROADCAST, 0, "Game unpaused", NETWORK_SERVER_INDEX);
}
@@ -802,7 +802,7 @@ static bool NetworkListen()
SOCKET ls;
struct sockaddr_in sin;
- DEBUG(net, 1, "Listening on %s:%d", _network_server_bind_ip_host, _network_server_port);
+ DEBUG(net, 1, "Listening on %s:%d", _settings_client.network.server_bind_ip, _settings_client.network.server_port);
ls = socket(AF_INET, SOCK_STREAM, 0);
if (ls == INVALID_SOCKET) {
@@ -823,7 +823,7 @@ static bool NetworkListen()
sin.sin_family = AF_INET;
sin.sin_addr.s_addr = _network_server_bind_ip;
- sin.sin_port = htons(_network_server_port);
+ sin.sin_port = htons(_settings_client.network.server_port);
if (bind(ls, (struct sockaddr*)&sin, sizeof(sin)) != 0) {
ServerStartError("bind() failed");
@@ -923,7 +923,7 @@ void NetworkAddServer(const char *b)
ttd_strlcpy(host, b, lengthof(host));
- ttd_strlcpy(_network_default_ip, b, lengthof(_network_default_ip));
+ ttd_strlcpy(_settings_client.network.connect_to_ip, b, lengthof(_settings_client.network.connect_to_ip));
rport = NETWORK_DEFAULT_PORT;
ParseConnectionString(&player, &port, host);
@@ -961,8 +961,8 @@ bool NetworkClientConnectGame(const char *host, uint16 port)
if (port == 0) return false;
- ttd_strlcpy(_network_last_host, host, sizeof(_network_last_host));
- _network_last_port = port;
+ ttd_strlcpy(_settings_client.network.last_host, host, sizeof(_settings_client.network.last_host));
+ _settings_client.network.last_port = port;
NetworkDisconnect();
NetworkUDPCloseAll();
@@ -987,11 +987,16 @@ static void NetworkInitGameInfo()
{
NetworkClientInfo *ci;
- ttd_strlcpy(_network_game_info.server_name, _network_server_name, sizeof(_network_game_info.server_name));
- ttd_strlcpy(_network_game_info.server_password, _network_server_password, sizeof(_network_server_password));
- ttd_strlcpy(_network_game_info.rcon_password, _network_rcon_password, sizeof(_network_rcon_password));
- if (_network_game_info.server_name[0] == '\0')
+ _network_game_info.clients_max = _settings_client.network.max_clients;
+ _network_game_info.companies_max = _settings_client.network.max_companies;
+ _network_game_info.spectators_max = _settings_client.network.max_spectators;
+ _network_game_info.server_lang = _settings_client.network.server_lang;
+ ttd_strlcpy(_network_game_info.server_name, _settings_client.network.server_name, sizeof(_network_game_info.server_name));
+ ttd_strlcpy(_network_game_info.server_password, _settings_client.network.server_password, sizeof(_network_game_info.server_password));
+ ttd_strlcpy(_network_game_info.rcon_password, _settings_client.network.rcon_password, sizeof(_network_game_info.rcon_password));
+ if (StrEmpty(_network_game_info.server_name)) {
snprintf(_network_game_info.server_name, sizeof(_network_game_info.server_name), "Unnamed Server");
+ }
ttd_strlcpy(_network_game_info.server_revision, _openttd_revision, sizeof(_network_game_info.server_revision));
@@ -1014,7 +1019,7 @@ static void NetworkInitGameInfo()
_network_game_info.map_height = MapSizeY();
_network_game_info.map_set = _settings_game.game_creation.landscape;
- _network_game_info.use_password = (_network_server_password[0] != '\0');
+ _network_game_info.use_password = !StrEmpty(_settings_client.network.server_password);
// We use _network_client_info[MAX_CLIENT_INFO - 1] to store the server-data in it
// The index is NETWORK_SERVER_INDEX ( = 1)
@@ -1024,8 +1029,8 @@ static void NetworkInitGameInfo()
ci->client_index = NETWORK_SERVER_INDEX;
ci->client_playas = _network_dedicated ? PLAYER_SPECTATOR : _local_player;
- ttd_strlcpy(ci->client_name, _network_player_name, sizeof(ci->client_name));
- ttd_strlcpy(ci->unique_id, _network_unique_id, sizeof(ci->unique_id));
+ ttd_strlcpy(ci->client_name, _settings_client.network.player_name, sizeof(ci->client_name));
+ ttd_strlcpy(ci->unique_id, _settings_client.network.network_id, sizeof(ci->unique_id));
}
bool NetworkServerStart()
@@ -1041,7 +1046,7 @@ bool NetworkServerStart()
// Try to start UDP-server
_network_udp_server = true;
- _network_udp_server = _udp_server_socket->Listen(_network_server_bind_ip, _network_server_port, false);
+ _network_udp_server = _udp_server_socket->Listen(_network_server_bind_ip, _settings_client.network.server_port, false);
_network_server = true;
_networking = true;
@@ -1332,7 +1337,7 @@ void NetworkGameLoop()
_frame_counter++;
// Update max-frame-counter
if (_frame_counter > _frame_counter_max) {
- _frame_counter_max = _frame_counter + _network_frame_freq;
+ _frame_counter_max = _frame_counter + _settings_client.network.frame_freq;
send_frame = true;
}
@@ -1382,7 +1387,7 @@ static void NetworkGenerateUniqueId()
sprintf(hex_output + di * 2, "%02x", digest[di]);
/* _network_unique_id is our id */
- snprintf(_network_unique_id, sizeof(_network_unique_id), "%s", hex_output);
+ snprintf(_settings_client.network.network_id, sizeof(_settings_client.network.network_id), "%s", hex_output);
}
void NetworkStartDebugLog(const char *hostname, uint16 port)
@@ -1429,12 +1434,12 @@ void NetworkStartUp()
_network_advertise_retries = 0;
/* Load the ip from the openttd.cfg */
- _network_server_bind_ip = inet_addr(_network_server_bind_ip_host);
+ _network_server_bind_ip = inet_addr(_settings_client.network.server_bind_ip);
/* And put the data back in it in case it was an invalid ip */
- snprintf(_network_server_bind_ip_host, sizeof(_network_server_bind_ip_host), "%s", inet_ntoa(*(struct in_addr *)&_network_server_bind_ip));
+ snprintf(_settings_client.network.server_bind_ip, sizeof(_settings_client.network.server_bind_ip), "%s", inet_ntoa(*(struct in_addr *)&_network_server_bind_ip));
/* Generate an unique id when there is none yet */
- if (_network_unique_id[0] == '\0') NetworkGenerateUniqueId();
+ if (StrEmpty(_settings_client.network.network_id)) NetworkGenerateUniqueId();
{
byte cl_max = _network_game_info.clients_max;
diff --git a/src/network/network.h b/src/network/network.h
index d3bf3d3e1..0e4653901 100644
--- a/src/network/network.h
+++ b/src/network/network.h
@@ -17,7 +17,6 @@ extern bool _network_server; ///< network-server is active
extern bool _network_available; ///< is network mode available?
extern bool _network_dedicated; ///< are we a dedicated server?
extern 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 */
diff --git a/src/network/network_client.cpp b/src/network/network_client.cpp
index 517a191e3..9411a28a4 100644
--- a/src/network/network_client.cpp
+++ b/src/network/network_client.cpp
@@ -84,7 +84,7 @@ void HashCurrentCompanyPassword()
if (StrEmpty(_network_player_info[_local_player].password)) return;
_password_game_seed = _settings_game.game_creation.generation_seed;
- ttd_strlcpy(_password_server_unique_id, _network_unique_id, sizeof(_password_server_unique_id));
+ ttd_strlcpy(_password_server_unique_id, _settings_client.network.network_id, sizeof(_password_server_unique_id));
const char *new_pw = GenerateCompanyPasswordHash(_network_player_info[_local_player].password);
ttd_strlcpy(_network_player_info[_local_player].password, new_pw, sizeof(_network_player_info[_local_player].password));
@@ -131,10 +131,10 @@ DEF_CLIENT_SEND_COMMAND(PACKET_CLIENT_JOIN)
p = NetworkSend_Init(PACKET_CLIENT_JOIN);
p->Send_string(_openttd_revision);
- p->Send_string(_network_player_name); // Player name
+ p->Send_string(_settings_client.network.player_name); // Player name
p->Send_uint8 (_network_playas); // PlayAs
p->Send_uint8 (NETLANG_ANY); // Language
- p->Send_string(_network_unique_id);
+ p->Send_string(_settings_client.network.network_id);
MY_CLIENT->Send_Packet(p);
}
diff --git a/src/network/network_gui.cpp b/src/network/network_gui.cpp
index f58d69f76..413a0b530 100644
--- a/src/network/network_gui.cpp
+++ b/src/network/network_gui.cpp
@@ -240,7 +240,7 @@ protected:
public:
NetworkGameWindow(const WindowDesc *desc) : QueryStringBaseWindow(desc)
{
- ttd_strlcpy(this->edit_str_buf, _network_player_name, lengthof(this->edit_str_buf));
+ ttd_strlcpy(this->edit_str_buf, _settings_client.network.player_name, lengthof(this->edit_str_buf));
this->afilter = CS_ALPHANUMERAL;
InitializeTextBuffer(&this->text, this->edit_str_buf, lengthof(this->edit_str_buf), 120);
@@ -290,7 +290,7 @@ public:
sel->info.grfconfig == NULL);
SetDParam(0, 0x00);
- SetDParam(1, _lan_internet_types_dropdown[_network_lan_internet]);
+ SetDParam(1, _lan_internet_types_dropdown[_settings_client.network.lan_internet]);
this->DrawWidgets();
/* Edit box to set player name */
@@ -315,7 +315,7 @@ public:
y += NET_PRC__SIZE_OF_ROW;
}
- const NetworkGameList *last_joined = NetworkGameListAddItem(inet_addr(_network_last_host), _network_last_port);
+ const NetworkGameList *last_joined = NetworkGameListAddItem(inet_addr(_settings_client.network.last_host), _settings_client.network.last_port);
/* Draw the last joined server, if any */
if (last_joined != NULL) this->DrawServerLine(last_joined, y = this->widget[NGWW_LASTJOINED].top + 3, last_joined == sel);
@@ -406,7 +406,7 @@ public:
break;
case NGWW_CONN_BTN: // 'Connection' droplist
- ShowDropDownMenu(this, _lan_internet_types_dropdown, _network_lan_internet, NGWW_CONN_BTN, 0, 0); // do it for widget NSSW_CONN_BTN
+ ShowDropDownMenu(this, _lan_internet_types_dropdown, _settings_client.network.lan_internet, NGWW_CONN_BTN, 0, 0); // do it for widget NSSW_CONN_BTN
break;
case NGWW_NAME: // Sort by name
@@ -432,7 +432,7 @@ public:
} break;
case NGWW_LASTJOINED: {
- NetworkGameList *last_joined = NetworkGameListAddItem(inet_addr(_network_last_host), _network_last_port);
+ NetworkGameList *last_joined = NetworkGameListAddItem(inet_addr(_settings_client.network.last_host), _settings_client.network.last_port);
if (last_joined != NULL) {
this->server = last_joined;
this->SetDirty();
@@ -440,7 +440,7 @@ public:
} break;
case NGWW_FIND: // Find server automatically
- switch (_network_lan_internet) {
+ switch (_settings_client.network.lan_internet) {
case 0: NetworkUDPSearchGame(); break;
case 1: NetworkUDPQueryMasterServer(); break;
}
@@ -448,7 +448,7 @@ public:
case NGWW_ADD: // Add a server
ShowQueryString(
- BindCString(_network_default_ip),
+ BindCString(_settings_client.network.connect_to_ip),
STR_NETWORK_ENTER_IP,
31 | 0x1000, // maximum number of characters OR
250, // characters up to this width pixels, whichever is satisfied first
@@ -461,8 +461,8 @@ public:
case NGWW_JOIN: // Join Game
if (this->server != NULL) {
- snprintf(_network_last_host, sizeof(_network_last_host), "%s", inet_ntoa(*(struct in_addr *)&this->server->ip));
- _network_last_port = this->server->port;
+ snprintf(_settings_client.network.last_host, sizeof(_settings_client.network.last_host), "%s", inet_ntoa(*(struct in_addr *)&this->server->ip));
+ _settings_client.network.last_port = this->server->port;
ShowNetworkLobbyWindow(this->server);
}
break;
@@ -481,7 +481,7 @@ public:
{
switch (widget) {
case NGWW_CONN_BTN:
- _network_lan_internet = index;
+ _settings_client.network.lan_internet = index;
break;
default:
@@ -521,9 +521,9 @@ public:
/* The name is only allowed when it starts with a letter! */
if (!StrEmpty(this->edit_str_buf) && this->edit_str_buf[0] != ' ') {
- ttd_strlcpy(_network_player_name, this->edit_str_buf, lengthof(_network_player_name));
+ ttd_strlcpy(_settings_client.network.player_name, this->edit_str_buf, lengthof(_settings_client.network.player_name));
} else {
- ttd_strlcpy(_network_player_name, "Player", lengthof(_network_player_name));
+ ttd_strlcpy(_settings_client.network.player_name, "Player", lengthof(_settings_client.network.player_name));
}
return state;
}
@@ -665,7 +665,7 @@ struct NetworkStartServerWindow : public QueryStringBaseWindow {
NetworkStartServerWindow(const WindowDesc *desc) : QueryStringBaseWindow(desc)
{
- ttd_strlcpy(this->edit_str_buf, _network_server_name, lengthof(this->edit_str_buf));
+ ttd_strlcpy(this->edit_str_buf, _settings_client.network.server_name, lengthof(this->edit_str_buf));
_saveload_mode = SLD_NEW_GAME;
BuildFileList();
@@ -676,7 +676,7 @@ struct NetworkStartServerWindow : public QueryStringBaseWindow {
InitializeTextBuffer(&this->text, this->edit_str_buf, lengthof(this->edit_str_buf), 160);
this->field = NSSW_GAMENAME;
- _network_game_info.use_password = !StrEmpty(_network_server_password);
+ _network_game_info.use_password = !StrEmpty(_settings_client.network.server_password);
this->FindWindowPlacementAndResize(desc);
}
@@ -737,7 +737,7 @@ struct NetworkStartServerWindow : public QueryStringBaseWindow {
case NSSW_SETPWD: // Set password button
this->widget_id = NSSW_SETPWD;
- ShowQueryString(BindCString(_network_server_password), STR_NETWORK_SET_PASSWORD, 20, 250, this, CS_ALPHANUMERAL);
+ ShowQueryString(BindCString(_settings_client.network.server_password), STR_NETWORK_SET_PASSWORD, 20, 250, this, CS_ALPHANUMERAL);
break;
case NSSW_SELMAP: { // Select map
@@ -862,7 +862,7 @@ struct NetworkStartServerWindow : public QueryStringBaseWindow {
if (this->field == NSSW_GAMENAME) {
if (this->HandleEditBoxKey(NSSW_GAMENAME, key, keycode, state) == 1) return state; // enter pressed
- ttd_strlcpy(_network_server_name, this->text.buf, sizeof(_network_server_name));
+ ttd_strlcpy(_settings_client.network.server_name, this->text.buf, sizeof(_settings_client.network.server_name));
}
return state;
@@ -873,8 +873,8 @@ struct NetworkStartServerWindow : public QueryStringBaseWindow {
if (str == NULL) return;
if (this->widget_id == NSSW_SETPWD) {
- ttd_strlcpy(_network_server_password, str, lengthof(_network_server_password));
- _network_game_info.use_password = !StrEmpty(_network_server_password);
+ ttd_strlcpy(_settings_client.network.server_password, str, lengthof(_settings_client.network.server_password));
+ _network_game_info.use_password = !StrEmpty(_settings_client.network.server_password);
} else {
int32 value = atoi(str);
this->InvalidateWidget(this->widget_id);
@@ -1104,22 +1104,22 @@ struct NetworkLobbyWindow : public Window {
case NLWW_JOIN: // Join company
/* Button can be clicked only when it is enabled */
_network_playas = this->company;
- NetworkClientConnectGame(_network_last_host, _network_last_port);
+ NetworkClientConnectGame(_settings_client.network.last_host, _settings_client.network.last_port);
break;
case NLWW_NEW: // New company
_network_playas = PLAYER_NEW_COMPANY;
- NetworkClientConnectGame(_network_last_host, _network_last_port);
+ NetworkClientConnectGame(_settings_client.network.last_host, _settings_client.network.last_port);
break;
case NLWW_SPECTATE: // Spectate game
_network_playas = PLAYER_SPECTATOR;
- NetworkClientConnectGame(_network_last_host, _network_last_port);
+ NetworkClientConnectGame(_settings_client.network.last_host, _settings_client.network.last_port);
break;
case NLWW_REFRESH: // Refresh
- NetworkTCPQueryServer(_network_last_host, _network_last_port); // company info
- NetworkUDPQueryServer(_network_last_host, _network_last_port); // general data
+ NetworkTCPQueryServer(_settings_client.network.last_host, _settings_client.network.last_port); // company info
+ NetworkUDPQueryServer(_settings_client.network.last_host, _settings_client.network.last_port); // general data
break;
}
}
@@ -1162,8 +1162,8 @@ static void ShowNetworkLobbyWindow(NetworkGameList *ngl)
{
DeleteWindowById(WC_NETWORK_WINDOW, 0);
- NetworkTCPQueryServer(_network_last_host, _network_last_port); // company info
- NetworkUDPQueryServer(_network_last_host, _network_last_port); // general data
+ NetworkTCPQueryServer(_settings_client.network.last_host, _settings_client.network.last_port); // company info
+ NetworkUDPQueryServer(_settings_client.network.last_host, _settings_client.network.last_port); // general data
new NetworkLobbyWindow(&_network_lobby_window_desc, ngl);
}
@@ -1894,7 +1894,7 @@ struct NetworkCompanyPasswordWindow : public QueryStringBaseWindow {
{
this->parent = parent;
this->afilter = CS_ALPHANUMERAL;
- InitializeTextBuffer(&this->text, this->edit_str_buf, min(lengthof(_network_default_company_pass), lengthof(this->edit_str_buf)), 0);
+ InitializeTextBuffer(&this->text, this->edit_str_buf, min(lengthof(_settings_client.network.default_company_pass), lengthof(this->edit_str_buf)), 0);
this->FindWindowPlacementAndResize(desc);
}
@@ -1902,7 +1902,7 @@ struct NetworkCompanyPasswordWindow : public QueryStringBaseWindow {
void OnOk()
{
if (this->IsWidgetLowered(NCPWW_SAVE_AS_DEFAULT_PASSWORD)) {
- snprintf(_network_default_company_pass, lengthof(_network_default_company_pass), "%s", this->edit_str_buf);
+ snprintf(_settings_client.network.default_company_pass, lengthof(_settings_client.network.default_company_pass), "%s", this->edit_str_buf);
}
/* empty password is a '*' because of console argument */
diff --git a/src/network/network_internal.h b/src/network/network_internal.h
index 753cce206..d38e8bcc0 100644
--- a/src/network/network_internal.h
+++ b/src/network/network_internal.h
@@ -130,11 +130,7 @@ VARDEF NetworkGameInfo _network_game_info;
VARDEF NetworkPlayerInfo _network_player_info[MAX_PLAYERS];
VARDEF NetworkClientInfo _network_client_info[MAX_CLIENT_INFO];
-VARDEF char _network_player_name[NETWORK_CLIENT_NAME_LENGTH];
-VARDEF char _network_default_ip[NETWORK_HOSTNAME_LENGTH];
-
VARDEF uint16 _network_own_client_index;
-VARDEF char _network_unique_id[NETWORK_UNIQUE_ID_LENGTH]; // Our own unique ID
VARDEF uint32 _frame_counter_server; // The frame_counter of the server, if in network-mode
VARDEF uint32 _frame_counter_max; // To where we may go with our clients
@@ -144,26 +140,11 @@ VARDEF uint32 _last_sync_frame; // Used in the server to store the last time a s
// networking settings
VARDEF uint32 _broadcast_list[MAX_INTERFACES + 1];
-VARDEF uint16 _network_server_port;
-/* We use bind_ip and bind_ip_host, where bind_ip_host is the readable form of
- bind_ip_host, and bind_ip the numeric value, because we want a nice number
- in the openttd.cfg, but we wants to use the uint32 internally.. */
VARDEF uint32 _network_server_bind_ip;
-VARDEF char _network_server_bind_ip_host[NETWORK_HOSTNAME_LENGTH];
VARDEF bool _is_network_server; // Does this client wants to be a network-server?
-VARDEF char _network_server_name[NETWORK_NAME_LENGTH];
-VARDEF char _network_server_password[NETWORK_PASSWORD_LENGTH];
-VARDEF char _network_rcon_password[NETWORK_PASSWORD_LENGTH];
-VARDEF char _network_default_company_pass[NETWORK_PASSWORD_LENGTH];
-
-VARDEF uint16 _network_max_join_time; ///< Time a client can max take to join
-VARDEF bool _network_pause_on_join; ///< Pause the game when a client tries to join (more chance of succeeding join)
VARDEF uint16 _redirect_console_to_client;
-VARDEF uint16 _network_sync_freq;
-VARDEF uint8 _network_frame_freq;
-
VARDEF uint32 _sync_seed_1, _sync_seed_2;
VARDEF uint32 _sync_frame;
VARDEF bool _network_first_time;
@@ -173,27 +154,16 @@ VARDEF uint8 _network_join_waiting;
VARDEF uint16 _network_join_kbytes;
VARDEF uint16 _network_join_kbytes_total;
-VARDEF char _network_last_host[NETWORK_HOSTNAME_LENGTH];
-VARDEF short _network_last_port;
VARDEF uint32 _network_last_host_ip;
VARDEF uint8 _network_reconnect;
VARDEF bool _network_udp_server;
VARDEF uint16 _network_udp_broadcast;
-VARDEF byte _network_lan_internet;
-
VARDEF bool _network_need_advertise;
VARDEF uint32 _network_last_advertise_frame;
VARDEF uint8 _network_advertise_retries;
-VARDEF bool _network_autoclean_companies;
-VARDEF uint8 _network_autoclean_unprotected; // Remove a company after X months
-VARDEF uint8 _network_autoclean_protected; // Unprotect a company after X months
-
-VARDEF Year _network_restart_game_year; // If this year is reached, the server automaticly restarts
-VARDEF uint8 _network_min_players; // Minimum number of players for game to unpause
-
void NetworkTCPQueryServer(const char* host, unsigned short port);
byte NetworkSpectatorCount();
diff --git a/src/network/network_server.cpp b/src/network/network_server.cpp
index 6d0f26ff5..7052ff887 100644
--- a/src/network/network_server.cpp
+++ b/src/network/network_server.cpp
@@ -230,7 +230,7 @@ DEF_SERVER_SEND_COMMAND_PARAM(PACKET_SERVER_NEED_PASSWORD)(NetworkTCPSocketHandl
Packet *p = NetworkSend_Init(PACKET_SERVER_NEED_PASSWORD);
p->Send_uint8(type);
p->Send_uint32(_settings_game.game_creation.generation_seed);
- p->Send_string(_network_unique_id);
+ p->Send_string(_settings_client.network.network_id);
cs->Send_Packet(p);
}
@@ -255,7 +255,7 @@ DEF_SERVER_SEND_COMMAND(PACKET_SERVER_WELCOME)
p = NetworkSend_Init(PACKET_SERVER_WELCOME);
p->Send_uint16(cs->index);
p->Send_uint32(_settings_game.game_creation.generation_seed);
- p->Send_string(_network_unique_id);
+ p->Send_string(_settings_client.network.network_id);
cs->Send_Packet(p);
// Transmit info about all the active clients
@@ -800,7 +800,7 @@ DEF_SERVER_RECEIVE_COMMAND(PACKET_CLIENT_MAP_OK)
}
}
- if (_network_pause_on_join) {
+ if (_settings_client.network.pause_on_join) {
/* Now pause the game till the client is in sync */
DoCommandP(0, 1, 0, NULL, CMD_PAUSE);
@@ -1021,7 +1021,7 @@ DEF_SERVER_RECEIVE_COMMAND(PACKET_CLIENT_ACK)
/* Now he is! Unpause the game */
cs->status = STATUS_ACTIVE;
- if (_network_pause_on_join) {
+ if (_settings_client.network.pause_on_join) {
DoCommandP(0, 0, 0, NULL, CMD_PAUSE);
NetworkServer_HandleChat(NETWORK_ACTION_SERVER_MESSAGE, DESTTYPE_BROADCAST, 0, "Game unpaused (client connected)", NETWORK_SERVER_INDEX);
}
@@ -1365,7 +1365,7 @@ void NetworkUpdateClientInfo(uint16 client_index)
/* Check if we want to restart the map */
static void NetworkCheckRestartMap()
{
- if (_network_restart_game_year != 0 && _cur_year >= _network_restart_game_year) {
+ if (_settings_client.network.restart_game_year != 0 && _cur_year >= _settings_client.network.restart_game_year) {
DEBUG(net, 0, "Auto-restarting map. Year %d reached", _cur_year);
StartNewGameWithoutGUI(GENERATE_NEW_SEED);
@@ -1384,7 +1384,7 @@ static void NetworkAutoCleanCompanies()
const Player *p;
bool clients_in_company[MAX_PLAYERS];
- if (!_network_autoclean_companies) return;
+ if (!_settings_client.network.autoclean_companies) return;
memset(clients_in_company, 0, sizeof(clients_in_company));
@@ -1409,13 +1409,13 @@ static void NetworkAutoCleanCompanies()
_network_player_info[p->index].months_empty++;
/* Is the company empty for autoclean_unprotected-months, and is there no protection? */
- if (_network_player_info[p->index].months_empty > _network_autoclean_unprotected && _network_player_info[p->index].password[0] == '\0') {
+ if (_network_player_info[p->index].months_empty > _settings_client.network.autoclean_unprotected && _network_player_info[p->index].password[0] == '\0') {
/* Shut the company down */
DoCommandP(0, 2, p->index, NULL, CMD_PLAYER_CTRL);
IConsolePrintF(CC_DEFAULT, "Auto-cleaned company #%d", p->index + 1);
}
/* Is the compnay empty for autoclean_protected-months, and there is a protection? */
- if (_network_player_info[p->index].months_empty > _network_autoclean_protected && _network_player_info[p->index].password[0] != '\0') {
+ if (_network_player_info[p->index].months_empty > _settings_client.network.autoclean_protected && _network_player_info[p->index].password[0] != '\0') {
/* Unprotect the company */
_network_player_info[p->index].password[0] = '\0';
IConsolePrintF(CC_DEFAULT, "Auto-removed protection from company #%d", p->index+1);
@@ -1510,7 +1510,7 @@ void NetworkServer_Tick(bool send_frame)
#endif
#ifndef ENABLE_NETWORK_SYNC_EVERY_FRAME
- if (_frame_counter >= _last_sync_frame + _network_sync_freq) {
+ if (_frame_counter >= _last_sync_frame + _settings_client.network.sync_freq) {
_last_sync_frame = _frame_counter;
send_sync = true;
}
@@ -1542,8 +1542,8 @@ void NetworkServer_Tick(bool send_frame)
}
} else if (cs->status == STATUS_PRE_ACTIVE) {
int lag = NetworkCalculateLag(cs);
- if (lag > _network_max_join_time) {
- IConsolePrintF(CC_ERROR,"Client #%d is dropped because it took longer than %d ticks for him to join", cs->index, _network_max_join_time);
+ if (lag > _settings_client.network.max_join_time) {
+ IConsolePrintF(CC_ERROR,"Client #%d is dropped because it took longer than %d ticks for him to join", cs->index, _settings_client.network.max_join_time);
NetworkCloseClient(cs);
}
} else if (cs->status == STATUS_INACTIVE) {
diff --git a/src/network/network_udp.cpp b/src/network/network_udp.cpp
index d6f0ec092..ef533356b 100644
--- a/src/network/network_udp.cpp
+++ b/src/network/network_udp.cpp
@@ -428,7 +428,7 @@ static void NetworkUDPBroadCast(NetworkUDPSocketHandler *socket)
struct sockaddr_in out_addr;
out_addr.sin_family = AF_INET;
- out_addr.sin_port = htons(_network_server_port);
+ out_addr.sin_port = htons(_settings_client.network.server_port);
out_addr.sin_addr.s_addr = _broadcast_list[i];
DEBUG(net, 4, "[udp] broadcasting to %s", inet_ntoa(out_addr.sin_addr));
@@ -535,7 +535,7 @@ void NetworkUDPRemoveAdvertise()
Packet p(PACKET_UDP_SERVER_UNREGISTER);
/* Packet is: Version, server_port */
p.Send_uint8 (NETWORK_MASTER_SERVER_VERSION);
- p.Send_uint16(_network_server_port);
+ p.Send_uint16(_settings_client.network.server_port);
_udp_master_socket->SendPacket(&p, &out_addr);
}
@@ -584,7 +584,7 @@ void NetworkUDPAdvertise()
/* Packet is: WELCOME_MESSAGE, Version, server_port */
p.Send_string(NETWORK_MASTER_SERVER_WELCOME_MESSAGE);
p.Send_uint8 (NETWORK_MASTER_SERVER_VERSION);
- p.Send_uint16(_network_server_port);
+ p.Send_uint16(_settings_client.network.server_port);
_udp_master_socket->SendPacket(&p, &out_addr);
}
diff --git a/src/openttd.cpp b/src/openttd.cpp
index bc5fdfb92..f4328dcfc 100644
--- a/src/openttd.cpp
+++ b/src/openttd.cpp
@@ -485,8 +485,8 @@ int ttd_main(int argc, char *argv[])
if (_cur_resolution[1] == 0) _cur_resolution[1] = 1;
#if defined(ENABLE_NETWORK)
- if (dedicated_host) snprintf(_network_server_bind_ip_host, NETWORK_HOSTNAME_LENGTH, "%s", dedicated_host);
- if (dedicated_port) _network_server_port = dedicated_port;
+ if (dedicated_host) snprintf(_settings_client.network.server_bind_ip, sizeof(_settings_client.network.server_bind_ip), "%s", dedicated_host);
+ if (dedicated_port) _settings_client.network.server_port = dedicated_port;
if (_dedicated_forks && !dedicated) _dedicated_forks = false;
#endif /* ENABLE_NETWORK */
@@ -680,8 +680,8 @@ static void MakeNewGameDone()
#ifdef ENABLE_NETWORK
/* We are the server, we start a new player (not dedicated),
* so set the default password *if* needed. */
- if (_network_server && !StrEmpty(_network_default_company_pass)) {
- char *password = _network_default_company_pass;
+ if (_network_server && !StrEmpty(_settings_client.network.default_company_pass)) {
+ char *password = _settings_client.network.default_company_pass;
NetworkChangeCompanyPassword(1, &password);
}
#endif /* ENABLE_NETWORK */
@@ -822,7 +822,7 @@ void SwitchMode(int new_mode)
/* 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) {
+ if (_settings_client.network.reload_cfg) {
LoadFromConfig();
_settings_game = _settings_newgame;
ResetGRFConfig(false);
@@ -1102,7 +1102,7 @@ void GameLoop()
if (_network_reconnect > 0 && --_network_reconnect == 0) {
/* This means that we want to reconnect to the last host
* We do this here, because it means that the network is really closed */
- NetworkClientConnectGame(_network_last_host, _network_last_port);
+ NetworkClientConnectGame(_settings_client.network.last_host, _settings_client.network.last_port);
}
/* Singleplayer */
StateGameLoop();
diff --git a/src/players.cpp b/src/players.cpp
index b5675fd67..d8ea6a6e9 100644
--- a/src/players.cpp
+++ b/src/players.cpp
@@ -865,8 +865,8 @@ CommandCost CmdPlayerCtrl(TileIndex tile, uint32 flags, uint32 p1, uint32 p2)
assert(_local_player == PLAYER_SPECTATOR);
SetLocalPlayer(p->index);
#ifdef ENABLE_NETWORK
- if (!StrEmpty(_network_default_company_pass)) {
- char *password = _network_default_company_pass;
+ if (!StrEmpty(_settings_client.network.default_company_pass)) {
+ char *password = _settings_client.network.default_company_pass;
NetworkChangeCompanyPassword(1, &password);
}
#endif /* ENABLE_NETWORK */
diff --git a/src/settings.cpp b/src/settings.cpp
index 797020cd7..58d8a79a3 100644
--- a/src/settings.cpp
+++ b/src/settings.cpp
@@ -1501,33 +1501,33 @@ static const SettingDescGlobVarList _misc_settings[] = {
#ifdef ENABLE_NETWORK
static const SettingDescGlobVarList _network_settings[] = {
- SDTG_VAR("sync_freq", SLE_UINT16,C|S,0, _network_sync_freq, 100, 0, 100, 0, STR_NULL, NULL),
- SDTG_VAR("frame_freq", SLE_UINT8,C|S,0, _network_frame_freq, 0, 0, 100, 0, STR_NULL, NULL),
- SDTG_VAR("max_join_time", SLE_UINT16, S, 0, _network_max_join_time, 500, 0, 32000, 0, STR_NULL, NULL),
- SDTG_BOOL("pause_on_join", S, 0, _network_pause_on_join, true, STR_NULL, NULL),
- SDTG_STR("server_bind_ip", SLE_STRB, S, 0, _network_server_bind_ip_host, "0.0.0.0", STR_NULL, NULL),
- SDTG_VAR("server_port", SLE_UINT16, S, 0, _network_server_port, NETWORK_DEFAULT_PORT, 0, 65535, 0, STR_NULL, NULL),
- SDTG_BOOL("server_advertise", S, 0, _network_advertise, false, STR_NULL, NULL),
- SDTG_VAR("lan_internet", SLE_UINT8, S, 0, _network_lan_internet, 0, 0, 1, 0, STR_NULL, NULL),
- SDTG_STR("player_name", SLE_STRB, S, 0, _network_player_name, NULL, STR_NULL, NULL),
- SDTG_STR("server_password", SLE_STRB, S, 0, _network_server_password, NULL, STR_NULL, NULL),
- SDTG_STR("rcon_password", SLE_STRB, S, 0, _network_rcon_password, NULL, STR_NULL, NULL),
- SDTG_STR("default_company_pass", SLE_STRB, S, 0, _network_default_company_pass, NULL, STR_NULL, NULL),
- SDTG_STR("server_name", SLE_STRB, S, 0, _network_server_name, NULL, STR_NULL, NULL),
- SDTG_STR("connect_to_ip", SLE_STRB, S, 0, _network_default_ip, NULL, STR_NULL, NULL),
- SDTG_STR("network_id", SLE_STRB, S, 0, _network_unique_id, NULL, STR_NULL, NULL),
- SDTG_BOOL("autoclean_companies", S, 0, _network_autoclean_companies, false, STR_NULL, NULL),
- SDTG_VAR("autoclean_unprotected",SLE_UINT8, S, 0, _network_autoclean_unprotected,12, 0, 60, 0, STR_NULL, NULL),
- SDTG_VAR("autoclean_protected", SLE_UINT8, S, 0, _network_autoclean_protected, 36, 0, 180, 0, STR_NULL, NULL),
- SDTG_VAR("max_companies", SLE_UINT8, S, 0, _network_game_info.companies_max, 8, 1, MAX_PLAYERS, 0, STR_NULL, NULL),
- SDTG_VAR("max_clients", SLE_UINT8, S, 0, _network_game_info.clients_max, 10, 2, MAX_CLIENTS, 0, STR_NULL, NULL),
- SDTG_VAR("max_spectators", SLE_UINT8, S, 0, _network_game_info.spectators_max, 10, 0, MAX_CLIENTS, 0, STR_NULL, NULL),
- 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, 35, "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|AFRIKAANS|CROATIAN|CATALAN|ESTONIAN|GALICIAN|GREEK|LATVIAN", STR_NULL, NULL),
- SDTG_BOOL("reload_cfg", S, 0, _network_reload_cfg, false, STR_NULL, NULL),
- SDTG_STR("last_host", SLE_STRB, S, 0, _network_last_host, "0.0.0.0", STR_NULL, NULL),
- SDTG_VAR("last_port", SLE_UINT16, S, 0, _network_last_port, 0, 0, UINT16_MAX, 0, STR_NULL ,NULL),
+ SDTG_VAR("sync_freq", SLE_UINT16,C|S,0, _settings_client.network.sync_freq, 100, 0, 100, 0, STR_NULL, NULL),
+ SDTG_VAR("frame_freq", SLE_UINT8,C|S,0, _settings_client.network.frame_freq, 0, 0, 100, 0, STR_NULL, NULL),
+ SDTG_VAR("max_join_time", SLE_UINT16, S, 0, _settings_client.network.max_join_time, 500, 0, 32000, 0, STR_NULL, NULL),
+ SDTG_BOOL("pause_on_join", S, 0, _settings_client.network.pause_on_join, true, STR_NULL, NULL),
+ SDTG_STR("server_bind_ip", SLE_STRB, S, 0, _settings_client.network.server_bind_ip, "0.0.0.0", STR_NULL, NULL),
+ SDTG_VAR("server_port", SLE_UINT16, S, 0, _settings_client.network.server_port, NETWORK_DEFAULT_PORT, 0, 65535, 0, STR_NULL, NULL),
+ SDTG_BOOL("server_advertise", S, 0, _settings_client.network.server_advertise, false, STR_NULL, NULL),
+ SDTG_VAR("lan_internet", SLE_UINT8, S, 0, _settings_client.network.lan_internet, 0, 0, 1, 0, STR_NULL, NULL),
+ SDTG_STR("player_name", SLE_STRB, S, 0, _settings_client.network.player_name, NULL, STR_NULL, NULL),
+ SDTG_STR("server_password", SLE_STRB, S, 0, _settings_client.network.server_password, NULL, STR_NULL, NULL),
+ SDTG_STR("rcon_password", SLE_STRB, S, 0, _settings_client.network.rcon_password, NULL, STR_NULL, NULL),
+ SDTG_STR("default_company_pass", SLE_STRB, S, 0, _settings_client.network.default_company_pass, NULL, STR_NULL, NULL),
+ SDTG_STR("server_name", SLE_STRB, S, 0, _settings_client.network.server_name, NULL, STR_NULL, NULL),
+ SDTG_STR("connect_to_ip", SLE_STRB, S, 0, _settings_client.network.connect_to_ip, NULL, STR_NULL, NULL),
+ SDTG_STR("network_id", SLE_STRB, S, 0, _settings_client.network.network_id, NULL, STR_NULL, NULL),
+ SDTG_BOOL("autoclean_companies", S, 0, _settings_client.network.autoclean_companies, false, STR_NULL, NULL),
+ SDTG_VAR("autoclean_unprotected",SLE_UINT8, S, 0, _settings_client.network.autoclean_unprotected,12, 0, 60, 0, STR_NULL, NULL),
+ SDTG_VAR("autoclean_protected", SLE_UINT8, S, 0, _settings_client.network.autoclean_protected, 36, 0, 180, 0, STR_NULL, NULL),
+ SDTG_VAR("max_companies", SLE_UINT8, S, 0, _settings_client.network.max_companies, 8, 1, MAX_PLAYERS, 0, STR_NULL, NULL),
+ SDTG_VAR("max_clients", SLE_UINT8, S, 0, _settings_client.network.max_clients, 10, 2, MAX_CLIENTS, 0, STR_NULL, NULL),
+ SDTG_VAR("max_spectators", SLE_UINT8, S, 0, _settings_client.network.max_spectators, 10, 0, MAX_CLIENTS, 0, STR_NULL, NULL),
+ SDTG_VAR("restart_game_year", SLE_INT32, S,D0, _settings_client.network.restart_game_year, 0, MIN_YEAR, MAX_YEAR, 1, STR_NULL, NULL),
+ SDTG_VAR("min_players", SLE_UINT8, S, 0, _settings_client.network.min_players, 0, 0, 10, 0, STR_NULL, NULL),
+ SDTG_OMANY("server_lang", SLE_UINT8, S, 0, _settings_client.network.server_lang, 0, 35, "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|AFRIKAANS|CROATIAN|CATALAN|ESTONIAN|GALICIAN|GREEK|LATVIAN", STR_NULL, NULL),
+ SDTG_BOOL("reload_cfg", S, 0, _settings_client.network.reload_cfg, false, STR_NULL, NULL),
+ SDTG_STR("last_host", SLE_STRB, S, 0, _settings_client.network.last_host, "0.0.0.0", STR_NULL, NULL),
+ SDTG_VAR("last_port", SLE_UINT16, S, 0, _settings_client.network.last_port, 0, 0, UINT16_MAX, 0, STR_NULL ,NULL),
SDTG_END()
};
#endif /* ENABLE_NETWORK */
diff --git a/src/settings_type.h b/src/settings_type.h
index b91bed690..c73b60589 100644
--- a/src/settings_type.h
+++ b/src/settings_type.h
@@ -8,6 +8,7 @@
#include "date_type.h"
#include "town_type.h"
#include "transport_type.h"
+#include "network/core/config.h"
/** Settings related to the difficulty of the game */
struct DifficultySettings {
@@ -82,6 +83,40 @@ struct GUISettings {
byte news_message_timeout; ///< how much longer than the news message "age" should we keep the message in the history
};
+/** All settings related to the network. */
+struct NetworkSettings {
+#ifdef ENABLE_NETWORK
+ uint16 sync_freq;
+ uint8 frame_freq;
+ uint16 max_join_time;
+ bool pause_on_join;
+ char server_bind_ip[NETWORK_HOSTNAME_LENGTH];
+ uint16 server_port;
+ bool server_advertise;
+ uint8 lan_internet;
+ char player_name[NETWORK_NAME_LENGTH];
+ char server_password[NETWORK_PASSWORD_LENGTH];
+ char rcon_password[NETWORK_PASSWORD_LENGTH];
+ char default_company_pass[NETWORK_PASSWORD_LENGTH];
+ char server_name[NETWORK_NAME_LENGTH];
+ char connect_to_ip[NETWORK_HOSTNAME_LENGTH];
+ char network_id[NETWORK_UNIQUE_ID_LENGTH];
+ bool autoclean_companies;
+ uint8 autoclean_unprotected;
+ uint8 autoclean_protected;
+ uint8 max_companies;
+ uint8 max_clients;
+ uint8 max_spectators;
+ Year restart_game_year;
+ uint8 min_players;
+ uint8 server_lang;
+ bool reload_cfg;
+ char last_host[NETWORK_HOSTNAME_LENGTH];
+ uint16 last_port;
+#else /* ENABLE_NETWORK */
+#endif
+};
+
/** Settings related to the creation of games. */
struct GameCreationSettings {
uint32 generation_seed; ///< noise seed for world generation
@@ -281,6 +316,7 @@ struct GameSettings {
/** All settings that are only important for the local client. */
struct ClientSettings {
GUISettings gui; ///< settings related to the GUI
+ NetworkSettings network; ///< settings related to the network
};
/** The current settings for this game. */