From c3320e9d07ff821cde4557747d3740edd62a29a2 Mon Sep 17 00:00:00 2001 From: Magnus Auvinen Date: Sun, 16 Dec 2007 23:09:36 +0000 Subject: fixed reverse sorting --- src/engine/client/ec_srvbrowse.c | 12 ++++++++++++ src/engine/e_config_variables.h | 1 + src/game/client/gc_menu.cpp | 6 ++++++ 3 files changed, 19 insertions(+) (limited to 'src') 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; + } } } -- cgit 1.4.1