diff options
Diffstat (limited to 'src/game')
| -rw-r--r-- | src/game/client/components/menus_browser.cpp | 30 | ||||
| -rw-r--r-- | src/game/client/components/menus_ingame.cpp | 2 | ||||
| -rw-r--r-- | src/game/server/gamecontext.cpp | 5 | ||||
| -rw-r--r-- | src/game/server/gamecontext.h | 1 |
4 files changed, 27 insertions, 11 deletions
diff --git a/src/game/client/components/menus_browser.cpp b/src/game/client/components/menus_browser.cpp index 8f2b2500..952d596d 100644 --- a/src/game/client/components/menus_browser.cpp +++ b/src/game/client/components/menus_browser.cpp @@ -351,7 +351,10 @@ void CMenus::RenderServerbrowserServerList(CUIRect View) } else if(ID == COL_PLAYERS) { - str_format(aTemp, sizeof(aTemp), "%i/%i", pItem->m_NumPlayers, pItem->m_MaxPlayers); + if(g_Config.m_BrFilterSpectators) + str_format(aTemp, sizeof(aTemp), "%i/%i", pItem->m_NumPlayers, pItem->m_MaxPlayers); + else + str_format(aTemp, sizeof(aTemp), "%i/%i", pItem->m_NumClients, pItem->m_MaxClients); if(g_Config.m_BrFilterString[0] && (pItem->m_QuickSearchHit&IServerBrowser::QUICK_PLAYER)) TextRender()->TextColor(0.4f,0.4f,1.0f,1); UI()->DoLabelScaled(&Button, aTemp, 12.0f, 1); @@ -450,6 +453,10 @@ void CMenus::RenderServerbrowserFilters(CUIRect View) g_Config.m_BrFilterEmpty ^= 1; ServerFilter.HSplitTop(20.0f, &Button, &ServerFilter); + if(DoButton_CheckBox(&g_Config.m_BrFilterSpectators, Localize("Count players only"), g_Config.m_BrFilterSpectators, &Button)) + g_Config.m_BrFilterSpectators ^= 1; + + ServerFilter.HSplitTop(20.0f, &Button, &ServerFilter); if (DoButton_CheckBox(&g_Config.m_BrFilterFull, Localize("Server not full"), g_Config.m_BrFilterFull, &Button)) g_Config.m_BrFilterFull ^= 1; @@ -608,7 +615,7 @@ void CMenus::RenderServerbrowserServerDetail(CUIRect View) { ServerScoreBoard.VSplitLeft(5.0f, 0, &ServerScoreBoard); ServerScoreBoard.Margin(3.0f, &ServerScoreBoard); - for (int i = 0; i < pSelectedServer->m_NumPlayers; i++) + for (int i = 0; i < pSelectedServer->m_NumClients; i++) { CUIRect Name, Clan, Score, Flag; ServerScoreBoard.HSplitTop(25.0f, &Name, &ServerScoreBoard); @@ -618,16 +625,19 @@ void CMenus::RenderServerbrowserServerDetail(CUIRect View) Name.HSplitTop(12.0f, &Name, &Clan); // score - char aTemp[16]; - str_format(aTemp, sizeof(aTemp), "%d", pSelectedServer->m_aPlayers[i].m_Score); - TextRender()->SetCursor(&Cursor, Score.x, Score.y+(Score.h-FontSize)/2.0f, FontSize, TEXTFLAG_RENDER|TEXTFLAG_STOP_AT_END); - Cursor.m_LineWidth = Score.w; - TextRender()->TextEx(&Cursor, aTemp, -1); + if(pSelectedServer->m_aClients[i].m_Player) + { + char aTemp[16]; + str_format(aTemp, sizeof(aTemp), "%d", pSelectedServer->m_aClients[i].m_Score); + TextRender()->SetCursor(&Cursor, Score.x, Score.y+(Score.h-FontSize)/2.0f, FontSize, TEXTFLAG_RENDER|TEXTFLAG_STOP_AT_END); + Cursor.m_LineWidth = Score.w; + TextRender()->TextEx(&Cursor, aTemp, -1); + } // name TextRender()->SetCursor(&Cursor, Name.x, Name.y, FontSize-2, TEXTFLAG_RENDER|TEXTFLAG_STOP_AT_END); Cursor.m_LineWidth = Name.w; - const char *pName = pSelectedServer->m_aPlayers[i].m_aName; + const char *pName = pSelectedServer->m_aClients[i].m_aName; if(g_Config.m_BrFilterString[0]) { // highlight the parts that matches @@ -649,7 +659,7 @@ void CMenus::RenderServerbrowserServerDetail(CUIRect View) // clan TextRender()->SetCursor(&Cursor, Clan.x, Clan.y, FontSize-2, TEXTFLAG_RENDER|TEXTFLAG_STOP_AT_END); Cursor.m_LineWidth = Clan.w; - const char *pClan = pSelectedServer->m_aPlayers[i].m_aClan; + const char *pClan = pSelectedServer->m_aClients[i].m_aClan; if(g_Config.m_BrFilterString[0]) { // highlight the parts that matches @@ -669,7 +679,7 @@ void CMenus::RenderServerbrowserServerDetail(CUIRect View) TextRender()->TextEx(&Cursor, pClan, -1); // flag - Graphics()->TextureSet(m_pClient->m_pCountryFlags->Get(pSelectedServer->m_aPlayers[i].m_Country)->m_Texture); + Graphics()->TextureSet(m_pClient->m_pCountryFlags->Get(pSelectedServer->m_aClients[i].m_Country)->m_Texture); Graphics()->QuadsBegin(); Graphics()->SetColor(1.0f, 1.0f, 1.0f, 1.0f); IGraphics::CQuadItem QuadItem(Flag.x, Flag.y, Flag.w, Flag.h); diff --git a/src/game/client/components/menus_ingame.cpp b/src/game/client/components/menus_ingame.cpp index d49c96e2..ef3d0236 100644 --- a/src/game/client/components/menus_ingame.cpp +++ b/src/game/client/components/menus_ingame.cpp @@ -252,7 +252,7 @@ void CMenus::RenderServerInfo(CUIRect MainView) Localize("Map"), CurrentServerInfo.m_aMap, Localize("Score limit"), m_pClient->m_Snap.m_pGameInfoObj->m_ScoreLimit, Localize("Time limit"), m_pClient->m_Snap.m_pGameInfoObj->m_TimeLimit, - Localize("Players"), m_pClient->m_Snap.m_NumPlayers, CurrentServerInfo.m_MaxPlayers + Localize("Players"), m_pClient->m_Snap.m_NumPlayers, CurrentServerInfo.m_MaxClients ); TextRender()->Text(0, GameInfo.x+x, GameInfo.y+y, 20, aBuf, 250); } diff --git a/src/game/server/gamecontext.cpp b/src/game/server/gamecontext.cpp index 348b6735..1612ebec 100644 --- a/src/game/server/gamecontext.cpp +++ b/src/game/server/gamecontext.cpp @@ -1184,6 +1184,11 @@ bool CGameContext::IsClientReady(int ClientID) return m_apPlayers[ClientID] && m_apPlayers[ClientID]->m_IsReady ? true : false; } +bool CGameContext::IsClientPlayer(int ClientID) +{ + return m_apPlayers[ClientID] && m_apPlayers[ClientID]->GetTeam() == TEAM_SPECTATORS ? false : true; +} + const char *CGameContext::GameType() { return m_pController && m_pController->m_pGameType ? m_pController->m_pGameType : ""; } const char *CGameContext::Version() { return GAME_VERSION; } const char *CGameContext::NetVersion() { return GAME_NETVERSION; } diff --git a/src/game/server/gamecontext.h b/src/game/server/gamecontext.h index f64232a1..7379b74d 100644 --- a/src/game/server/gamecontext.h +++ b/src/game/server/gamecontext.h @@ -162,6 +162,7 @@ public: virtual void OnClientPredictedInput(int ClientID, void *pInput); virtual bool IsClientReady(int ClientID); + virtual bool IsClientPlayer(int ClientID); virtual const char *GameType(); virtual const char *Version(); |