From 684e1788ed1056234a74199f07f5d962ef20c521 Mon Sep 17 00:00:00 2001 From: heinrich5991 Date: Tue, 19 Oct 2010 17:18:32 +0200 Subject: [PATCH] added strict gametype filtering --- src/engine/client/srvbrowse.cpp | 15 ++++++++++++--- src/engine/shared/config_variables.h | 1 + src/game/client/components/menus_browser.cpp | 5 +++++ 3 files changed, 18 insertions(+), 3 deletions(-) diff --git a/src/engine/client/srvbrowse.cpp b/src/engine/client/srvbrowse.cpp index aebd585d2..7f4c3ca34 100644 --- a/src/engine/client/srvbrowse.cpp +++ b/src/engine/client/srvbrowse.cpp @@ -213,8 +213,16 @@ void CServerBrowser::Filter() if(!Filtered && g_Config.m_BrFilterGametype[0] != 0) { // match against game type - if(!str_find_nocase(m_ppServerlist[i]->m_Info.m_aGameType, g_Config.m_BrFilterGametype)) - Filtered = 1; + if (!g_Config.m_BrFilterGametypeStrict) + { + if(!str_find_nocase(m_ppServerlist[i]->m_Info.m_aGameType, g_Config.m_BrFilterGametype)) + Filtered = 1; + } + else + { + if (str_comp_nocase(m_ppServerlist[i]->m_Info.m_aGameType, g_Config.m_BrFilterGametype)) + Filtered = 1; + } } } @@ -225,7 +233,8 @@ void CServerBrowser::Filter() int CServerBrowser::SortHash() const { - int i = g_Config.m_BrSort&0xf; + int i = g_Config.m_BrSort&0x7; + i |= g_Config.m_BrFilterGametypeStrict<<3; i |= g_Config.m_BrFilterEmpty<<4; i |= g_Config.m_BrFilterFull<<5; i |= g_Config.m_BrFilterPw<<6; diff --git a/src/engine/shared/config_variables.h b/src/engine/shared/config_variables.h index 1d0091ab9..327ed52b0 100644 --- a/src/engine/shared/config_variables.h +++ b/src/engine/shared/config_variables.h @@ -27,6 +27,7 @@ MACRO_CONFIG_INT(BrFilterFull, br_filter_full, 0, 0, 1, CFGFLAG_SAVE|CFGFLAG_CLI MACRO_CONFIG_INT(BrFilterEmpty, br_filter_empty, 0, 0, 1, CFGFLAG_SAVE|CFGFLAG_CLIENT, "Filter out empty server in browser", -1) MACRO_CONFIG_INT(BrFilterPw, br_filter_pw, 0, 0, 1, CFGFLAG_SAVE|CFGFLAG_CLIENT, "Filter out password protected servers in browser", -1) MACRO_CONFIG_INT(BrFilterPing, br_filter_ping, 999, 0, 999, CFGFLAG_SAVE|CFGFLAG_CLIENT, "Ping to filter by in the server browser", -1) +MACRO_CONFIG_INT(BrFilterGametypeStrict, br_filter_gametype_strict, 0, 0, 1, CFGFLAG_SAVE|CFGFLAG_CLIENT, "Filter gametype strict", -1) MACRO_CONFIG_STR(BrFilterGametype, br_filter_gametype, 128, "", CFGFLAG_SAVE|CFGFLAG_CLIENT, "Game types to filter", -1) MACRO_CONFIG_INT(BrFilterPure, br_filter_pure, 1, 0, 1, CFGFLAG_SAVE|CFGFLAG_CLIENT, "Filter out non-standard servers in browser", -1) MACRO_CONFIG_INT(BrFilterPureMap, br_filter_pure_map, 1, 0, 1, CFGFLAG_SAVE|CFGFLAG_CLIENT, "Filter out non-standard maps in browser", -1) diff --git a/src/game/client/components/menus_browser.cpp b/src/game/client/components/menus_browser.cpp index e2ccfc5b4..2954fbbe8 100644 --- a/src/game/client/components/menus_browser.cpp +++ b/src/game/client/components/menus_browser.cpp @@ -436,6 +436,10 @@ void CMenus::RenderServerbrowserFilters(CUIRect View) if (DoButton_CheckBox((char *)&g_Config.m_BrFilterPureMap, Localize("Standard map"), g_Config.m_BrFilterPureMap, &Button)) g_Config.m_BrFilterPureMap ^= 1; + View.HSplitTop(20.0f, &Button, &View); + if (DoButton_CheckBox((char *)&g_Config.m_BrFilterGametypeStrict, Localize("Filter gametype strict"), g_Config.m_BrFilterGametypeStrict, &Button)) + g_Config.m_BrFilterGametypeStrict ^= 1; + View.HSplitTop(5.0f, 0, &View); View.HSplitTop(19.0f, &Button, &View); @@ -467,6 +471,7 @@ void CMenus::RenderServerbrowserFilters(CUIRect View) g_Config.m_BrFilterFull = 0; g_Config.m_BrFilterEmpty = 0; g_Config.m_BrFilterPw = 0; + g_Config.m_BrFilterGametypeStrict = 0; g_Config.m_BrFilterPing = 999; g_Config.m_BrFilterGametype[0] = 0; g_Config.m_BrFilterCompatversion = 1;