about summary refs log tree commit diff
diff options
context:
space:
mode:
authorMagnus Auvinen <magnus.auvinen@gmail.com>2007-09-30 11:55:42 +0000
committerMagnus Auvinen <magnus.auvinen@gmail.com>2007-09-30 11:55:42 +0000
commit60e0dc07d8653e55b6736606ff72b0d89656d4ab (patch)
treebbbb05d4a80c5f56bd6350e16de826cd06f0d570
parentdb999a250293ab72c2dcd5f103b353758163c83d (diff)
downloadzcatch-60e0dc07d8653e55b6736606ff72b0d89656d4ab.tar.gz
zcatch-60e0dc07d8653e55b6736606ff72b0d89656d4ab.zip
added filter by string
-rw-r--r--src/engine/client/client.c10
-rw-r--r--src/engine/config_variables.h2
-rw-r--r--src/game/client/menu.cpp1
3 files changed, 12 insertions, 1 deletions
diff --git a/src/engine/client/client.c b/src/engine/client/client.c
index 3269ab23..847dd8ea 100644
--- a/src/engine/client/client.c
+++ b/src/engine/client/client.c
@@ -377,6 +377,7 @@ static int num_servers = 0;
 static int num_server_capacity = 0;
 
 static int sorthash = 0;
+static char filterstring[64] = {0};
 
 static int serverlist_lan = 1;
 
@@ -461,6 +462,11 @@ static void client_serverbrowse_filter()
 			filtered = 1;
 		else if(config.b_filter_pw && serverlist[i]->info.flags&1)
 			filtered = 1;
+		else if(config.b_filter_string[0] != 0)
+		{
+			if(strstr(serverlist[i]->info.name, config.b_filter_string) == 0)
+				filtered = 1;
+		}
 			
 		if(filtered == 0)
 			sorted_serverlist[num_sorted_servers++] = i;
@@ -497,6 +503,7 @@ static void client_serverbrowse_sort()
 	for(i = 0; i < num_sorted_servers; i++)
 		serverlist[sorted_serverlist[i]]->info.sorted_index = i;
 	
+	strncpy(filterstring, config.b_filter_string, sizeof(filterstring)-1); 
 	sorthash = client_serverbrowse_sorthash();
 }
 
@@ -707,7 +714,8 @@ static void client_serverbrowse_update()
 	}
 	
 	/* check if we need to resort */
-	if(sorthash != client_serverbrowse_sorthash())
+	/* TODO: remove the strcmp */
+	if(sorthash != client_serverbrowse_sorthash() || strcmp(filterstring, config.b_filter_string) != 0)
 		client_serverbrowse_sort();
 }
 
diff --git a/src/engine/config_variables.h b/src/engine/config_variables.h
index 4ce022f3..5b855bc3 100644
--- a/src/engine/config_variables.h
+++ b/src/engine/config_variables.h
@@ -12,6 +12,8 @@ MACRO_CONFIG_INT(debug, 0, 0, 1)
 MACRO_CONFIG_INT(stress, 0, 0, 0)
 MACRO_CONFIG_STR(cl_stress_server, 32, "localhost")
 
+MACRO_CONFIG_STR(b_filter_string, 64, "")
+
 MACRO_CONFIG_INT(b_filter_full, 0, 1, 0)
 MACRO_CONFIG_INT(b_filter_empty, 0, 1, 0)
 MACRO_CONFIG_INT(b_filter_pw, 0, 1, 0)
diff --git a/src/game/client/menu.cpp b/src/game/client/menu.cpp
index d4fad920..e781fcdf 100644
--- a/src/game/client/menu.cpp
+++ b/src/game/client/menu.cpp
@@ -766,6 +766,7 @@ static int main_render()
 		ui_do_label(20, 400, buf, 28);
 	}
 
+	ui_do_edit_box(&config.b_filter_string, 20+150, 600-80, 200, 36, config.b_filter_string, sizeof(config.b_filter_string));
 	config.b_filter_empty = ui_do_check_box(&config.b_filter_empty, 20, 600-80, 32, 32, config.b_filter_empty);
 	config.b_filter_full = ui_do_check_box(&config.b_filter_full, 20+50, 600-80, 32, 32, config.b_filter_full);
 	config.b_filter_pw = ui_do_check_box(&config.b_filter_pw, 20+100, 600-80, 32, 32, config.b_filter_pw);