mirror of
https://github.com/ddnet/ddnet.git
synced 2024-11-19 22:48:18 +00:00
Increase maximum number of favorite communities from 3 to 5
Simply hide the favorite community tabs in the offline server browser with screen resolutions where not enough width is available. The ingame server browser can always show at least 5 favorite community tabs with all screen resolutions.
This commit is contained in:
parent
3eda861c37
commit
2790530bbe
|
@ -456,7 +456,7 @@ void CServerBrowser::Filter()
|
|||
Filtered = CommunitiesFilter().Filtered(Info.m_aCommunityId);
|
||||
}
|
||||
if(m_ServerlistType == IServerBrowser::TYPE_INTERNET || m_ServerlistType == IServerBrowser::TYPE_FAVORITES ||
|
||||
(m_ServerlistType >= IServerBrowser::TYPE_FAVORITE_COMMUNITY_1 && m_ServerlistType <= IServerBrowser::TYPE_FAVORITE_COMMUNITY_3))
|
||||
(m_ServerlistType >= IServerBrowser::TYPE_FAVORITE_COMMUNITY_1 && m_ServerlistType <= IServerBrowser::TYPE_FAVORITE_COMMUNITY_5))
|
||||
{
|
||||
Filtered = Filtered || CountriesFilter().Filtered(Info.m_aCommunityCountry);
|
||||
Filtered = Filtered || TypesFilter().Filtered(Info.m_aCommunityType);
|
||||
|
@ -1079,7 +1079,7 @@ void CServerBrowser::UpdateFromHttp()
|
|||
return m_pFavorites->IsFavorite(pAddrs, NumAddrs) != TRISTATE::NONE;
|
||||
};
|
||||
}
|
||||
else if(m_ServerlistType >= IServerBrowser::TYPE_FAVORITE_COMMUNITY_1 && m_ServerlistType <= IServerBrowser::TYPE_FAVORITE_COMMUNITY_3)
|
||||
else if(m_ServerlistType >= IServerBrowser::TYPE_FAVORITE_COMMUNITY_1 && m_ServerlistType <= IServerBrowser::TYPE_FAVORITE_COMMUNITY_5)
|
||||
{
|
||||
const size_t CommunityIndex = m_ServerlistType - IServerBrowser::TYPE_FAVORITE_COMMUNITY_1;
|
||||
std::vector<const CCommunity *> vpFavoriteCommunities = FavoriteCommunities();
|
||||
|
@ -1704,7 +1704,7 @@ std::vector<const CCommunity *> CServerBrowser::CurrentCommunities() const
|
|||
{
|
||||
return SelectedCommunities();
|
||||
}
|
||||
else if(m_ServerlistType >= IServerBrowser::TYPE_FAVORITE_COMMUNITY_1 && m_ServerlistType <= IServerBrowser::TYPE_FAVORITE_COMMUNITY_3)
|
||||
else if(m_ServerlistType >= IServerBrowser::TYPE_FAVORITE_COMMUNITY_1 && m_ServerlistType <= IServerBrowser::TYPE_FAVORITE_COMMUNITY_5)
|
||||
{
|
||||
const size_t CommunityIndex = m_ServerlistType - IServerBrowser::TYPE_FAVORITE_COMMUNITY_1;
|
||||
std::vector<const CCommunity *> vpFavoriteCommunities = FavoriteCommunities();
|
||||
|
@ -1737,7 +1737,7 @@ void CFavoriteCommunityFilterList::Add(const char *pCommunityId)
|
|||
// Ensure maximum number of favorite communities, by removing the least-recently
|
||||
// added community from the beginning, when the maximum number of favorite
|
||||
// communities has been reached.
|
||||
constexpr size_t MaxFavoriteCommunities = 3;
|
||||
constexpr size_t MaxFavoriteCommunities = IServerBrowser::TYPE_FAVORITE_COMMUNITY_5 - IServerBrowser::TYPE_FAVORITE_COMMUNITY_1 + 1;
|
||||
if(m_vEntries.size() >= MaxFavoriteCommunities)
|
||||
{
|
||||
dbg_assert(m_vEntries.size() == MaxFavoriteCommunities, "Maximum number of communities can never be exceeded");
|
||||
|
|
|
@ -279,6 +279,8 @@ public:
|
|||
TYPE_FAVORITE_COMMUNITY_1,
|
||||
TYPE_FAVORITE_COMMUNITY_2,
|
||||
TYPE_FAVORITE_COMMUNITY_3,
|
||||
TYPE_FAVORITE_COMMUNITY_4,
|
||||
TYPE_FAVORITE_COMMUNITY_5,
|
||||
NUM_TYPES,
|
||||
};
|
||||
|
||||
|
|
|
@ -134,7 +134,7 @@ MACRO_CONFIG_INT(ClPlayerDefaultEyes, player_default_eyes, 0, 0, 5, CFGFLAG_CLIE
|
|||
MACRO_CONFIG_STR(ClSkinPrefix, cl_skin_prefix, 12, "", CFGFLAG_CLIENT | CFGFLAG_SAVE, "Replace the skins by skins with this prefix (e.g. kitty, santa)")
|
||||
MACRO_CONFIG_INT(ClFatSkins, cl_fat_skins, 0, 0, 1, CFGFLAG_CLIENT | CFGFLAG_SAVE, "Enable fat skins")
|
||||
|
||||
MACRO_CONFIG_INT(UiPage, ui_page, 6, 6, 11, CFGFLAG_CLIENT | CFGFLAG_SAVE, "Interface page")
|
||||
MACRO_CONFIG_INT(UiPage, ui_page, 6, 6, 13, CFGFLAG_CLIENT | CFGFLAG_SAVE, "Interface page")
|
||||
MACRO_CONFIG_INT(UiSettingsPage, ui_settings_page, 0, 0, 9, CFGFLAG_CLIENT | CFGFLAG_SAVE, "Interface settings page")
|
||||
MACRO_CONFIG_INT(UiToolboxPage, ui_toolbox_page, 0, 0, 2, CFGFLAG_CLIENT | CFGFLAG_SAVE, "Toolbox page")
|
||||
MACRO_CONFIG_STR(UiServerAddress, ui_server_address, 1024, "localhost:8303", CFGFLAG_CLIENT | CFGFLAG_SAVE | CFGFLAG_INSENSITIVE, "Interface server address")
|
||||
|
|
|
@ -61,13 +61,14 @@ public:
|
|||
POS_BROWSER_CUSTOM1,
|
||||
POS_BROWSER_CUSTOM2,
|
||||
POS_BROWSER_CUSTOM3,
|
||||
POS_BROWSER_CUSTOM4,
|
||||
POS_RESERVED0,
|
||||
POS_RESERVED1,
|
||||
POS_RESERVED2,
|
||||
|
||||
NUM_POS,
|
||||
|
||||
POS_BROWSER_CUSTOM_NUM = (POS_BROWSER_CUSTOM3 - POS_BROWSER_CUSTOM0) + 1,
|
||||
POS_BROWSER_CUSTOM_NUM = (POS_BROWSER_CUSTOM4 - POS_BROWSER_CUSTOM0) + 1,
|
||||
POS_SETTINGS_RESERVED_NUM = (POS_SETTINGS_RESERVED1 - POS_SETTINGS_RESERVED0) + 1,
|
||||
POS_RESERVED_NUM = (POS_RESERVED2 - POS_RESERVED0) + 1,
|
||||
};
|
||||
|
|
|
@ -548,165 +548,21 @@ void CMenus::RenderMenubar(CUIRect Box, IClient::EClientState ClientState)
|
|||
|
||||
int NewPage = -1;
|
||||
int ActivePage = -1;
|
||||
|
||||
if(ClientState == IClient::STATE_OFFLINE)
|
||||
{
|
||||
ActivePage = m_MenuPage;
|
||||
|
||||
Box.VSplitLeft(33.0f, &Button, &Box);
|
||||
|
||||
TextRender()->SetFontPreset(EFontPreset::ICON_FONT);
|
||||
TextRender()->SetRenderFlags(ETextRenderFlags::TEXT_RENDER_FLAG_ONLY_ADVANCE_WIDTH | ETextRenderFlags::TEXT_RENDER_FLAG_NO_X_BEARING | ETextRenderFlags::TEXT_RENDER_FLAG_NO_Y_BEARING | ETextRenderFlags::TEXT_RENDER_FLAG_NO_PIXEL_ALIGMENT | ETextRenderFlags::TEXT_RENDER_FLAG_NO_OVERSIZE);
|
||||
|
||||
bool GotNewsOrUpdate = false;
|
||||
|
||||
#if defined(CONF_AUTOUPDATE)
|
||||
int State = Updater()->GetCurrentState();
|
||||
bool NeedUpdate = str_comp(Client()->LatestVersion(), "0");
|
||||
if(State == IUpdater::CLEAN && NeedUpdate)
|
||||
{
|
||||
GotNewsOrUpdate = true;
|
||||
}
|
||||
#endif
|
||||
|
||||
GotNewsOrUpdate |= (bool)g_Config.m_UiUnreadNews;
|
||||
|
||||
ColorRGBA HomeButtonColorAlert(0, 1, 0, 0.25f);
|
||||
ColorRGBA HomeButtonColorAlertHover(0, 1, 0, 0.5f);
|
||||
ColorRGBA *pHomeButtonColor = nullptr;
|
||||
ColorRGBA *pHomeButtonColorHover = nullptr;
|
||||
|
||||
const char *pHomeScreenButtonLabel = FONT_ICON_HOUSE;
|
||||
if(GotNewsOrUpdate)
|
||||
{
|
||||
pHomeScreenButtonLabel = FONT_ICON_NEWSPAPER;
|
||||
pHomeButtonColor = &HomeButtonColorAlert;
|
||||
pHomeButtonColorHover = &HomeButtonColorAlertHover;
|
||||
}
|
||||
|
||||
static CButtonContainer s_StartButton;
|
||||
if(DoButton_MenuTab(&s_StartButton, pHomeScreenButtonLabel, false, &Button, IGraphics::CORNER_T, &m_aAnimatorsSmallPage[SMALL_TAB_HOME], pHomeButtonColor, pHomeButtonColor, pHomeButtonColorHover, 10.0f))
|
||||
{
|
||||
m_ShowStart = true;
|
||||
}
|
||||
GameClient()->m_Tooltips.DoToolTip(&s_StartButton, &Button, Localize("Main menu"));
|
||||
|
||||
Box.VSplitLeft(10.0f, nullptr, &Box);
|
||||
Box.VSplitLeft(75.0f, &Button, &Box);
|
||||
static CButtonContainer s_InternetButton;
|
||||
if(DoButton_MenuTab(&s_InternetButton, FONT_ICON_EARTH_AMERICAS, ActivePage == PAGE_INTERNET, &Button, IGraphics::CORNER_T, &m_aAnimatorsBigPage[BIG_TAB_INTERNET]))
|
||||
{
|
||||
if(ServerBrowser()->GetCurrentType() != IServerBrowser::TYPE_INTERNET)
|
||||
{
|
||||
if(ServerBrowser()->GetCurrentType() == IServerBrowser::TYPE_LAN)
|
||||
Client()->RequestDDNetInfo();
|
||||
ServerBrowser()->Refresh(IServerBrowser::TYPE_INTERNET);
|
||||
}
|
||||
NewPage = PAGE_INTERNET;
|
||||
}
|
||||
GameClient()->m_Tooltips.DoToolTip(&s_InternetButton, &Button, Localize("Internet"));
|
||||
|
||||
Box.VSplitLeft(75.0f, &Button, &Box);
|
||||
static CButtonContainer s_LanButton;
|
||||
if(DoButton_MenuTab(&s_LanButton, FONT_ICON_NETWORK_WIRED, ActivePage == PAGE_LAN, &Button, IGraphics::CORNER_T, &m_aAnimatorsBigPage[BIG_TAB_LAN]))
|
||||
{
|
||||
if(ServerBrowser()->GetCurrentType() != IServerBrowser::TYPE_LAN)
|
||||
ServerBrowser()->Refresh(IServerBrowser::TYPE_LAN);
|
||||
NewPage = PAGE_LAN;
|
||||
}
|
||||
GameClient()->m_Tooltips.DoToolTip(&s_LanButton, &Button, Localize("LAN"));
|
||||
|
||||
Box.VSplitLeft(75.0f, &Button, &Box);
|
||||
static CButtonContainer s_FavoritesButton;
|
||||
if(DoButton_MenuTab(&s_FavoritesButton, FONT_ICON_STAR, ActivePage == PAGE_FAVORITES, &Button, IGraphics::CORNER_T, &m_aAnimatorsBigPage[BIG_TAB_FAVORITES]))
|
||||
{
|
||||
if(ServerBrowser()->GetCurrentType() != IServerBrowser::TYPE_FAVORITES)
|
||||
{
|
||||
if(ServerBrowser()->GetCurrentType() == IServerBrowser::TYPE_LAN)
|
||||
Client()->RequestDDNetInfo();
|
||||
ServerBrowser()->Refresh(IServerBrowser::TYPE_FAVORITES);
|
||||
}
|
||||
NewPage = PAGE_FAVORITES;
|
||||
}
|
||||
GameClient()->m_Tooltips.DoToolTip(&s_FavoritesButton, &Button, Localize("Favorites"));
|
||||
|
||||
size_t FavoriteCommunityIndex = 0;
|
||||
static CButtonContainer s_aFavoriteCommunityButtons[3];
|
||||
static_assert(std::size(s_aFavoriteCommunityButtons) == (size_t)PAGE_FAVORITE_COMMUNITY_3 - PAGE_FAVORITE_COMMUNITY_1 + 1);
|
||||
static_assert(std::size(s_aFavoriteCommunityButtons) == (size_t)BIT_TAB_FAVORITE_COMMUNITY_3 - BIT_TAB_FAVORITE_COMMUNITY_1 + 1);
|
||||
static_assert(std::size(s_aFavoriteCommunityButtons) == (size_t)IServerBrowser::TYPE_FAVORITE_COMMUNITY_3 - IServerBrowser::TYPE_FAVORITE_COMMUNITY_1 + 1);
|
||||
for(const CCommunity *pCommunity : ServerBrowser()->FavoriteCommunities())
|
||||
{
|
||||
Box.VSplitLeft(75.0f, &Button, &Box);
|
||||
const int Page = PAGE_FAVORITE_COMMUNITY_1 + FavoriteCommunityIndex;
|
||||
if(DoButton_MenuTab(&s_aFavoriteCommunityButtons[FavoriteCommunityIndex], FONT_ICON_ELLIPSIS, ActivePage == Page, &Button, IGraphics::CORNER_T, &m_aAnimatorsBigPage[BIT_TAB_FAVORITE_COMMUNITY_1 + FavoriteCommunityIndex], nullptr, nullptr, nullptr, 10.0f, FindCommunityIcon(pCommunity->Id())))
|
||||
{
|
||||
const int BrowserType = IServerBrowser::TYPE_FAVORITE_COMMUNITY_1 + FavoriteCommunityIndex;
|
||||
if(ServerBrowser()->GetCurrentType() != BrowserType)
|
||||
{
|
||||
if(ServerBrowser()->GetCurrentType() == IServerBrowser::TYPE_LAN)
|
||||
Client()->RequestDDNetInfo();
|
||||
ServerBrowser()->Refresh(BrowserType);
|
||||
}
|
||||
NewPage = Page;
|
||||
}
|
||||
GameClient()->m_Tooltips.DoToolTip(&s_aFavoriteCommunityButtons[FavoriteCommunityIndex], &Button, pCommunity->Name());
|
||||
|
||||
++FavoriteCommunityIndex;
|
||||
if(FavoriteCommunityIndex >= std::size(s_aFavoriteCommunityButtons))
|
||||
break;
|
||||
}
|
||||
|
||||
TextRender()->SetRenderFlags(0);
|
||||
TextRender()->SetFontPreset(EFontPreset::DEFAULT_FONT);
|
||||
}
|
||||
else if(ClientState == IClient::STATE_ONLINE)
|
||||
{
|
||||
ActivePage = m_GamePage;
|
||||
|
||||
// online menus
|
||||
Box.VSplitLeft(90.0f, &Button, &Box);
|
||||
static CButtonContainer s_GameButton;
|
||||
if(DoButton_MenuTab(&s_GameButton, Localize("Game"), ActivePage == PAGE_GAME, &Button, IGraphics::CORNER_TL))
|
||||
NewPage = PAGE_GAME;
|
||||
|
||||
Box.VSplitLeft(90.0f, &Button, &Box);
|
||||
static CButtonContainer s_PlayersButton;
|
||||
if(DoButton_MenuTab(&s_PlayersButton, Localize("Players"), ActivePage == PAGE_PLAYERS, &Button, IGraphics::CORNER_NONE))
|
||||
NewPage = PAGE_PLAYERS;
|
||||
|
||||
Box.VSplitLeft(130.0f, &Button, &Box);
|
||||
static CButtonContainer s_ServerInfoButton;
|
||||
if(DoButton_MenuTab(&s_ServerInfoButton, Localize("Server info"), ActivePage == PAGE_SERVER_INFO, &Button, IGraphics::CORNER_NONE))
|
||||
NewPage = PAGE_SERVER_INFO;
|
||||
|
||||
Box.VSplitLeft(90.0f, &Button, &Box);
|
||||
static CButtonContainer s_NetworkButton;
|
||||
if(DoButton_MenuTab(&s_NetworkButton, Localize("Browser"), ActivePage == PAGE_NETWORK, &Button, IGraphics::CORNER_NONE))
|
||||
NewPage = PAGE_NETWORK;
|
||||
|
||||
if(GameClient()->m_GameInfo.m_Race)
|
||||
{
|
||||
Box.VSplitLeft(90.0f, &Button, &Box);
|
||||
static CButtonContainer s_GhostButton;
|
||||
if(DoButton_MenuTab(&s_GhostButton, Localize("Ghost"), ActivePage == PAGE_GHOST, &Button, IGraphics::CORNER_NONE))
|
||||
NewPage = PAGE_GHOST;
|
||||
}
|
||||
|
||||
Box.VSplitLeft(100.0f, &Button, &Box);
|
||||
Box.VSplitLeft(4.0f, nullptr, &Box);
|
||||
static CButtonContainer s_CallVoteButton;
|
||||
if(DoButton_MenuTab(&s_CallVoteButton, Localize("Call vote"), ActivePage == PAGE_CALLVOTE, &Button, IGraphics::CORNER_TR))
|
||||
{
|
||||
NewPage = PAGE_CALLVOTE;
|
||||
m_ControlPageOpening = true;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
dbg_assert(false, "Client state invalid for RenderMenubar");
|
||||
}
|
||||
|
||||
// First render buttons aligned from right side so remaining
|
||||
// width is known when rendering buttons from left side.
|
||||
TextRender()->SetFontPreset(EFontPreset::ICON_FONT);
|
||||
TextRender()->SetRenderFlags(ETextRenderFlags::TEXT_RENDER_FLAG_ONLY_ADVANCE_WIDTH | ETextRenderFlags::TEXT_RENDER_FLAG_NO_X_BEARING | ETextRenderFlags::TEXT_RENDER_FLAG_NO_Y_BEARING | ETextRenderFlags::TEXT_RENDER_FLAG_NO_PIXEL_ALIGMENT | ETextRenderFlags::TEXT_RENDER_FLAG_NO_OVERSIZE);
|
||||
|
||||
|
@ -756,9 +612,164 @@ void CMenus::RenderMenubar(CUIRect Box, IClient::EClientState ClientState)
|
|||
GameClient()->m_Tooltips.DoToolTip(&s_DemoButton, &Button, Localize("Demos"));
|
||||
}
|
||||
|
||||
Box.VSplitRight(10.0f, &Box, nullptr);
|
||||
|
||||
TextRender()->SetRenderFlags(0);
|
||||
TextRender()->SetFontPreset(EFontPreset::DEFAULT_FONT);
|
||||
|
||||
if(ClientState == IClient::STATE_OFFLINE)
|
||||
{
|
||||
Box.VSplitLeft(33.0f, &Button, &Box);
|
||||
|
||||
TextRender()->SetFontPreset(EFontPreset::ICON_FONT);
|
||||
TextRender()->SetRenderFlags(ETextRenderFlags::TEXT_RENDER_FLAG_ONLY_ADVANCE_WIDTH | ETextRenderFlags::TEXT_RENDER_FLAG_NO_X_BEARING | ETextRenderFlags::TEXT_RENDER_FLAG_NO_Y_BEARING | ETextRenderFlags::TEXT_RENDER_FLAG_NO_PIXEL_ALIGMENT | ETextRenderFlags::TEXT_RENDER_FLAG_NO_OVERSIZE);
|
||||
|
||||
bool GotNewsOrUpdate = false;
|
||||
|
||||
#if defined(CONF_AUTOUPDATE)
|
||||
int State = Updater()->GetCurrentState();
|
||||
bool NeedUpdate = str_comp(Client()->LatestVersion(), "0");
|
||||
if(State == IUpdater::CLEAN && NeedUpdate)
|
||||
{
|
||||
GotNewsOrUpdate = true;
|
||||
}
|
||||
#endif
|
||||
|
||||
GotNewsOrUpdate |= (bool)g_Config.m_UiUnreadNews;
|
||||
|
||||
ColorRGBA HomeButtonColorAlert(0, 1, 0, 0.25f);
|
||||
ColorRGBA HomeButtonColorAlertHover(0, 1, 0, 0.5f);
|
||||
ColorRGBA *pHomeButtonColor = nullptr;
|
||||
ColorRGBA *pHomeButtonColorHover = nullptr;
|
||||
|
||||
const char *pHomeScreenButtonLabel = FONT_ICON_HOUSE;
|
||||
if(GotNewsOrUpdate)
|
||||
{
|
||||
pHomeScreenButtonLabel = FONT_ICON_NEWSPAPER;
|
||||
pHomeButtonColor = &HomeButtonColorAlert;
|
||||
pHomeButtonColorHover = &HomeButtonColorAlertHover;
|
||||
}
|
||||
|
||||
static CButtonContainer s_StartButton;
|
||||
if(DoButton_MenuTab(&s_StartButton, pHomeScreenButtonLabel, false, &Button, IGraphics::CORNER_T, &m_aAnimatorsSmallPage[SMALL_TAB_HOME], pHomeButtonColor, pHomeButtonColor, pHomeButtonColorHover, 10.0f))
|
||||
{
|
||||
m_ShowStart = true;
|
||||
}
|
||||
GameClient()->m_Tooltips.DoToolTip(&s_StartButton, &Button, Localize("Main menu"));
|
||||
|
||||
const float BrowserButtonWidth = 75.0f;
|
||||
Box.VSplitLeft(10.0f, nullptr, &Box);
|
||||
Box.VSplitLeft(BrowserButtonWidth, &Button, &Box);
|
||||
static CButtonContainer s_InternetButton;
|
||||
if(DoButton_MenuTab(&s_InternetButton, FONT_ICON_EARTH_AMERICAS, ActivePage == PAGE_INTERNET, &Button, IGraphics::CORNER_T, &m_aAnimatorsBigPage[BIG_TAB_INTERNET]))
|
||||
{
|
||||
if(ServerBrowser()->GetCurrentType() != IServerBrowser::TYPE_INTERNET)
|
||||
{
|
||||
if(ServerBrowser()->GetCurrentType() == IServerBrowser::TYPE_LAN)
|
||||
Client()->RequestDDNetInfo();
|
||||
ServerBrowser()->Refresh(IServerBrowser::TYPE_INTERNET);
|
||||
}
|
||||
NewPage = PAGE_INTERNET;
|
||||
}
|
||||
GameClient()->m_Tooltips.DoToolTip(&s_InternetButton, &Button, Localize("Internet"));
|
||||
|
||||
Box.VSplitLeft(BrowserButtonWidth, &Button, &Box);
|
||||
static CButtonContainer s_LanButton;
|
||||
if(DoButton_MenuTab(&s_LanButton, FONT_ICON_NETWORK_WIRED, ActivePage == PAGE_LAN, &Button, IGraphics::CORNER_T, &m_aAnimatorsBigPage[BIG_TAB_LAN]))
|
||||
{
|
||||
if(ServerBrowser()->GetCurrentType() != IServerBrowser::TYPE_LAN)
|
||||
ServerBrowser()->Refresh(IServerBrowser::TYPE_LAN);
|
||||
NewPage = PAGE_LAN;
|
||||
}
|
||||
GameClient()->m_Tooltips.DoToolTip(&s_LanButton, &Button, Localize("LAN"));
|
||||
|
||||
Box.VSplitLeft(BrowserButtonWidth, &Button, &Box);
|
||||
static CButtonContainer s_FavoritesButton;
|
||||
if(DoButton_MenuTab(&s_FavoritesButton, FONT_ICON_STAR, ActivePage == PAGE_FAVORITES, &Button, IGraphics::CORNER_T, &m_aAnimatorsBigPage[BIG_TAB_FAVORITES]))
|
||||
{
|
||||
if(ServerBrowser()->GetCurrentType() != IServerBrowser::TYPE_FAVORITES)
|
||||
{
|
||||
if(ServerBrowser()->GetCurrentType() == IServerBrowser::TYPE_LAN)
|
||||
Client()->RequestDDNetInfo();
|
||||
ServerBrowser()->Refresh(IServerBrowser::TYPE_FAVORITES);
|
||||
}
|
||||
NewPage = PAGE_FAVORITES;
|
||||
}
|
||||
GameClient()->m_Tooltips.DoToolTip(&s_FavoritesButton, &Button, Localize("Favorites"));
|
||||
|
||||
size_t FavoriteCommunityIndex = 0;
|
||||
static CButtonContainer s_aFavoriteCommunityButtons[5];
|
||||
static_assert(std::size(s_aFavoriteCommunityButtons) == (size_t)PAGE_FAVORITE_COMMUNITY_5 - PAGE_FAVORITE_COMMUNITY_1 + 1);
|
||||
static_assert(std::size(s_aFavoriteCommunityButtons) == (size_t)BIT_TAB_FAVORITE_COMMUNITY_5 - BIT_TAB_FAVORITE_COMMUNITY_1 + 1);
|
||||
static_assert(std::size(s_aFavoriteCommunityButtons) == (size_t)IServerBrowser::TYPE_FAVORITE_COMMUNITY_5 - IServerBrowser::TYPE_FAVORITE_COMMUNITY_1 + 1);
|
||||
for(const CCommunity *pCommunity : ServerBrowser()->FavoriteCommunities())
|
||||
{
|
||||
if(Box.w < BrowserButtonWidth)
|
||||
break;
|
||||
Box.VSplitLeft(BrowserButtonWidth, &Button, &Box);
|
||||
const int Page = PAGE_FAVORITE_COMMUNITY_1 + FavoriteCommunityIndex;
|
||||
if(DoButton_MenuTab(&s_aFavoriteCommunityButtons[FavoriteCommunityIndex], FONT_ICON_ELLIPSIS, ActivePage == Page, &Button, IGraphics::CORNER_T, &m_aAnimatorsBigPage[BIT_TAB_FAVORITE_COMMUNITY_1 + FavoriteCommunityIndex], nullptr, nullptr, nullptr, 10.0f, FindCommunityIcon(pCommunity->Id())))
|
||||
{
|
||||
const int BrowserType = IServerBrowser::TYPE_FAVORITE_COMMUNITY_1 + FavoriteCommunityIndex;
|
||||
if(ServerBrowser()->GetCurrentType() != BrowserType)
|
||||
{
|
||||
if(ServerBrowser()->GetCurrentType() == IServerBrowser::TYPE_LAN)
|
||||
Client()->RequestDDNetInfo();
|
||||
ServerBrowser()->Refresh(BrowserType);
|
||||
}
|
||||
NewPage = Page;
|
||||
}
|
||||
GameClient()->m_Tooltips.DoToolTip(&s_aFavoriteCommunityButtons[FavoriteCommunityIndex], &Button, pCommunity->Name());
|
||||
|
||||
++FavoriteCommunityIndex;
|
||||
if(FavoriteCommunityIndex >= std::size(s_aFavoriteCommunityButtons))
|
||||
break;
|
||||
}
|
||||
|
||||
TextRender()->SetRenderFlags(0);
|
||||
TextRender()->SetFontPreset(EFontPreset::DEFAULT_FONT);
|
||||
}
|
||||
else
|
||||
{
|
||||
// online menus
|
||||
Box.VSplitLeft(90.0f, &Button, &Box);
|
||||
static CButtonContainer s_GameButton;
|
||||
if(DoButton_MenuTab(&s_GameButton, Localize("Game"), ActivePage == PAGE_GAME, &Button, IGraphics::CORNER_TL))
|
||||
NewPage = PAGE_GAME;
|
||||
|
||||
Box.VSplitLeft(90.0f, &Button, &Box);
|
||||
static CButtonContainer s_PlayersButton;
|
||||
if(DoButton_MenuTab(&s_PlayersButton, Localize("Players"), ActivePage == PAGE_PLAYERS, &Button, IGraphics::CORNER_NONE))
|
||||
NewPage = PAGE_PLAYERS;
|
||||
|
||||
Box.VSplitLeft(130.0f, &Button, &Box);
|
||||
static CButtonContainer s_ServerInfoButton;
|
||||
if(DoButton_MenuTab(&s_ServerInfoButton, Localize("Server info"), ActivePage == PAGE_SERVER_INFO, &Button, IGraphics::CORNER_NONE))
|
||||
NewPage = PAGE_SERVER_INFO;
|
||||
|
||||
Box.VSplitLeft(90.0f, &Button, &Box);
|
||||
static CButtonContainer s_NetworkButton;
|
||||
if(DoButton_MenuTab(&s_NetworkButton, Localize("Browser"), ActivePage == PAGE_NETWORK, &Button, IGraphics::CORNER_NONE))
|
||||
NewPage = PAGE_NETWORK;
|
||||
|
||||
if(GameClient()->m_GameInfo.m_Race)
|
||||
{
|
||||
Box.VSplitLeft(90.0f, &Button, &Box);
|
||||
static CButtonContainer s_GhostButton;
|
||||
if(DoButton_MenuTab(&s_GhostButton, Localize("Ghost"), ActivePage == PAGE_GHOST, &Button, IGraphics::CORNER_NONE))
|
||||
NewPage = PAGE_GHOST;
|
||||
}
|
||||
|
||||
Box.VSplitLeft(100.0f, &Button, &Box);
|
||||
Box.VSplitLeft(4.0f, nullptr, &Box);
|
||||
static CButtonContainer s_CallVoteButton;
|
||||
if(DoButton_MenuTab(&s_CallVoteButton, Localize("Call vote"), ActivePage == PAGE_CALLVOTE, &Button, IGraphics::CORNER_TR))
|
||||
{
|
||||
NewPage = PAGE_CALLVOTE;
|
||||
m_ControlPageOpening = true;
|
||||
}
|
||||
}
|
||||
|
||||
if(NewPage != -1)
|
||||
{
|
||||
if(ClientState == IClient::STATE_OFFLINE)
|
||||
|
@ -859,7 +870,7 @@ void CMenus::OnInit()
|
|||
m_CreateDefaultFavoriteCommunities = true;
|
||||
}
|
||||
|
||||
if(g_Config.m_UiPage >= PAGE_FAVORITE_COMMUNITY_1 && g_Config.m_UiPage <= PAGE_FAVORITE_COMMUNITY_3 &&
|
||||
if(g_Config.m_UiPage >= PAGE_FAVORITE_COMMUNITY_1 && g_Config.m_UiPage <= PAGE_FAVORITE_COMMUNITY_5 &&
|
||||
(size_t)(g_Config.m_UiPage - PAGE_FAVORITE_COMMUNITY_1) >= ServerBrowser()->FavoriteCommunities().size())
|
||||
{
|
||||
// Reset page to internet when there is no favorite community for this page.
|
||||
|
@ -1110,7 +1121,7 @@ void CMenus::Render()
|
|||
{
|
||||
RenderNews(MainView);
|
||||
}
|
||||
else if(m_MenuPage >= PAGE_INTERNET && m_MenuPage <= PAGE_FAVORITE_COMMUNITY_3)
|
||||
else if(m_MenuPage >= PAGE_INTERNET && m_MenuPage <= PAGE_FAVORITE_COMMUNITY_5)
|
||||
{
|
||||
RenderServerbrowser(MainView);
|
||||
}
|
||||
|
@ -2353,7 +2364,7 @@ const CMenus::CMenuImage *CMenus::FindMenuImage(const char *pName)
|
|||
void CMenus::SetMenuPage(int NewPage)
|
||||
{
|
||||
m_MenuPage = NewPage;
|
||||
if(NewPage >= PAGE_INTERNET && NewPage <= PAGE_FAVORITE_COMMUNITY_3)
|
||||
if(NewPage >= PAGE_INTERNET && NewPage <= PAGE_FAVORITE_COMMUNITY_5)
|
||||
g_Config.m_UiPage = NewPage;
|
||||
}
|
||||
|
||||
|
@ -2373,7 +2384,7 @@ void CMenus::RefreshBrowserTab(int UiPage)
|
|||
Client()->RequestDDNetInfo();
|
||||
ServerBrowser()->Refresh(IServerBrowser::TYPE_FAVORITES);
|
||||
}
|
||||
else if(UiPage >= PAGE_FAVORITE_COMMUNITY_1 && UiPage <= PAGE_FAVORITE_COMMUNITY_3)
|
||||
else if(UiPage >= PAGE_FAVORITE_COMMUNITY_1 && UiPage <= PAGE_FAVORITE_COMMUNITY_5)
|
||||
{
|
||||
Client()->RequestDDNetInfo();
|
||||
ServerBrowser()->Refresh(UiPage - PAGE_FAVORITE_COMMUNITY_1 + IServerBrowser::TYPE_FAVORITE_COMMUNITY_1);
|
||||
|
|
|
@ -644,6 +644,8 @@ public:
|
|||
PAGE_FAVORITE_COMMUNITY_1,
|
||||
PAGE_FAVORITE_COMMUNITY_2,
|
||||
PAGE_FAVORITE_COMMUNITY_3,
|
||||
PAGE_FAVORITE_COMMUNITY_4,
|
||||
PAGE_FAVORITE_COMMUNITY_5,
|
||||
PAGE_DEMOS,
|
||||
PAGE_SETTINGS,
|
||||
PAGE_NETWORK,
|
||||
|
@ -671,6 +673,8 @@ public:
|
|||
BIT_TAB_FAVORITE_COMMUNITY_1,
|
||||
BIT_TAB_FAVORITE_COMMUNITY_2,
|
||||
BIT_TAB_FAVORITE_COMMUNITY_3,
|
||||
BIT_TAB_FAVORITE_COMMUNITY_4,
|
||||
BIT_TAB_FAVORITE_COMMUNITY_5,
|
||||
BIG_TAB_DEMOS,
|
||||
|
||||
BIG_TAB_LENGTH,
|
||||
|
|
|
@ -1718,6 +1718,8 @@ void CMenus::RenderServerbrowser(CUIRect MainView)
|
|||
case PAGE_FAVORITE_COMMUNITY_1:
|
||||
case PAGE_FAVORITE_COMMUNITY_2:
|
||||
case PAGE_FAVORITE_COMMUNITY_3:
|
||||
case PAGE_FAVORITE_COMMUNITY_4:
|
||||
case PAGE_FAVORITE_COMMUNITY_5:
|
||||
m_pBackground->ChangePosition(g_Config.m_UiPage - PAGE_FAVORITE_COMMUNITY_1 + CMenuBackground::POS_BROWSER_CUSTOM0);
|
||||
break;
|
||||
default:
|
||||
|
@ -1837,7 +1839,7 @@ void CMenus::ConchainCommunitiesUpdate(IConsole::IResult *pResult, void *pUserDa
|
|||
{
|
||||
pfnCallback(pResult, pCallbackUserData);
|
||||
CMenus *pThis = static_cast<CMenus *>(pUserData);
|
||||
if(pResult->NumArguments() >= 1 && (g_Config.m_UiPage == PAGE_INTERNET || g_Config.m_UiPage == PAGE_FAVORITES || (g_Config.m_UiPage >= PAGE_FAVORITE_COMMUNITY_1 && g_Config.m_UiPage <= PAGE_FAVORITE_COMMUNITY_3)))
|
||||
if(pResult->NumArguments() >= 1 && (g_Config.m_UiPage == PAGE_INTERNET || g_Config.m_UiPage == PAGE_FAVORITES || (g_Config.m_UiPage >= PAGE_FAVORITE_COMMUNITY_1 && g_Config.m_UiPage <= PAGE_FAVORITE_COMMUNITY_5)))
|
||||
{
|
||||
pThis->UpdateCommunityCache(true);
|
||||
pThis->Client()->ServerBrowserUpdate();
|
||||
|
@ -1851,7 +1853,7 @@ void CMenus::ConchainUiPageUpdate(IConsole::IResult *pResult, void *pUserData, I
|
|||
CMenus *pThis = static_cast<CMenus *>(pUserData);
|
||||
if(pResult->NumArguments() >= 1)
|
||||
{
|
||||
if(g_Config.m_UiPage >= PAGE_FAVORITE_COMMUNITY_1 && g_Config.m_UiPage <= PAGE_FAVORITE_COMMUNITY_3 &&
|
||||
if(g_Config.m_UiPage >= PAGE_FAVORITE_COMMUNITY_1 && g_Config.m_UiPage <= PAGE_FAVORITE_COMMUNITY_5 &&
|
||||
(size_t)(g_Config.m_UiPage - PAGE_FAVORITE_COMMUNITY_1) >= pThis->ServerBrowser()->FavoriteCommunities().size())
|
||||
{
|
||||
// Reset page to internet when there is no favorite community for this page.
|
||||
|
@ -1869,7 +1871,7 @@ void CMenus::ConchainUiPageUpdate(IConsole::IResult *pResult, void *pUserData, I
|
|||
|
||||
void CMenus::UpdateCommunityCache(bool Force)
|
||||
{
|
||||
if(g_Config.m_UiPage >= PAGE_FAVORITE_COMMUNITY_1 && g_Config.m_UiPage <= PAGE_FAVORITE_COMMUNITY_3 &&
|
||||
if(g_Config.m_UiPage >= PAGE_FAVORITE_COMMUNITY_1 && g_Config.m_UiPage <= PAGE_FAVORITE_COMMUNITY_5 &&
|
||||
(size_t)(g_Config.m_UiPage - PAGE_FAVORITE_COMMUNITY_1) >= ServerBrowser()->FavoriteCommunities().size())
|
||||
{
|
||||
// Reset page to internet when there is no favorite community for this page,
|
||||
|
@ -1881,7 +1883,7 @@ void CMenus::UpdateCommunityCache(bool Force)
|
|||
const unsigned CommunitiesHash = ServerBrowser()->CurrentCommunitiesHash();
|
||||
const bool PageChanged = m_CommunityCache.m_LastPage != 0 && m_CommunityCache.m_LastPage != g_Config.m_UiPage;
|
||||
const bool CurrentCommunitiesChanged = m_CommunityCache.m_LastPage != 0 && m_CommunityCache.m_LastPage == g_Config.m_UiPage && m_CommunityCache.m_SelectedCommunitiesHash != CommunitiesHash;
|
||||
if(CurrentCommunitiesChanged && g_Config.m_UiPage >= PAGE_FAVORITE_COMMUNITY_1 && g_Config.m_UiPage <= PAGE_FAVORITE_COMMUNITY_3)
|
||||
if(CurrentCommunitiesChanged && g_Config.m_UiPage >= PAGE_FAVORITE_COMMUNITY_1 && g_Config.m_UiPage <= PAGE_FAVORITE_COMMUNITY_5)
|
||||
{
|
||||
// Favorite community was changed while its page is active,
|
||||
// refresh to get correct serverlist for updated community.
|
||||
|
|
|
@ -882,8 +882,8 @@ void CMenus::RenderInGameNetwork(CUIRect MainView)
|
|||
GameClient()->m_Tooltips.DoToolTip(&s_FavoritesButton, &Button, Localize("Favorites"));
|
||||
|
||||
size_t FavoriteCommunityIndex = 0;
|
||||
static CButtonContainer s_aFavoriteCommunityButtons[3];
|
||||
static_assert(std::size(s_aFavoriteCommunityButtons) == (size_t)PAGE_FAVORITE_COMMUNITY_3 - PAGE_FAVORITE_COMMUNITY_1 + 1);
|
||||
static CButtonContainer s_aFavoriteCommunityButtons[5];
|
||||
static_assert(std::size(s_aFavoriteCommunityButtons) == (size_t)PAGE_FAVORITE_COMMUNITY_5 - PAGE_FAVORITE_COMMUNITY_1 + 1);
|
||||
for(const CCommunity *pCommunity : ServerBrowser()->FavoriteCommunities())
|
||||
{
|
||||
TabBar.VSplitLeft(75.0f, &Button, &TabBar);
|
||||
|
|
|
@ -193,7 +193,7 @@ void CMenus::RenderStartMenu(CUIRect MainView)
|
|||
static CButtonContainer s_PlayButton;
|
||||
if(DoButton_Menu(&s_PlayButton, Localize("Play", "Start menu"), 0, &Button, g_Config.m_ClShowStartMenuImages ? "play_game" : 0, IGraphics::CORNER_ALL, Rounding, 0.5f, ColorRGBA(0.0f, 0.0f, 0.0f, 0.25f)) || Ui()->ConsumeHotkey(CUi::HOTKEY_ENTER) || CheckHotKey(KEY_P))
|
||||
{
|
||||
NewPage = g_Config.m_UiPage >= PAGE_INTERNET && g_Config.m_UiPage <= PAGE_FAVORITE_COMMUNITY_3 ? g_Config.m_UiPage : PAGE_INTERNET;
|
||||
NewPage = g_Config.m_UiPage >= PAGE_INTERNET && g_Config.m_UiPage <= PAGE_FAVORITE_COMMUNITY_5 ? g_Config.m_UiPage : PAGE_INTERNET;
|
||||
}
|
||||
|
||||
// render version
|
||||
|
|
|
@ -47,6 +47,7 @@ void CProofMode::SetMenuBackgroundPositionNames()
|
|||
m_vpMenuBackgroundPositionNames[CMenuBackground::POS_BROWSER_CUSTOM1] = "custom(2)";
|
||||
m_vpMenuBackgroundPositionNames[CMenuBackground::POS_BROWSER_CUSTOM2] = "custom(3)";
|
||||
m_vpMenuBackgroundPositionNames[CMenuBackground::POS_BROWSER_CUSTOM3] = "custom(4)";
|
||||
m_vpMenuBackgroundPositionNames[CMenuBackground::POS_BROWSER_CUSTOM4] = "custom(5)";
|
||||
m_vpMenuBackgroundPositionNames[CMenuBackground::POS_SETTINGS_RESERVED0] = "reserved settings(1)";
|
||||
m_vpMenuBackgroundPositionNames[CMenuBackground::POS_SETTINGS_RESERVED1] = "reserved settings(2)";
|
||||
m_vpMenuBackgroundPositionNames[CMenuBackground::POS_RESERVED0] = "reserved(1)";
|
||||
|
|
Loading…
Reference in a new issue