diff options
Diffstat (limited to 'game/shared/tf/tf_duel_summary.cpp')
| -rw-r--r-- | game/shared/tf/tf_duel_summary.cpp | 90 |
1 files changed, 90 insertions, 0 deletions
diff --git a/game/shared/tf/tf_duel_summary.cpp b/game/shared/tf/tf_duel_summary.cpp new file mode 100644 index 0000000..5054442 --- /dev/null +++ b/game/shared/tf/tf_duel_summary.cpp @@ -0,0 +1,90 @@ +//========= Copyright Valve Corporation, All rights reserved. ============// +// +// Purpose: +// +// $NoKeywords: $ +//=============================================================================// + +#include "cbase.h" + +#include "tf_duel_summary.h" +#include "gcsdk/enumutils.h" + +using namespace GCSDK; + +#ifdef GC +IMPLEMENT_CLASS_MEMPOOL( CTFDuelSummary, 1000, UTLMEMORYPOOL_GROW_SLOW ); + +// memdbgon must be the last include file in a .cpp file!!! +#include "tier0/memdbgon.h" + + +bool CTFDuelSummary::BYieldingAddInsertToTransaction( GCSDK::CSQLAccess & sqlAccess ) +{ + CSchDuelSummary schDuelSummary; + WriteToRecord( &schDuelSummary ); + return CSchemaSharedObjectHelper::BYieldingAddInsertToTransaction( sqlAccess, &schDuelSummary ); +} + +bool CTFDuelSummary::BYieldingAddWriteToTransaction( GCSDK::CSQLAccess & sqlAccess, const CUtlVector< int > &fields ) +{ + CSchDuelSummary schDuelSummary; + WriteToRecord( &schDuelSummary ); + CColumnSet csDatabaseDirty( schDuelSummary.GetPSchema()->GetRecordInfo() ); + csDatabaseDirty.MakeEmpty(); + FOR_EACH_VEC( fields, nField ) + { + switch ( fields[nField] ) + { + case CSOTFDuelSummary::kLastDuelAccountIdFieldNumber: csDatabaseDirty.BAddColumn( CSchDuelSummary::k_iField_unLastDuelAccountID ); break; + case CSOTFDuelSummary::kLastDuelTimestampFieldNumber: csDatabaseDirty.BAddColumn( CSchDuelSummary::k_iField_rtLastDuelTimestamp ); break; + case CSOTFDuelSummary::kLastDuelStatusFieldNumber: csDatabaseDirty.BAddColumn( CSchDuelSummary::k_iField_eLastDuelStatus ); break; + case CSOTFDuelSummary::kDuelLossesFieldNumber: csDatabaseDirty.BAddColumn( CSchDuelSummary::k_iField_unDuelLosses ); break; + case CSOTFDuelSummary::kDuelWinsFieldNumber: csDatabaseDirty.BAddColumn( CSchDuelSummary::k_iField_unDuelWins ); break; + } + } + return CSchemaSharedObjectHelper::BYieldingAddWriteToTransaction( sqlAccess, &schDuelSummary, csDatabaseDirty ); +} + +bool CTFDuelSummary::BYieldingAddRemoveToTransaction( GCSDK::CSQLAccess & sqlAccess ) +{ + CSchDuelSummary schDuelSummary; + WriteToRecord( &schDuelSummary ); + return CSchemaSharedObjectHelper::BYieldingAddRemoveToTransaction( sqlAccess, &schDuelSummary ); +} + +void CTFDuelSummary::WriteToRecord( CSchDuelSummary *pDuelSummary ) const +{ + pDuelSummary->m_unAccountID = Obj().account_id(); + pDuelSummary->m_unDuelWins = Obj().duel_wins(); + pDuelSummary->m_unDuelLosses = Obj().duel_losses(); + pDuelSummary->m_unLastDuelAccountID = Obj().last_duel_account_id(); + pDuelSummary->m_rtLastDuelTimestamp = Obj().last_duel_timestamp(); + pDuelSummary->m_eLastDuelStatus = Obj().last_duel_status(); +} + + +void CTFDuelSummary::ReadFromRecord( const CSchDuelSummary & duelSummary ) +{ + Obj().set_account_id( duelSummary.m_unAccountID ); + Obj().set_duel_wins( duelSummary.m_unDuelWins ); + Obj().set_duel_losses( duelSummary.m_unDuelLosses ); + Obj().set_last_duel_account_id( duelSummary.m_unLastDuelAccountID ); + Obj().set_last_duel_timestamp( duelSummary.m_rtLastDuelTimestamp ); + Obj().set_last_duel_status( duelSummary.m_eLastDuelStatus ); + +} + +ENUMSTRINGS_START( eDuelEndReason ) +{ kDuelEndReason_DuelOver, "Complete" }, +{ kDuelEndReason_PlayerDisconnected, "Player Disconnected" }, +{ kDuelEndReason_PlayerSwappedTeams, "Player Swapped Teams" }, +{ kDuelEndReason_LevelShutdown, "Level Shutdown" }, +{ kDuelEndReason_ScoreTiedAtZero, "Tied" }, +{ kDuelEndReason_PlayerKicked, "Player Kicked" }, +{ kDuelEndReason_PlayerForceSwappedTeams, "Forced to Swap Teams" }, +{ kDuelEndReason_ScoreTied, "Tied" }, +ENUMSTRINGS_END( eDuelEndReason ) + + +#endif |