changeset 5658:407aa599bd6f draft

(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.
author rubidium <rubidium@openttd.org>
date Sun, 14 Jan 2007 16:44:52 +0000
parents b404ae132665
children 78a7505fd513
files src/network/network_gui.cpp
diffstat 1 files changed, 9 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- a/src/network/network_gui.cpp
+++ b/src/network/network_gui.cpp
@@ -142,10 +142,17 @@
 {
 	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;