From 17208a97a9c1fac7cbe4f2e00237f14ec563c0f2 Mon Sep 17 00:00:00 2001 From: rubidium Date: Sun, 14 Jan 2007 16:44:52 +0000 Subject: (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. --- src/network/network_gui.cpp | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) (limited to 'src/network') 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; -- cgit v1.2.3-54-g00ecf