about summary refs log tree commit diff
path: root/src/game/client/gameclient.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/game/client/gameclient.cpp')
-rw-r--r--src/game/client/gameclient.cpp15
1 files changed, 15 insertions, 0 deletions
diff --git a/src/game/client/gameclient.cpp b/src/game/client/gameclient.cpp
index 2bebf486..9a05cc88 100644
--- a/src/game/client/gameclient.cpp
+++ b/src/game/client/gameclient.cpp
@@ -814,6 +814,21 @@ void CGameClient::OnNewSnapshot()
 	}
 	else
 		m_Snap.m_Spectate = true;
+
+	// sort player infos by score
+	mem_copy(m_Snap.m_paInfoByScore, m_Snap.m_paPlayerInfos, sizeof(m_Snap.m_paInfoByScore));
+	for(int k = 0; k < MAX_CLIENTS-1; k++) // ffs, bubblesort
+	{
+		for(int i = 0; i < MAX_CLIENTS-k-1; i++)
+		{
+			if(m_Snap.m_paInfoByScore[i+1] && (!m_Snap.m_paInfoByScore[i] || m_Snap.m_paInfoByScore[i]->m_Score < m_Snap.m_paInfoByScore[i+1]->m_Score))
+			{
+				const CNetObj_PlayerInfo *pTmp = m_Snap.m_paInfoByScore[i];
+				m_Snap.m_paInfoByScore[i] = m_Snap.m_paInfoByScore[i+1];
+				m_Snap.m_paInfoByScore[i+1] = pTmp;
+			}
+		}
+	}
 	
 	CTuningParams StandardTuning;
 	CServerInfo CurrentServerInfo;