diff options
author | Patric Stout <truebrain@openttd.org> | 2021-08-23 20:16:22 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-08-23 20:16:22 +0200 |
commit | dc5b7b996c3f284d0e0f9f7685a8714f9d944ab6 (patch) | |
tree | 7ad640a29b092a11a85e31824c6f8e07481b5012 /src/network/network_query.cpp | |
parent | e31b5d387021c6d39b257840137c1f5da184d2cf (diff) | |
download | openttd-dc5b7b996c3f284d0e0f9f7685a8714f9d944ab6.tar.xz |
Fix: [Network] show query errors in the server listing instead of error popup (#9506)
When you are query several servers at once, it is rather unclear
for which server you got a popup. Instead, show any errors on the
server itself.
This is only true for the query-part. Joining a server still gives
an error popup to tell you about any issue.
Diffstat (limited to 'src/network/network_query.cpp')
-rw-r--r-- | src/network/network_query.cpp | 40 |
1 files changed, 25 insertions, 15 deletions
diff --git a/src/network/network_query.cpp b/src/network/network_query.cpp index f46a35df1..033c32e7c 100644 --- a/src/network/network_query.cpp +++ b/src/network/network_query.cpp @@ -77,16 +77,22 @@ NetworkRecvStatus QueryNetworkGameSocketHandler::SendGameInfo() NetworkRecvStatus QueryNetworkGameSocketHandler::Receive_SERVER_FULL(Packet *p) { - /* We try to join a server which is full */ - ShowErrorMessage(STR_NETWORK_ERROR_SERVER_FULL, INVALID_STRING_ID, WL_CRITICAL); - return NETWORK_RECV_STATUS_SERVER_FULL; + NetworkGameList *item = NetworkGameListAddItem(this->connection_string); + item->status = NGLS_FULL; + + UpdateNetworkGameWindow(); + + return NETWORK_RECV_STATUS_CLOSE_QUERY; } NetworkRecvStatus QueryNetworkGameSocketHandler::Receive_SERVER_BANNED(Packet *p) { - /* We try to join a server where we are banned */ - ShowErrorMessage(STR_NETWORK_ERROR_SERVER_BANNED, INVALID_STRING_ID, WL_CRITICAL); - return NETWORK_RECV_STATUS_SERVER_BANNED; + NetworkGameList *item = NetworkGameListAddItem(this->connection_string); + item->status = NGLS_BANNED; + + UpdateNetworkGameWindow(); + + return NETWORK_RECV_STATUS_CLOSE_QUERY; } NetworkRecvStatus QueryNetworkGameSocketHandler::Receive_SERVER_GAME_INFO(Packet *p) @@ -100,7 +106,7 @@ NetworkRecvStatus QueryNetworkGameSocketHandler::Receive_SERVER_GAME_INFO(Packet /* Check for compatability with the client. */ CheckGameCompatibility(item->info); /* Ensure we consider the server online. */ - item->online = true; + item->status = NGLS_ONLINE; UpdateNetworkGameWindow(); @@ -111,17 +117,21 @@ NetworkRecvStatus QueryNetworkGameSocketHandler::Receive_SERVER_ERROR(Packet *p) { NetworkErrorCode error = (NetworkErrorCode)p->Recv_uint8(); - /* If we query a server that is 1.11.1 or older, we get an - * NETWORK_ERROR_NOT_EXPECTED on requesting the game info. Show a special - * error popup in that case. - */ + NetworkGameList *item = NetworkGameListAddItem(this->connection_string); + if (error == NETWORK_ERROR_NOT_EXPECTED) { - ShowErrorMessage(STR_NETWORK_ERROR_SERVER_TOO_OLD, INVALID_STRING_ID, WL_CRITICAL); - return NETWORK_RECV_STATUS_CLOSE_QUERY; + /* If we query a server that is 1.11.1 or older, we get an + * NETWORK_ERROR_NOT_EXPECTED on requesting the game info. Show to the + * user this server is too old to query. + */ + item->status = NGLS_TOO_OLD; + } else { + item->status = NGLS_OFFLINE; } - ShowErrorMessage(STR_NETWORK_ERROR_LOSTCONNECTION, INVALID_STRING_ID, WL_CRITICAL); - return NETWORK_RECV_STATUS_SERVER_ERROR; + UpdateNetworkGameWindow(); + + return NETWORK_RECV_STATUS_CLOSE_QUERY; } /** |