summaryrefslogtreecommitdiff
path: root/src/network/network_udp.cpp
diff options
context:
space:
mode:
authorrubidium <rubidium@openttd.org>2008-06-03 08:04:35 +0000
committerrubidium <rubidium@openttd.org>2008-06-03 08:04:35 +0000
commitabf2b0efc36e09caac75ad777af6842a16b66d22 (patch)
treef4465a975b5e0a16c9e1057ed8b9c384ae16a443 /src/network/network_udp.cpp
parent4b4e73c1dd6c77a5876f826a45af1263b1b3eb96 (diff)
downloadopenttd-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.cpp40
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);