diff options
| author | Magnus Auvinen <magnus.auvinen@gmail.com> | 2007-09-30 11:55:42 +0000 |
|---|---|---|
| committer | Magnus Auvinen <magnus.auvinen@gmail.com> | 2007-09-30 11:55:42 +0000 |
| commit | 60e0dc07d8653e55b6736606ff72b0d89656d4ab (patch) | |
| tree | bbbb05d4a80c5f56bd6350e16de826cd06f0d570 | |
| parent | db999a250293ab72c2dcd5f103b353758163c83d (diff) | |
| download | zcatch-60e0dc07d8653e55b6736606ff72b0d89656d4ab.tar.gz zcatch-60e0dc07d8653e55b6736606ff72b0d89656d4ab.zip | |
added filter by string
| -rw-r--r-- | src/engine/client/client.c | 10 | ||||
| -rw-r--r-- | src/engine/config_variables.h | 2 | ||||
| -rw-r--r-- | src/game/client/menu.cpp | 1 |
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); |