about summary refs log tree commit diff
path: root/src/engine/client/srvbrowse.c
diff options
context:
space:
mode:
authorMagnus Auvinen <magnus.auvinen@gmail.com>2007-11-08 09:11:32 +0000
committerMagnus Auvinen <magnus.auvinen@gmail.com>2007-11-08 09:11:32 +0000
commit711aa0db763e31bd7916ea31f5f3f934e4000ab8 (patch)
treee1686806f10c77b8fa3e8e0225d12e726de4e136 /src/engine/client/srvbrowse.c
parent4fcab5c8f1b2d4f8405d4ef86b69d2c916184929 (diff)
downloadzcatch-711aa0db763e31bd7916ea31f5f3f934e4000ab8.tar.gz
zcatch-711aa0db763e31bd7916ea31f5f3f934e4000ab8.zip
update, gui stuff, some engine stuff
Diffstat (limited to 'src/engine/client/srvbrowse.c')
-rw-r--r--src/engine/client/srvbrowse.c20
1 files changed, 19 insertions, 1 deletions
diff --git a/src/engine/client/srvbrowse.c b/src/engine/client/srvbrowse.c
index 471fdfd6..b3ff635a 100644
--- a/src/engine/client/srvbrowse.c
+++ b/src/engine/client/srvbrowse.c
@@ -94,6 +94,20 @@ static int client_serverbrowse_sort_compare_ping(const void *ai, const void *bi)
 	return a->info.latency > b->info.latency;
 }
 
+static int client_serverbrowse_sort_compare_gametype(const void *ai, const void *bi)
+{
+	SERVERENTRY *a = serverlist[*(const int*)ai];
+	SERVERENTRY *b = serverlist[*(const int*)bi];
+	return a->info.game_type > b->info.game_type;
+}
+
+static int client_serverbrowse_sort_compare_progression(const void *ai, const void *bi)
+{
+	SERVERENTRY *a = serverlist[*(const int*)ai];
+	SERVERENTRY *b = serverlist[*(const int*)bi];
+	return a->info.progression > b->info.progression;
+}
+
 static int client_serverbrowse_sort_compare_numplayers(const void *ai, const void *bi)
 {
 	SERVERENTRY *a = serverlist[*(const int*)ai];
@@ -139,7 +153,7 @@ static void client_serverbrowse_filter()
 
 static int client_serverbrowse_sorthash()
 {
-	int i = config.b_sort&3;
+	int i = config.b_sort&0xf;
 	i |= config.b_filter_empty<<4;
 	i |= config.b_filter_full<<5;
 	i |= config.b_filter_pw<<6;
@@ -162,6 +176,10 @@ static void client_serverbrowse_sort()
 		qsort(sorted_serverlist, num_sorted_servers, sizeof(int), client_serverbrowse_sort_compare_map);
 	else if(config.b_sort == BROWSESORT_NUMPLAYERS)
 		qsort(sorted_serverlist, num_sorted_servers, sizeof(int), client_serverbrowse_sort_compare_numplayers);
+	else if(config.b_sort == BROWSESORT_GAMETYPE)
+		qsort(sorted_serverlist, num_sorted_servers, sizeof(int), client_serverbrowse_sort_compare_gametype);
+	else if(config.b_sort == BROWSESORT_PROGRESSION)
+		qsort(sorted_serverlist, num_sorted_servers, sizeof(int), client_serverbrowse_sort_compare_progression);
 	
 	/* set indexes */
 	for(i = 0; i < num_sorted_servers; i++)