mirror of https://github.com/OpenTTD/OpenTTD.git
Codechange: [Network] Use std::string for NetworkGameInfo
This commit is contained in:
parent
cb89d22cf2
commit
f1dfa661a1
|
@ -112,7 +112,7 @@ bool IsNetworkCompatibleVersion(const char *other)
|
|||
void CheckGameCompatibility(NetworkGameInfo &ngi)
|
||||
{
|
||||
/* 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;
|
||||
|
||||
/* 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.grfconfig = _grfconfig;
|
||||
|
||||
strecpy(_network_game_info.server_name, _settings_client.network.server_name, lastof(_network_game_info.server_name));
|
||||
strecpy(_network_game_info.server_revision, GetNetworkRevisionString(), lastof(_network_game_info.server_revision));
|
||||
_network_game_info.server_name = _settings_client.network.server_name;
|
||||
_network_game_info.server_revision = GetNetworkRevisionString();
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -295,8 +295,8 @@ void DeserializeNetworkGameInfo(Packet *p, NetworkGameInfo *info)
|
|||
FALLTHROUGH;
|
||||
|
||||
case 1:
|
||||
p->Recv_string(info->server_name, sizeof(info->server_name));
|
||||
p->Recv_string(info->server_revision, sizeof(info->server_revision));
|
||||
info->server_name = p->Recv_string(NETWORK_NAME_LENGTH);
|
||||
info->server_revision = p->Recv_string(NETWORK_REVISION_LENGTH);
|
||||
p->Recv_uint8 (); // Used to contain server-lang.
|
||||
info->use_password = p->Recv_bool ();
|
||||
info->clients_max = p->Recv_uint8 ();
|
||||
|
|
|
@ -60,22 +60,22 @@
|
|||
* The game information that is sent from the server to the client.
|
||||
*/
|
||||
struct NetworkServerGameInfo {
|
||||
GRFConfig *grfconfig; ///< List of NewGRF files used
|
||||
Date start_date; ///< When the game started
|
||||
Date game_date; ///< Current date
|
||||
uint16 map_width; ///< Map width
|
||||
uint16 map_height; ///< Map height
|
||||
char server_name[NETWORK_NAME_LENGTH]; ///< Server name
|
||||
char server_revision[NETWORK_REVISION_LENGTH]; ///< The version number the server is using (e.g.: 'r304' or 0.5.0)
|
||||
bool dedicated; ///< Is this a dedicated server?
|
||||
bool use_password; ///< Is this server passworded?
|
||||
byte clients_on; ///< Current count of clients on server
|
||||
byte clients_max; ///< Max clients allowed on server
|
||||
byte companies_on; ///< How many started companies do we have
|
||||
byte companies_max; ///< Max companies allowed on server
|
||||
byte spectators_on; ///< How many spectators do we have?
|
||||
byte spectators_max; ///< Max spectators allowed on server
|
||||
byte landscape; ///< The used landscape
|
||||
GRFConfig *grfconfig; ///< List of NewGRF files used
|
||||
Date start_date; ///< When the game started
|
||||
Date game_date; ///< Current date
|
||||
uint16 map_width; ///< Map width
|
||||
uint16 map_height; ///< Map height
|
||||
std::string server_name; ///< Server name
|
||||
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 use_password; ///< Is this server passworded?
|
||||
byte clients_on; ///< Current count of clients on server
|
||||
byte clients_max; ///< Max clients allowed on server
|
||||
byte companies_on; ///< How many started companies do we have
|
||||
byte companies_max; ///< Max companies allowed on server
|
||||
byte spectators_on; ///< How many spectators do we have?
|
||||
byte spectators_max; ///< Max spectators allowed on server
|
||||
byte landscape; ///< The used landscape
|
||||
};
|
||||
|
||||
/**
|
||||
|
|
|
@ -656,9 +656,9 @@ NetworkGameList *NetworkAddServer(const std::string &connection_string)
|
|||
|
||||
/* Ensure the item already exists in the list */
|
||||
NetworkGameList *item = NetworkGameListAddItem(connection_string);
|
||||
if (StrEmpty(item->info.server_name)) {
|
||||
if (item->info.server_name.empty()) {
|
||||
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;
|
||||
|
||||
NetworkRebuildHostList();
|
||||
|
@ -1163,7 +1163,7 @@ void NetworkStartUp()
|
|||
/* Generate an server id when there is none yet */
|
||||
if (StrEmpty(_settings_client.network.network_id)) NetworkGenerateServerId();
|
||||
|
||||
memset(&_network_game_info, 0, sizeof(_network_game_info));
|
||||
_network_game_info = {};
|
||||
|
||||
NetworkInitialize();
|
||||
DEBUG(net, 3, "[core] network online, multiplayer available");
|
||||
|
|
|
@ -47,10 +47,10 @@ static void NetworkGameListHandleDelayedInsert()
|
|||
NetworkGameList *item = NetworkGameListAddItem(ins_item->connection_string);
|
||||
|
||||
if (item != nullptr) {
|
||||
if (StrEmpty(item->info.server_name)) {
|
||||
if (item->info.server_name.empty()) {
|
||||
ClearGRFConfigList(&item->info.grfconfig);
|
||||
memset(&item->info, 0, sizeof(item->info));
|
||||
strecpy(item->info.server_name, ins_item->info.server_name, lastof(item->info.server_name));
|
||||
item->info = {};
|
||||
item->info.server_name = ins_item->info.server_name;
|
||||
item->online = false;
|
||||
}
|
||||
item->manually |= ins_item->manually;
|
||||
|
|
|
@ -271,7 +271,7 @@ protected:
|
|||
/** Sort servers by name. */
|
||||
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);
|
||||
|
||||
return r < 0;
|
||||
|
@ -324,7 +324,7 @@ protected:
|
|||
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) */
|
||||
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 */
|
||||
if (r == 0) r = b->info.version_compatible - a->info.version_compatible;
|
||||
|
@ -361,7 +361,7 @@ protected:
|
|||
assert((*item) != nullptr);
|
||||
|
||||
sf.ResetState();
|
||||
sf.AddLine((*item)->info.server_name);
|
||||
sf.AddLine((*item)->info.server_name.c_str());
|
||||
return sf.GetState();
|
||||
}
|
||||
|
||||
|
|
|
@ -91,7 +91,7 @@ static void DoNetworkUDPQueryServer(const std::string &connection_string, bool n
|
|||
{
|
||||
/* Clear item in gamelist */
|
||||
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);
|
||||
|
||||
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) {
|
||||
strecat(item->info.server_name, " (IPv6)", lastof(item->info.server_name));
|
||||
item->info.server_name.append(" (IPv6)");
|
||||
}
|
||||
|
||||
UpdateNetworkGameWindow();
|
||||
|
|
Loading…
Reference in New Issue