From b8f144ba811708bfac82faed438ce389f3d01863 Mon Sep 17 00:00:00 2001 From: oy Date: Sat, 26 Mar 2011 16:56:59 +0100 Subject: added a vote that allows to move a player to spectators. Closes #58 --- src/game/client/components/menus_ingame.cpp | 30 +++++++++++++++++++++++++---- 1 file changed, 26 insertions(+), 4 deletions(-) (limited to 'src/game/client/components/menus_ingame.cpp') diff --git a/src/game/client/components/menus_ingame.cpp b/src/game/client/components/menus_ingame.cpp index 06da001a..4b593989 100644 --- a/src/game/client/components/menus_ingame.cpp +++ b/src/game/client/components/menus_ingame.cpp @@ -345,7 +345,7 @@ void CMenus::RenderServerControlServer(CUIRect MainView) m_CallvoteSelectedOption = UiDoListboxEnd(&s_ScrollValue, 0); } -void CMenus::RenderServerControlKick(CUIRect MainView) +void CMenus::RenderServerControlKick(CUIRect MainView, bool FilterSpectators) { int NumOptions = 0; int Selected = -1; @@ -354,6 +354,8 @@ void CMenus::RenderServerControlKick(CUIRect MainView) { if(!m_pClient->m_Snap.m_paPlayerInfos[i] || i == m_pClient->m_Snap.m_LocalClientID) continue; + if(FilterSpectators && m_pClient->m_Snap.m_paPlayerInfos[i]->m_Team == TEAM_SPECTATORS) + continue; if(m_CallvoteSelectedPlayer == i) Selected = NumOptions; aPlayerIDs[NumOptions++] = i; @@ -400,7 +402,8 @@ void CMenus::RenderServerControl(CUIRect MainView) const char *paTabs[] = { Localize("Settings"), - Localize("Kick")}; + Localize("Kick"), + Localize("Spectate")}; int aNumTabs = (int)(sizeof(paTabs)/sizeof(*paTabs)); for(int i = 0; i < aNumTabs; i++) @@ -424,8 +427,9 @@ void CMenus::RenderServerControl(CUIRect MainView) if(s_ControlPage == 0) RenderServerControlServer(MainView); else if(s_ControlPage == 1) - RenderServerControlKick(MainView); - + RenderServerControlKick(MainView, false); + else if(s_ControlPage == 2) + RenderServerControlKick(MainView, true); { CUIRect Button; @@ -445,6 +449,15 @@ void CMenus::RenderServerControl(CUIRect MainView) SetActive(false); } } + else if(s_ControlPage == 2) + { + if(m_CallvoteSelectedPlayer >= 0 && m_CallvoteSelectedPlayer < MAX_CLIENTS && + m_pClient->m_Snap.m_paPlayerInfos[m_CallvoteSelectedPlayer]) + { + m_pClient->m_pVoting->CallvoteSpectate(m_CallvoteSelectedPlayer, m_aCallvoteReason); + SetActive(false); + } + } m_aCallvoteReason[0] = 0; } @@ -479,6 +492,15 @@ void CMenus::RenderServerControl(CUIRect MainView) SetActive(false); } } + else if(s_ControlPage == 2) + { + if(m_CallvoteSelectedPlayer >= 0 && m_CallvoteSelectedPlayer < MAX_CLIENTS && + m_pClient->m_Snap.m_paPlayerInfos[m_CallvoteSelectedPlayer]) + { + m_pClient->m_pVoting->CallvoteSpectate(m_CallvoteSelectedPlayer, m_aCallvoteReason, true); + SetActive(false); + } + } m_aCallvoteReason[0] = 0; } } -- cgit 1.4.1