summaryrefslogtreecommitdiff
path: root/src/network
diff options
context:
space:
mode:
authorrubidium <rubidium@openttd.org>2007-01-14 16:44:52 +0000
committerrubidium <rubidium@openttd.org>2007-01-14 16:44:52 +0000
commit17208a97a9c1fac7cbe4f2e00237f14ec563c0f2 (patch)
tree6a5292ffb9e9f20c8288b5f4eb6ada1c7adf9414 /src/network
parent6af105993c27504f80160b484106f6b08a7980b2 (diff)
downloadopenttd-17208a97a9c1fac7cbe4f2e00237f14ec563c0f2.tar.xz
(svn r8118) -Codechange: change the ordering of the network list a little:
- servers we have information about go above servers we do not have information about. - servers that are version compatible go above servers we are not version compatible with. - servers we have all required NewGRFs for go above servers we miss NewGRFs for. - unpassworded servers go above passworded servers.
Diffstat (limited to 'src/network')
-rw-r--r--src/network/network_gui.cpp11
1 files changed, 9 insertions, 2 deletions
diff --git a/src/network/network_gui.cpp b/src/network/network_gui.cpp
index 56fad89ee..0ad804af3 100644
--- a/src/network/network_gui.cpp
+++ b/src/network/network_gui.cpp
@@ -142,10 +142,17 @@ static int CDECL NGameAllowedSorter(const void *a, const void *b)
{
const NetworkGameList *cmp1 = *(const NetworkGameList**)a;
const NetworkGameList *cmp2 = *(const NetworkGameList**)b;
- /* Reverse default as we are interested in compatible clients first */
- int r = cmp2->info.compatible - cmp1->info.compatible;
+ /* The servers we do not know anything about (the ones that did not reply) should be at the bottom) */
+ int r = StrEmpty(cmp1->info.server_revision) - StrEmpty(cmp2->info.server_revision);
+
+ /* Reverse default as we are interested in version-compatible clients first */
+ if (r == 0) r = cmp2->info.version_compatible - cmp1->info.version_compatible;
+ /* The version-compatible ones are then sorted with NewGRF compatible first, incompatible last */
+ if (r == 0) r = cmp2->info.compatible - cmp1->info.compatible;
+ /* Passworded servers should be below unpassworded servers */
if (r == 0) r = cmp1->info.use_password - cmp2->info.use_password;
+ /* Finally sort on the name of the server */
if (r == 0) r = strcasecmp(cmp1->info.server_name, cmp2->info.server_name);
return _internal_sort_order ? -r : r;