aboutsummaryrefslogtreecommitdiff
path: root/mp/src/game/server/GameStats_BasicStatsFunctions.cpp
diff options
context:
space:
mode:
authorJoe Ludwig <[email protected]>2013-06-26 15:22:04 -0700
committerJoe Ludwig <[email protected]>2013-06-26 15:22:04 -0700
commit39ed87570bdb2f86969d4be821c94b722dc71179 (patch)
treeabc53757f75f40c80278e87650ea92808274aa59 /mp/src/game/server/GameStats_BasicStatsFunctions.cpp
downloadsource-sdk-2013-39ed87570bdb2f86969d4be821c94b722dc71179.tar.xz
source-sdk-2013-39ed87570bdb2f86969d4be821c94b722dc71179.zip
First version of the SOurce SDK 2013
Diffstat (limited to 'mp/src/game/server/GameStats_BasicStatsFunctions.cpp')
-rw-r--r--mp/src/game/server/GameStats_BasicStatsFunctions.cpp183
1 files changed, 183 insertions, 0 deletions
diff --git a/mp/src/game/server/GameStats_BasicStatsFunctions.cpp b/mp/src/game/server/GameStats_BasicStatsFunctions.cpp
new file mode 100644
index 00000000..41e3f3dc
--- /dev/null
+++ b/mp/src/game/server/GameStats_BasicStatsFunctions.cpp
@@ -0,0 +1,183 @@
+//========= Copyright Valve Corporation, All rights reserved. ============//
+//
+// Purpose:
+//
+//=============================================================================
+
+#include "cbase.h"
+#include "gamestats.h"
+
+void BasicGameStatsRecord_t::Clear()
+{
+ m_nCount = 0;
+ m_nSeconds = 0;
+ m_nCommentary = 0;
+ m_nHDR = 0;
+ m_nCaptions = 0;
+ m_bSteam = true;
+ m_bCyberCafe = false;
+ Q_memset( m_nSkill, 0, sizeof( m_nSkill ) );
+ m_nDeaths = 0;
+}
+
+void BasicGameStatsRecord_t::SaveToBuffer( CUtlBuffer &buf )
+{
+ buf.PutInt( m_nCount );
+ buf.PutInt( m_nSeconds );
+ buf.PutInt( m_nCommentary );
+ buf.PutInt( m_nHDR );
+ buf.PutInt( m_nCaptions );
+ for ( int i = 0; i < 3; ++i )
+ {
+ buf.PutInt( m_nSkill[ i ] );
+ }
+
+ buf.PutChar( m_bSteam ? 1 : 0 );
+ buf.PutChar( m_bCyberCafe ? 1 : 0 );
+ buf.PutInt( m_nDeaths );
+}
+
+bool BasicGameStatsRecord_t::ParseFromBuffer( CUtlBuffer &buf, int iBufferStatsVersion )
+{
+ bool bret = true;
+ m_nCount = buf.GetInt();
+
+ if ( m_nCount > 100000 || m_nCount < 0 )
+ {
+ bret = false;
+ }
+
+ m_nSeconds = buf.GetInt();
+ // Note, don't put the buf.GetInt() in the macro since it'll get evaluated twice!!!
+ m_nSeconds = MAX( m_nSeconds, 0 );
+
+ m_nCommentary = buf.GetInt();
+ if ( m_nCommentary < 0 || m_nCommentary > 100000 )
+ {
+ bret = false;
+ }
+
+ m_nHDR = buf.GetInt();
+ if ( m_nHDR < 0 || m_nHDR > 100000 )
+ {
+ bret = false;
+ }
+
+ m_nCaptions = buf.GetInt();
+ if ( m_nCaptions < 0 || m_nCaptions > 100000 )
+ {
+ bret = false;
+ }
+
+ for ( int i = 0; i < 3; ++i )
+ {
+ m_nSkill[ i ] = buf.GetInt();
+ if ( m_nSkill[ i ] < 0 || m_nSkill[ i ] > 100000 )
+ {
+ bret = false;
+ }
+ }
+
+ if ( iBufferStatsVersion > GAMESTATS_FILE_VERSION_OLD )
+ {
+ m_bSteam = buf.GetChar() ? true : false;
+ }
+ if ( iBufferStatsVersion > GAMESTATS_FILE_VERSION_OLD2 )
+ {
+ m_bCyberCafe = buf.GetChar() ? true : false;
+ }
+ if ( iBufferStatsVersion > GAMESTATS_FILE_VERSION_OLD5 )
+ {
+ m_nDeaths = buf.GetInt();
+ }
+
+ return bret;
+}
+
+void BasicGameStats_t::Clear()
+{
+ m_nSecondsToCompleteGame = 0;
+ m_Summary.Clear();
+ m_MapTotals.Purge();
+}
+
+void BasicGameStats_t::SaveToBuffer( CUtlBuffer& buf )
+{
+ buf.PutInt( m_nSecondsToCompleteGame );
+
+ m_Summary.SaveToBuffer( buf );
+
+ int c = m_MapTotals.Count();
+ buf.PutInt( c );
+ for ( int i = m_MapTotals.First(); i != m_MapTotals.InvalidIndex(); i = m_MapTotals.Next( i ) )
+ {
+ char const *name = m_MapTotals.GetElementName( i );
+ BasicGameStatsRecord_t &rec = m_MapTotals[ i ];
+
+ buf.PutString( name );
+ rec.SaveToBuffer( buf );
+ }
+
+ buf.PutChar( (char)m_nHL2ChaptureUnlocked );
+ buf.PutChar( m_bSteam ? 1 : 0 );
+ buf.PutChar( m_bCyberCafe ? 1 : 0 );
+ buf.PutShort( (short)m_nDXLevel );
+}
+
+BasicGameStatsRecord_t *BasicGameStats_t::FindOrAddRecordForMap( char const *mapname )
+{
+ int idx = m_MapTotals.Find( mapname );
+ if ( idx == m_MapTotals.InvalidIndex() )
+ {
+ idx = m_MapTotals.Insert( mapname );
+ }
+
+ return &m_MapTotals[ idx ];
+}
+
+bool BasicGameStats_t::ParseFromBuffer( CUtlBuffer& buf, int iBufferStatsVersion )
+{
+ bool bret = true;
+
+ m_nSecondsToCompleteGame = buf.GetInt();
+ if ( m_nSecondsToCompleteGame < 0 || m_nSecondsToCompleteGame > 10000000 )
+ {
+ bret = false;
+ }
+
+ m_Summary.ParseFromBuffer( buf, iBufferStatsVersion );
+ int c = buf.GetInt();
+ if ( c > 1024 || c < 0 )
+ {
+ bret = false;
+ }
+
+ for ( int i = 0; i < c; ++i )
+ {
+ char mapname[ 256 ];
+ buf.GetString( mapname, sizeof( mapname ) );
+
+ BasicGameStatsRecord_t *rec = FindOrAddRecordForMap( mapname );
+ bool valid= rec->ParseFromBuffer( buf, iBufferStatsVersion );
+ if ( !valid )
+ {
+ bret = false;
+ }
+ }
+
+ if ( iBufferStatsVersion >= GAMESTATS_FILE_VERSION_OLD2 )
+ {
+ m_nHL2ChaptureUnlocked = (int)buf.GetChar();
+ m_bSteam = buf.GetChar() ? true : false;
+ }
+ if ( iBufferStatsVersion > GAMESTATS_FILE_VERSION_OLD2 )
+ {
+ m_bCyberCafe = buf.GetChar() ? true : false;
+ }
+ if ( iBufferStatsVersion > GAMESTATS_FILE_VERSION_OLD3 )
+ {
+ m_nDXLevel = (int)buf.GetShort();
+ }
+ return bret;
+}
+