From 672fd26b9332a7384ead0c3badceda2bdaf951dd Mon Sep 17 00:00:00 2001 From: Alexander Akulich Date: Sun, 7 Jul 2024 15:12:19 +0300 Subject: [PATCH] Add an option to disable 'Communities' feature --- src/engine/client/serverbrowser.cpp | 3 +++ src/engine/shared/infc_config_variables.h | 1 + src/game/client/components/menus_browser.cpp | 14 ++++++++++++-- 3 files changed, 16 insertions(+), 2 deletions(-) diff --git a/src/engine/client/serverbrowser.cpp b/src/engine/client/serverbrowser.cpp index d4d787915f0..0e42267ec4f 100644 --- a/src/engine/client/serverbrowser.cpp +++ b/src/engine/client/serverbrowser.cpp @@ -1710,6 +1710,9 @@ const std::vector &CServerBrowser::Communities() const const CCommunity *CServerBrowser::Community(const char *pCommunityId) const { + if(g_Config.m_ClEnableCommunities == 0) + return nullptr; + const auto Community = std::find_if(Communities().begin(), Communities().end(), [pCommunityId](const auto &Elem) { return str_comp(Elem.Id(), pCommunityId) == 0; }); diff --git a/src/engine/shared/infc_config_variables.h b/src/engine/shared/infc_config_variables.h index 285346e65f5..cf4051da736 100644 --- a/src/engine/shared/infc_config_variables.h +++ b/src/engine/shared/infc_config_variables.h @@ -10,6 +10,7 @@ #endif +MACRO_CONFIG_INT(ClEnableCommunities, cl_enable_communities, 1, 1, 1, CFGFLAG_SAVE | CFGFLAG_CLIENT, "Enable the Communities browser feature") MACRO_CONFIG_STR(ClAssetInfclass, cl_asset_infclass, 50, "default", CFGFLAG_SAVE | CFGFLAG_CLIENT, "The asset for infclass") MACRO_CONFIG_STR(ClInfcUpdatesUrl, cl_infc_updates_url, 256, "https://infclass.github.io/files", CFGFLAG_SAVE | CFGFLAG_CLIENT, "The client updates URL") MACRO_CONFIG_INT(ClInfStatusSize, infc_status_size, 16, 4, 64, CFGFLAG_SAVE | CFGFLAG_CLIENT, "The size of infclass status icons") diff --git a/src/game/client/components/menus_browser.cpp b/src/game/client/components/menus_browser.cpp index 3619749d5e1..8ee9c010158 100644 --- a/src/game/client/components/menus_browser.cpp +++ b/src/game/client/components/menus_browser.cpp @@ -106,6 +106,7 @@ void CMenus::RenderServerbrowserServerList(CUIRect View, bool &WasListboxItemAct int m_Direction; float m_Width; CUIRect m_Rect; + bool m_Visible{true}; }; enum @@ -154,6 +155,9 @@ void CMenus::RenderServerbrowserServerList(CUIRect View, bool &WasListboxItemAct {COL_PING, IServerBrowser::SORT_PING, Localizable("Ping"), 1, 40.0f, {0}}, }; + s_aCols[COL_FLAG_OFFICIAL + 1].m_Visible = g_Config.m_ClEnableCommunities == 0; + s_aCols[COL_COMMUNITY + 1].m_Visible = g_Config.m_ClEnableCommunities; + const int NumCols = std::size(s_aCols); // do layout @@ -161,7 +165,10 @@ void CMenus::RenderServerbrowserServerList(CUIRect View, bool &WasListboxItemAct { if(s_aCols[i].m_Direction == -1) { - Headers.VSplitLeft(s_aCols[i].m_Width, &s_aCols[i].m_Rect, &Headers); + if(s_aCols[i].m_Visible) + { + Headers.VSplitLeft(s_aCols[i].m_Width, &s_aCols[i].m_Rect, &Headers); + } if(i + 1 < NumCols) { @@ -310,6 +317,9 @@ void CMenus::RenderServerbrowserServerList(CUIRect View, bool &WasListboxItemAct char aTemp[64]; for(const auto &Col : s_aCols) { + if(!Col.m_Visible) + continue; + CUIRect Button; Button.x = Col.m_Rect.x; Button.y = ListItem.m_Rect.y; @@ -1800,7 +1810,7 @@ void CMenus::RenderServerbrowser(CUIRect MainView) MainView.VSplitRight(205.0f, &ServerList, &ToolBox); ServerList.VSplitRight(5.0f, &ServerList, nullptr); - if((g_Config.m_UiPage == PAGE_INTERNET || g_Config.m_UiPage == PAGE_FAVORITES) && !ServerBrowser()->Communities().empty()) + if(g_Config.m_ClEnableCommunities && (g_Config.m_UiPage == PAGE_INTERNET || g_Config.m_UiPage == PAGE_FAVORITES) && !ServerBrowser()->Communities().empty()) { CUIRect CommunityFilter; ToolBox.HSplitTop(19.0f + 4.0f * 17.0f + CScrollRegion::HEIGHT_MAGIC_FIX, &CommunityFilter, &ToolBox);