about summary refs log tree commit diff
path: root/src
diff options
context:
space:
mode:
authoroy <Tom_Adams@web.de>2011-01-18 17:56:09 +0100
committeroy <Tom_Adams@web.de>2011-01-18 17:56:09 +0100
commit0b14286c7f4accc1e38e0c84269d0c50b165a679 (patch)
tree56d279711e8bd321b868af7ee8377fb1469919ca /src
parent3b3ca9cd67badc96622b52ed5de6a9a387d47472 (diff)
downloadzcatch-0b14286c7f4accc1e38e0c84269d0c50b165a679.tar.gz
zcatch-0b14286c7f4accc1e38e0c84269d0c50b165a679.zip
skip spectators in dm hud
Diffstat (limited to 'src')
-rw-r--r--src/game/client/components/hud.cpp38
1 files changed, 24 insertions, 14 deletions
diff --git a/src/game/client/components/hud.cpp b/src/game/client/components/hud.cpp
index 9f49952d..c49abca1 100644
--- a/src/game/client/components/hud.cpp
+++ b/src/game/client/components/hud.cpp
@@ -138,24 +138,34 @@ void CHud::RenderScoreHud()
 		}
 		else
 		{
-			int Local = 1;
+			int Local = -1;
 			int aPos[2] = { 1, 2 };
-			const CNetObj_PlayerInfo *apPlayerInfo[2] = { m_pClient->m_Snap.m_paInfoByScore[0], 0 };
-			if(m_pClient->m_Snap.m_paInfoByScore[0])
+			const CNetObj_PlayerInfo *apPlayerInfo[2] = { 0, 0 };
+			int i = 0;
+			for(int t = 0; t < 2 && i < MAX_CLIENTS && m_pClient->m_Snap.m_paInfoByScore[i]; ++i)
 			{
-				if(m_pClient->m_Snap.m_paInfoByScore[0]->m_ClientId == m_pClient->m_Snap.m_LocalCid)
+				if(m_pClient->m_Snap.m_paInfoByScore[i]->m_Team != TEAM_SPECTATORS)
 				{
-					apPlayerInfo[1] = m_pClient->m_Snap.m_paInfoByScore[1];
-					Local = 0;
+					apPlayerInfo[t] = m_pClient->m_Snap.m_paInfoByScore[i];
+					if(apPlayerInfo[t]->m_ClientId == m_pClient->m_Snap.m_LocalCid)
+						Local = t;
+					++t;
+				}
+			}
+			// search local player info if not a spectator, nor within top2 scores
+			if(Local == -1 && m_pClient->m_Snap.m_pLocalInfo && m_pClient->m_Snap.m_pLocalInfo->m_Team != TEAM_SPECTATORS)
+			{
+				for(; i < MAX_CLIENTS && m_pClient->m_Snap.m_paInfoByScore[i]; ++i)
+				{
+					if(m_pClient->m_Snap.m_paInfoByScore[i]->m_Team != TEAM_SPECTATORS)
+						++aPos[1];
+					if(m_pClient->m_Snap.m_paInfoByScore[i]->m_ClientId == m_pClient->m_Snap.m_LocalCid)
+					{
+						apPlayerInfo[1] = m_pClient->m_Snap.m_paInfoByScore[i];
+						Local = 1;
+						break;
+					}
 				}
-				else
-					for(int i = 1; i < MAX_CLIENTS; ++i)
-						if(m_pClient->m_Snap.m_paInfoByScore[i]->m_ClientId == m_pClient->m_Snap.m_LocalCid)
-						{
-							apPlayerInfo[1] = m_pClient->m_Snap.m_paInfoByScore[i];
-							aPos[1] = i+1;
-							break;
-						}
 			}
 			char aScore[2][32];
 			for(int t = 0; t < 2; ++t)