diff options
| author | Joe Ludwig <[email protected]> | 2013-06-26 15:22:04 -0700 |
|---|---|---|
| committer | Joe Ludwig <[email protected]> | 2013-06-26 15:22:04 -0700 |
| commit | 39ed87570bdb2f86969d4be821c94b722dc71179 (patch) | |
| tree | abc53757f75f40c80278e87650ea92808274aa59 /mp/src/game/server/GameStats_BasicStatsFunctions.cpp | |
| download | source-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.cpp | 183 |
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;
+}
+
|