diff options
author | rubidium <rubidium@openttd.org> | 2008-06-03 08:04:35 +0000 |
---|---|---|
committer | rubidium <rubidium@openttd.org> | 2008-06-03 08:04:35 +0000 |
commit | abf2b0efc36e09caac75ad777af6842a16b66d22 (patch) | |
tree | f4465a975b5e0a16c9e1057ed8b9c384ae16a443 /src/network/network_udp.cpp | |
parent | 4b4e73c1dd6c77a5876f826a45af1263b1b3eb96 (diff) | |
download | openttd-abf2b0efc36e09caac75ad777af6842a16b66d22.tar.xz |
(svn r13369) -Codechange: remove duplication of network configuration settings between NetworkSettings and NetworkGameInfo.
-Fix: failure of changing the server password during games because the password wasn't duplicated properly.
Diffstat (limited to 'src/network/network_udp.cpp')
-rw-r--r-- | src/network/network_udp.cpp | 40 |
1 files changed, 28 insertions, 12 deletions
diff --git a/src/network/network_udp.cpp b/src/network/network_udp.cpp index 33c9d108f..02c2fe1fd 100644 --- a/src/network/network_udp.cpp +++ b/src/network/network_udp.cpp @@ -23,6 +23,7 @@ #include "../player_base.h" #include "../player_func.h" #include "../settings_type.h" +#include "../rev.h" #include "core/udp.h" @@ -68,21 +69,36 @@ public: DEF_UDP_RECEIVE_COMMAND(Server, PACKET_UDP_CLIENT_FIND_SERVER) { // Just a fail-safe.. should never happen - if (!_network_udp_server) + if (!_network_udp_server) { return; + } - Packet packet(PACKET_UDP_SERVER_RESPONSE); - - // Update some game_info - _network_game_info.game_date = _date; - _network_game_info.map_width = MapSizeX(); - _network_game_info.map_height = MapSizeY(); - _network_game_info.map_set = _settings_game.game_creation.landscape; - _network_game_info.companies_on = ActivePlayerCount(); - _network_game_info.spectators_on = NetworkSpectatorCount(); - _network_game_info.grfconfig = _grfconfig; + NetworkGameInfo ngi; + + /* Update some game_info */ + ngi.clients_on = _network_game_info.clients_on; + ngi.start_date = _network_game_info.start_date; + + ngi.server_lang = _settings_client.network.server_lang; + ngi.use_password = !StrEmpty(_settings_client.network.server_password); + ngi.clients_max = _settings_client.network.max_clients; + ngi.companies_on = ActivePlayerCount(); + ngi.companies_max = _settings_client.network.max_companies; + ngi.spectators_on = NetworkSpectatorCount(); + ngi.spectators_max = _settings_client.network.max_spectators; + ngi.game_date = _date; + ngi.map_width = MapSizeX(); + ngi.map_height = MapSizeY(); + ngi.map_set = _settings_game.game_creation.landscape; + ngi.dedicated = _network_dedicated; + ngi.grfconfig = _grfconfig; + + ttd_strlcpy(ngi.map_name, _network_game_info.map_name, lengthof(ngi.map_name)); + ttd_strlcpy(ngi.server_name, _settings_client.network.server_name, lengthof(ngi.server_name)); + ttd_strlcpy(ngi.server_revision, _openttd_revision, lengthof(ngi.server_revision)); - this->Send_NetworkGameInfo(&packet, &_network_game_info); + Packet packet(PACKET_UDP_SERVER_RESPONSE); + this->Send_NetworkGameInfo(&packet, &ngi); // Let the client know that we are here this->SendPacket(&packet, client_addr); |