mirror of https://github.com/OpenTTD/OpenTTD
Codechange: [Network] Use std::string for NetworkGameInfo
parent
cb89d22cf2
commit
f1dfa661a1
|
@ -112,7 +112,7 @@ bool IsNetworkCompatibleVersion(const char *other)
|
||||||
void CheckGameCompatibility(NetworkGameInfo &ngi)
|
void CheckGameCompatibility(NetworkGameInfo &ngi)
|
||||||
{
|
{
|
||||||
/* Check if we are allowed on this server based on the revision-check. */
|
/* Check if we are allowed on this server based on the revision-check. */
|
||||||
ngi.version_compatible = IsNetworkCompatibleVersion(ngi.server_revision);
|
ngi.version_compatible = IsNetworkCompatibleVersion(ngi.server_revision.c_str());
|
||||||
ngi.compatible = ngi.version_compatible;
|
ngi.compatible = ngi.version_compatible;
|
||||||
|
|
||||||
/* Check if we have all the GRFs on the client-system too. */
|
/* Check if we have all the GRFs on the client-system too. */
|
||||||
|
@ -138,8 +138,8 @@ void FillStaticNetworkServerGameInfo()
|
||||||
_network_game_info.dedicated = _network_dedicated;
|
_network_game_info.dedicated = _network_dedicated;
|
||||||
_network_game_info.grfconfig = _grfconfig;
|
_network_game_info.grfconfig = _grfconfig;
|
||||||
|
|
||||||
strecpy(_network_game_info.server_name, _settings_client.network.server_name, lastof(_network_game_info.server_name));
|
_network_game_info.server_name = _settings_client.network.server_name;
|
||||||
strecpy(_network_game_info.server_revision, GetNetworkRevisionString(), lastof(_network_game_info.server_revision));
|
_network_game_info.server_revision = GetNetworkRevisionString();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -295,8 +295,8 @@ void DeserializeNetworkGameInfo(Packet *p, NetworkGameInfo *info)
|
||||||
FALLTHROUGH;
|
FALLTHROUGH;
|
||||||
|
|
||||||
case 1:
|
case 1:
|
||||||
p->Recv_string(info->server_name, sizeof(info->server_name));
|
info->server_name = p->Recv_string(NETWORK_NAME_LENGTH);
|
||||||
p->Recv_string(info->server_revision, sizeof(info->server_revision));
|
info->server_revision = p->Recv_string(NETWORK_REVISION_LENGTH);
|
||||||
p->Recv_uint8 (); // Used to contain server-lang.
|
p->Recv_uint8 (); // Used to contain server-lang.
|
||||||
info->use_password = p->Recv_bool ();
|
info->use_password = p->Recv_bool ();
|
||||||
info->clients_max = p->Recv_uint8 ();
|
info->clients_max = p->Recv_uint8 ();
|
||||||
|
|
|
@ -65,8 +65,8 @@ struct NetworkServerGameInfo {
|
||||||
Date game_date; ///< Current date
|
Date game_date; ///< Current date
|
||||||
uint16 map_width; ///< Map width
|
uint16 map_width; ///< Map width
|
||||||
uint16 map_height; ///< Map height
|
uint16 map_height; ///< Map height
|
||||||
char server_name[NETWORK_NAME_LENGTH]; ///< Server name
|
std::string server_name; ///< Server name
|
||||||
char server_revision[NETWORK_REVISION_LENGTH]; ///< The version number the server is using (e.g.: 'r304' or 0.5.0)
|
std::string server_revision; ///< The version number the server is using (e.g.: 'r304' or 0.5.0)
|
||||||
bool dedicated; ///< Is this a dedicated server?
|
bool dedicated; ///< Is this a dedicated server?
|
||||||
bool use_password; ///< Is this server passworded?
|
bool use_password; ///< Is this server passworded?
|
||||||
byte clients_on; ///< Current count of clients on server
|
byte clients_on; ///< Current count of clients on server
|
||||||
|
|
|
@ -656,9 +656,9 @@ NetworkGameList *NetworkAddServer(const std::string &connection_string)
|
||||||
|
|
||||||
/* Ensure the item already exists in the list */
|
/* Ensure the item already exists in the list */
|
||||||
NetworkGameList *item = NetworkGameListAddItem(connection_string);
|
NetworkGameList *item = NetworkGameListAddItem(connection_string);
|
||||||
if (StrEmpty(item->info.server_name)) {
|
if (item->info.server_name.empty()) {
|
||||||
ClearGRFConfigList(&item->info.grfconfig);
|
ClearGRFConfigList(&item->info.grfconfig);
|
||||||
strecpy(item->info.server_name, connection_string.c_str(), lastof(item->info.server_name));
|
item->info.server_name = connection_string;
|
||||||
item->manually = true;
|
item->manually = true;
|
||||||
|
|
||||||
NetworkRebuildHostList();
|
NetworkRebuildHostList();
|
||||||
|
@ -1163,7 +1163,7 @@ void NetworkStartUp()
|
||||||
/* Generate an server id when there is none yet */
|
/* Generate an server id when there is none yet */
|
||||||
if (StrEmpty(_settings_client.network.network_id)) NetworkGenerateServerId();
|
if (StrEmpty(_settings_client.network.network_id)) NetworkGenerateServerId();
|
||||||
|
|
||||||
memset(&_network_game_info, 0, sizeof(_network_game_info));
|
_network_game_info = {};
|
||||||
|
|
||||||
NetworkInitialize();
|
NetworkInitialize();
|
||||||
DEBUG(net, 3, "[core] network online, multiplayer available");
|
DEBUG(net, 3, "[core] network online, multiplayer available");
|
||||||
|
|
|
@ -47,10 +47,10 @@ static void NetworkGameListHandleDelayedInsert()
|
||||||
NetworkGameList *item = NetworkGameListAddItem(ins_item->connection_string);
|
NetworkGameList *item = NetworkGameListAddItem(ins_item->connection_string);
|
||||||
|
|
||||||
if (item != nullptr) {
|
if (item != nullptr) {
|
||||||
if (StrEmpty(item->info.server_name)) {
|
if (item->info.server_name.empty()) {
|
||||||
ClearGRFConfigList(&item->info.grfconfig);
|
ClearGRFConfigList(&item->info.grfconfig);
|
||||||
memset(&item->info, 0, sizeof(item->info));
|
item->info = {};
|
||||||
strecpy(item->info.server_name, ins_item->info.server_name, lastof(item->info.server_name));
|
item->info.server_name = ins_item->info.server_name;
|
||||||
item->online = false;
|
item->online = false;
|
||||||
}
|
}
|
||||||
item->manually |= ins_item->manually;
|
item->manually |= ins_item->manually;
|
||||||
|
|
|
@ -271,7 +271,7 @@ protected:
|
||||||
/** Sort servers by name. */
|
/** Sort servers by name. */
|
||||||
static bool NGameNameSorter(NetworkGameList * const &a, NetworkGameList * const &b)
|
static bool NGameNameSorter(NetworkGameList * const &a, NetworkGameList * const &b)
|
||||||
{
|
{
|
||||||
int r = strnatcmp(a->info.server_name, b->info.server_name, true); // Sort by name (natural sorting).
|
int r = strnatcmp(a->info.server_name.c_str(), b->info.server_name.c_str(), true); // Sort by name (natural sorting).
|
||||||
if (r == 0) r = a->connection_string.compare(b->connection_string);
|
if (r == 0) r = a->connection_string.compare(b->connection_string);
|
||||||
|
|
||||||
return r < 0;
|
return r < 0;
|
||||||
|
@ -324,7 +324,7 @@ protected:
|
||||||
static bool NGameAllowedSorter(NetworkGameList * const &a, NetworkGameList * const &b)
|
static bool NGameAllowedSorter(NetworkGameList * const &a, NetworkGameList * const &b)
|
||||||
{
|
{
|
||||||
/* The servers we do not know anything about (the ones that did not reply) should be at the bottom) */
|
/* The servers we do not know anything about (the ones that did not reply) should be at the bottom) */
|
||||||
int r = StrEmpty(a->info.server_revision) - StrEmpty(b->info.server_revision);
|
int r = a->info.server_revision.empty() - b->info.server_revision.empty();
|
||||||
|
|
||||||
/* Reverse default as we are interested in version-compatible clients first */
|
/* Reverse default as we are interested in version-compatible clients first */
|
||||||
if (r == 0) r = b->info.version_compatible - a->info.version_compatible;
|
if (r == 0) r = b->info.version_compatible - a->info.version_compatible;
|
||||||
|
@ -361,7 +361,7 @@ protected:
|
||||||
assert((*item) != nullptr);
|
assert((*item) != nullptr);
|
||||||
|
|
||||||
sf.ResetState();
|
sf.ResetState();
|
||||||
sf.AddLine((*item)->info.server_name);
|
sf.AddLine((*item)->info.server_name.c_str());
|
||||||
return sf.GetState();
|
return sf.GetState();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -91,7 +91,7 @@ static void DoNetworkUDPQueryServer(const std::string &connection_string, bool n
|
||||||
{
|
{
|
||||||
/* Clear item in gamelist */
|
/* Clear item in gamelist */
|
||||||
NetworkGameList *item = new NetworkGameList(connection_string, manually);
|
NetworkGameList *item = new NetworkGameList(connection_string, manually);
|
||||||
strecpy(item->info.server_name, connection_string.c_str(), lastof(item->info.server_name));
|
item->info.server_name = connection_string;
|
||||||
NetworkGameListAddItemDelayed(item);
|
NetworkGameListAddItemDelayed(item);
|
||||||
|
|
||||||
std::unique_lock<std::mutex> lock(_udp_client.mutex, std::defer_lock);
|
std::unique_lock<std::mutex> lock(_udp_client.mutex, std::defer_lock);
|
||||||
|
@ -362,7 +362,7 @@ void ClientNetworkUDPSocketHandler::Receive_SERVER_RESPONSE(Packet *p, NetworkAd
|
||||||
}
|
}
|
||||||
|
|
||||||
if (client_addr->GetAddress()->ss_family == AF_INET6) {
|
if (client_addr->GetAddress()->ss_family == AF_INET6) {
|
||||||
strecat(item->info.server_name, " (IPv6)", lastof(item->info.server_name));
|
item->info.server_name.append(" (IPv6)");
|
||||||
}
|
}
|
||||||
|
|
||||||
UpdateNetworkGameWindow();
|
UpdateNetworkGameWindow();
|
||||||
|
|
Loading…
Reference in New Issue