about summary refs log tree commit diff
diff options
context:
space:
mode:
authorMagnus Auvinen <magnus.auvinen@gmail.com>2007-12-16 23:09:36 +0000
committerMagnus Auvinen <magnus.auvinen@gmail.com>2007-12-16 23:09:36 +0000
commitc3320e9d07ff821cde4557747d3740edd62a29a2 (patch)
tree7a4bc5f3aee5503f202828481eb9235c7fad0cc0
parentfc554e113b12da5cdcea021c85231adba5a749b1 (diff)
downloadzcatch-c3320e9d07ff821cde4557747d3740edd62a29a2.tar.gz
zcatch-c3320e9d07ff821cde4557747d3740edd62a29a2.zip
fixed reverse sorting
-rw-r--r--src/engine/client/ec_srvbrowse.c12
-rw-r--r--src/engine/e_config_variables.h1
-rw-r--r--src/game/client/gc_menu.cpp6
3 files changed, 19 insertions, 0 deletions
diff --git a/src/engine/client/ec_srvbrowse.c b/src/engine/client/ec_srvbrowse.c
index 9fc5ec02..979b6450 100644
--- a/src/engine/client/ec_srvbrowse.c
+++ b/src/engine/client/ec_srvbrowse.c
@@ -158,6 +158,7 @@ static int client_serverbrowse_sorthash()
 	i |= config.b_filter_empty<<4;
 	i |= config.b_filter_full<<5;
 	i |= config.b_filter_pw<<6;
+	i |= config.b_sort_order<<7;
 	return i;
 }
 
@@ -182,6 +183,17 @@ static void client_serverbrowse_sort()
 	else if(config.b_sort == BROWSESORT_PROGRESSION)
 		qsort(sorted_serverlist, num_sorted_servers, sizeof(int), client_serverbrowse_sort_compare_progression);
 	
+	/* invert the list if requested */
+	if(config.b_sort_order)
+	{
+		for(i = 0; i < num_sorted_servers/2; i++)
+		{
+			int temp = sorted_serverlist[i];
+			sorted_serverlist[i] = sorted_serverlist[num_sorted_servers-i-1];
+			sorted_serverlist[num_sorted_servers-i-1] = temp;
+		}
+	}
+	
 	/* set indexes */
 	for(i = 0; i < num_sorted_servers; i++)
 		serverlist[sorted_serverlist[i]]->info.sorted_index = i;
diff --git a/src/engine/e_config_variables.h b/src/engine/e_config_variables.h
index 1aa6b799..3aa5e8fb 100644
--- a/src/engine/e_config_variables.h
+++ b/src/engine/e_config_variables.h
@@ -17,6 +17,7 @@ MACRO_CONFIG_INT(b_filter_full, 0, 0, 1)
 MACRO_CONFIG_INT(b_filter_empty, 0, 0, 1)
 MACRO_CONFIG_INT(b_filter_pw, 0, 0, 1)
 MACRO_CONFIG_INT(b_sort, 0, 0, 256)
+MACRO_CONFIG_INT(b_sort_order, 0, 0, 1)
 MACRO_CONFIG_INT(b_max_requests, 10, 0, 1000)
 
 MACRO_CONFIG_INT(snd_rate, 48000, 0, 0)
diff --git a/src/game/client/gc_menu.cpp b/src/game/client/gc_menu.cpp
index bb5aacc2..8c525a7b 100644
--- a/src/game/client/gc_menu.cpp
+++ b/src/game/client/gc_menu.cpp
@@ -947,7 +947,13 @@ static void menu2_render_serverbrowser(RECT main_view)
 		if(ui2_do_button(cols[i].caption, cols[i].caption, config.b_sort == cols[i].sort, &cols[i].rect, ui2_draw_grid_header, 0))
 		{
 			if(cols[i].sort != -1)
+			{
+				if(config.b_sort == cols[i].sort)
+					config.b_sort_order ^= 1;
+				else
+					config.b_sort_order = 0;
 				config.b_sort = cols[i].sort;
+			}
 		}
 	}