summaryrefslogtreecommitdiff
path: root/game/server/tf/tf_objective_resource.cpp
diff options
context:
space:
mode:
authorFluorescentCIAAfricanAmerican <[email protected]>2020-04-22 12:56:21 -0400
committerFluorescentCIAAfricanAmerican <[email protected]>2020-04-22 12:56:21 -0400
commit3bf9df6b2785fa6d951086978a3e66f49427166a (patch)
tree2c0f1f0c63c4832882bc93814ebd2c2b1c6224e5 /game/server/tf/tf_objective_resource.cpp
downloadarchived-source-engine-2018-hl2-src-master.tar.xz
archived-source-engine-2018-hl2-src-master.zip
Diffstat (limited to 'game/server/tf/tf_objective_resource.cpp')
-rw-r--r--game/server/tf/tf_objective_resource.cpp359
1 files changed, 359 insertions, 0 deletions
diff --git a/game/server/tf/tf_objective_resource.cpp b/game/server/tf/tf_objective_resource.cpp
new file mode 100644
index 0000000..a7db279
--- /dev/null
+++ b/game/server/tf/tf_objective_resource.cpp
@@ -0,0 +1,359 @@
+//========= Copyright Valve Corporation, All rights reserved. ============//
+//
+// Purpose: Entity that propagates general data needed by clients for every player.
+//
+// $NoKeywords: $
+//=============================================================================//
+#include "cbase.h"
+#include "tf_objective_resource.h"
+#include "shareddefs.h"
+#include "player_vs_environment/tf_population_manager.h"
+#include <coordsize.h>
+
+// memdbgon must be the last include file in a .cpp file!!!
+#include "tier0/memdbgon.h"
+
+void SendProxy_String_tToString( const SendProp *pProp, const void *pStruct, const void *pData, DVariant *pOut, int iElement, int objectID );
+
+// Datatable
+IMPLEMENT_SERVERCLASS_ST( CTFObjectiveResource, DT_TFObjectiveResource )
+ SendPropInt( SENDINFO(m_nMannVsMachineMaxWaveCount), 9, SPROP_UNSIGNED ),
+ SendPropInt( SENDINFO(m_nMannVsMachineWaveCount), 9, SPROP_UNSIGNED ),
+ SendPropInt( SENDINFO(m_nMannVsMachineWaveEnemyCount), 16, SPROP_UNSIGNED ),
+ SendPropInt( SENDINFO(m_nMvMWorldMoney), 16, SPROP_UNSIGNED ),
+ SendPropFloat( SENDINFO( m_flMannVsMachineNextWaveTime ) ),
+ SendPropBool( SENDINFO( m_bMannVsMachineBetweenWaves ) ),
+ SendPropInt( SENDINFO(m_nFlagCarrierUpgradeLevel), 4, SPROP_UNSIGNED ),
+ SendPropFloat( SENDINFO( m_flMvMBaseBombUpgradeTime ) ),
+ SendPropFloat( SENDINFO( m_flMvMNextBombUpgradeTime ) ),
+ SendPropStringT ( SENDINFO( m_iszMvMPopfileName ) ),
+ SendPropInt( SENDINFO(m_iChallengeIndex), 16 ),
+ SendPropInt( SENDINFO(m_nMvMEventPopfileType), 4, SPROP_UNSIGNED ),
+
+ SendPropArray3( SENDINFO_ARRAY3( m_nMannVsMachineWaveClassCounts ), SendPropInt( SENDINFO_ARRAY( m_nMannVsMachineWaveClassCounts ), 16 ) ),
+ SendPropArray( SendPropString( SENDINFO_ARRAY( m_iszMannVsMachineWaveClassNames ), 0, SendProxy_String_tToString ), m_iszMannVsMachineWaveClassNames ),
+ SendPropArray3( SENDINFO_ARRAY3( m_nMannVsMachineWaveClassFlags ), SendPropInt( SENDINFO_ARRAY( m_nMannVsMachineWaveClassFlags ), 10, SPROP_UNSIGNED ) ),
+
+ SendPropArray3( SENDINFO_ARRAY3( m_nMannVsMachineWaveClassCounts2 ), SendPropInt( SENDINFO_ARRAY( m_nMannVsMachineWaveClassCounts2 ), 16 ) ),
+ SendPropArray( SendPropString( SENDINFO_ARRAY( m_iszMannVsMachineWaveClassNames2 ), 0, SendProxy_String_tToString ), m_iszMannVsMachineWaveClassNames2 ),
+ SendPropArray3( SENDINFO_ARRAY3( m_nMannVsMachineWaveClassFlags2 ), SendPropInt( SENDINFO_ARRAY( m_nMannVsMachineWaveClassFlags2 ), 10, SPROP_UNSIGNED ) ),
+
+ SendPropArray3( SENDINFO_ARRAY3( m_bMannVsMachineWaveClassActive ), SendPropBool( SENDINFO_ARRAY( m_bMannVsMachineWaveClassActive ) ) ),
+ SendPropArray3( SENDINFO_ARRAY3( m_bMannVsMachineWaveClassActive2 ), SendPropBool( SENDINFO_ARRAY( m_bMannVsMachineWaveClassActive2 ) ) ),
+END_SEND_TABLE()
+
+
+BEGIN_DATADESC( CTFObjectiveResource )
+ DEFINE_FIELD( m_nMannVsMachineMaxWaveCount, FIELD_INTEGER ),
+ DEFINE_FIELD( m_nMannVsMachineWaveCount, FIELD_INTEGER ),
+ DEFINE_FIELD( m_nMannVsMachineWaveEnemyCount, FIELD_INTEGER ),
+ DEFINE_FIELD( m_nMvMWorldMoney, FIELD_INTEGER ),
+ DEFINE_FIELD( m_flMannVsMachineNextWaveTime, FIELD_TIME ),
+ DEFINE_FIELD( m_bMannVsMachineBetweenWaves, FIELD_BOOLEAN ),
+
+ DEFINE_AUTO_ARRAY( m_nMannVsMachineWaveClassCounts, FIELD_INTEGER ),
+ DEFINE_AUTO_ARRAY( m_iszMannVsMachineWaveClassNames, FIELD_STRING ),
+ DEFINE_AUTO_ARRAY( m_nMannVsMachineWaveClassFlags, FIELD_INTEGER ),
+
+ DEFINE_AUTO_ARRAY( m_nMannVsMachineWaveClassCounts2, FIELD_INTEGER ),
+ DEFINE_AUTO_ARRAY( m_iszMannVsMachineWaveClassNames2, FIELD_STRING ),
+ DEFINE_AUTO_ARRAY( m_nMannVsMachineWaveClassFlags2, FIELD_INTEGER ),
+
+ DEFINE_AUTO_ARRAY( m_bMannVsMachineWaveClassActive, FIELD_BOOLEAN ),
+ DEFINE_AUTO_ARRAY( m_bMannVsMachineWaveClassActive2, FIELD_BOOLEAN ),
+END_DATADESC()
+
+
+LINK_ENTITY_TO_CLASS( tf_objective_resource, CTFObjectiveResource );
+
+//-----------------------------------------------------------------------------
+// Purpose:
+//-----------------------------------------------------------------------------
+CTFObjectiveResource::CTFObjectiveResource()
+{
+ m_nMannVsMachineMaxWaveCount = 0;
+ m_nMannVsMachineWaveCount = 0;
+ m_nMannVsMachineWaveEnemyCount = 0;
+ m_nMvMWorldMoney = 0;
+ m_flMannVsMachineNextWaveTime = 0;
+ m_bMannVsMachineBetweenWaves = false;
+ m_nFlagCarrierUpgradeLevel = 0;
+ m_flMvMBaseBombUpgradeTime = 0;
+ m_flMvMNextBombUpgradeTime = 0;
+ m_iChallengeIndex = -1;
+ SetMvMPopfileName( MAKE_STRING( "" ) );
+ m_nMvMEventPopfileType.Set( MVM_EVENT_POPFILE_NONE );
+
+ int i = 0;
+ for ( i = 0 ; i < m_nMannVsMachineWaveClassCounts.Count() ; ++i )
+ {
+ m_nMannVsMachineWaveClassCounts.GetForModify( i ) = 0;
+ }
+
+ for ( i = 0 ; i < m_nMannVsMachineWaveClassCounts2.Count() ; ++i )
+ {
+ m_nMannVsMachineWaveClassCounts2.GetForModify( i ) = 0;
+ }
+
+ for ( i = 0 ; i < m_nMannVsMachineWaveClassFlags.Count() ; ++i )
+ {
+ m_nMannVsMachineWaveClassFlags.GetForModify( i ) = MVM_CLASS_FLAG_NONE;
+ }
+
+ for ( i = 0 ; i < m_nMannVsMachineWaveClassFlags2.Count() ; ++i )
+ {
+ m_nMannVsMachineWaveClassFlags2.GetForModify( i ) = MVM_CLASS_FLAG_NONE;
+ }
+
+ for ( i = 0 ; i < m_iszMannVsMachineWaveClassNames.Count() ; ++i )
+ {
+ m_iszMannVsMachineWaveClassNames.GetForModify( i ) = NULL_STRING;
+ }
+
+ for ( i = 0 ; i < m_iszMannVsMachineWaveClassNames2.Count() ; ++i )
+ {
+ m_iszMannVsMachineWaveClassNames2.GetForModify( i ) = NULL_STRING;
+ }
+
+ for ( i = 0 ; i < m_bMannVsMachineWaveClassActive.Count() ; ++i )
+ {
+ m_bMannVsMachineWaveClassActive.GetForModify( i ) = false;
+ }
+
+ for ( i = 0 ; i < m_bMannVsMachineWaveClassActive2.Count() ; ++i )
+ {
+ m_bMannVsMachineWaveClassActive2.GetForModify( i ) = false;
+ }
+
+ m_teleporterString = AllocPooledString( "teleporter" );
+}
+
+//-----------------------------------------------------------------------------
+// Purpose:
+//-----------------------------------------------------------------------------
+CTFObjectiveResource::~CTFObjectiveResource()
+{
+}
+
+//-----------------------------------------------------------------------------
+// Purpose:
+//-----------------------------------------------------------------------------
+void CTFObjectiveResource::Spawn( void )
+{
+ BaseClass::Spawn();
+}
+
+//-----------------------------------------------------------------------------
+// Purpose:
+//-----------------------------------------------------------------------------
+void CTFObjectiveResource::ClearMannVsMachineWaveClassFlags( void )
+{
+ int i = 0;
+ for ( i = 0 ; i < m_nMannVsMachineWaveClassFlags.Count() ; ++i )
+ {
+ m_nMannVsMachineWaveClassFlags.GetForModify( i ) = MVM_CLASS_FLAG_NONE;
+ }
+
+ for ( i = 0 ; i < m_nMannVsMachineWaveClassFlags2.Count() ; ++i )
+ {
+ m_nMannVsMachineWaveClassFlags2.GetForModify( i ) = MVM_CLASS_FLAG_NONE;
+ }
+}
+
+//-----------------------------------------------------------------------------
+// Purpose:
+//-----------------------------------------------------------------------------
+void CTFObjectiveResource::AddMannVsMachineWaveClassFlags( int nIndex, unsigned int iFlags )
+{
+ if ( nIndex < m_nMannVsMachineWaveClassFlags.Count() )
+ {
+ m_nMannVsMachineWaveClassFlags.GetForModify( nIndex ) |= iFlags;
+ return;
+ }
+ nIndex -= m_nMannVsMachineWaveClassFlags.Count();
+
+ if ( nIndex < m_nMannVsMachineWaveClassFlags2.Count() )
+ {
+ m_nMannVsMachineWaveClassFlags2.GetForModify( nIndex ) |= iFlags;
+ }
+}
+
+//-----------------------------------------------------------------------------
+// Purpose:
+//-----------------------------------------------------------------------------
+int CTFObjectiveResource::GetMannVsMachineWaveClassCount( int nIndex )
+{
+ if ( nIndex < m_nMannVsMachineWaveClassCounts.Count() )
+ {
+ return m_nMannVsMachineWaveClassCounts[ nIndex ];
+ }
+ nIndex -= m_nMannVsMachineWaveClassCounts.Count();
+
+ if ( nIndex < m_nMannVsMachineWaveClassCounts2.Count() )
+ {
+ return m_nMannVsMachineWaveClassCounts2[ nIndex ];
+ }
+
+ return 0;
+}
+
+//-----------------------------------------------------------------------------
+// Purpose:
+//-----------------------------------------------------------------------------
+void CTFObjectiveResource::SetMannVsMachineWaveClassActive( string_t iszClassIconName, bool bActive /*= true*/ )
+{
+ for ( int i = 0 ; i < m_iszMannVsMachineWaveClassNames.Count() ; ++i )
+ {
+ if ( ( m_iszMannVsMachineWaveClassNames[ i ] == iszClassIconName ) )
+ {
+ m_bMannVsMachineWaveClassActive.GetForModify( i ) = bActive;
+ return;
+ }
+ }
+
+ for ( int i = 0 ; i < m_iszMannVsMachineWaveClassNames2.Count() ; ++i )
+ {
+ if ( ( m_iszMannVsMachineWaveClassNames2[ i ] == iszClassIconName ) )
+ {
+ m_bMannVsMachineWaveClassActive2.GetForModify( i ) = bActive;
+ return;
+ }
+ }
+}
+
+//-----------------------------------------------------------------------------
+// Purpose:
+//-----------------------------------------------------------------------------
+void CTFObjectiveResource::SetMannVsMachineWaveClassCount( int nIndex, int nCount )
+{
+ if ( nIndex < m_nMannVsMachineWaveClassCounts.Count() )
+ {
+ m_nMannVsMachineWaveClassCounts.GetForModify( nIndex ) = nCount;
+ return;
+ }
+ nIndex -= m_nMannVsMachineWaveClassCounts.Count();
+
+ if ( nIndex < m_nMannVsMachineWaveClassCounts2.Count() )
+ {
+ m_nMannVsMachineWaveClassCounts2.GetForModify( nIndex ) = nCount;
+ }
+}
+
+//-----------------------------------------------------------------------------
+// Purpose:
+//-----------------------------------------------------------------------------
+void CTFObjectiveResource::SetMannVsMachineWaveClassName( int nIndex, string_t iszClassIconName )
+{
+ if ( nIndex < m_iszMannVsMachineWaveClassNames.Count() )
+ {
+ m_iszMannVsMachineWaveClassNames.GetForModify( nIndex ) = iszClassIconName;
+ return;
+ }
+ nIndex -= m_iszMannVsMachineWaveClassNames.Count();
+
+ if ( nIndex < m_iszMannVsMachineWaveClassNames2.Count() )
+ {
+ m_iszMannVsMachineWaveClassNames2.GetForModify( nIndex ) = iszClassIconName;
+ }
+}
+
+//-----------------------------------------------------------------------------
+// Purpose:
+//-----------------------------------------------------------------------------
+void CTFObjectiveResource::IncrementMannVsMachineWaveClassCount( string_t iszClassIconName, unsigned int iFlags )
+{
+ int i = 0;
+ for ( i = 0 ; i < m_iszMannVsMachineWaveClassNames.Count() ; ++i )
+ {
+ if ( ( m_iszMannVsMachineWaveClassNames[ i ] == iszClassIconName ) && ( m_nMannVsMachineWaveClassFlags[ i ] & iFlags ) )
+ {
+ m_nMannVsMachineWaveClassCounts.GetForModify( i ) += 1;
+
+ if ( m_nMannVsMachineWaveClassCounts[ i ] <= 0 )
+ {
+ m_nMannVsMachineWaveClassCounts.GetForModify( i ) = 1;
+ }
+
+ return;
+ }
+ }
+
+ for ( i = 0 ; i < m_iszMannVsMachineWaveClassNames2.Count() ; ++i )
+ {
+ if ( ( m_iszMannVsMachineWaveClassNames2[ i ] == iszClassIconName ) && ( m_nMannVsMachineWaveClassFlags2[ i ] & iFlags ) )
+ {
+ m_nMannVsMachineWaveClassCounts2.GetForModify( i ) += 1;
+
+ if ( m_nMannVsMachineWaveClassCounts2[ i ] <= 0 )
+ {
+ m_nMannVsMachineWaveClassCounts2.GetForModify( i ) = 1;
+ }
+
+ return;
+ }
+ }
+}
+
+//-----------------------------------------------------------------------------
+// Purpose:
+//-----------------------------------------------------------------------------
+void CTFObjectiveResource::DecrementMannVsMachineWaveClassCount( string_t iszClassIconName, unsigned int iFlags )
+{
+ int i = 0;
+ for ( i = 0 ; i < m_iszMannVsMachineWaveClassNames.Count() && i < m_nMannVsMachineWaveClassFlags.Count() && i < m_nMannVsMachineWaveClassCounts.Count() ; ++i )
+ {
+ if ( ( m_iszMannVsMachineWaveClassNames[ i ] == iszClassIconName ) && ( m_nMannVsMachineWaveClassFlags[ i ] & iFlags ) )
+ {
+ m_nMannVsMachineWaveClassCounts.GetForModify( i ) -= 1;
+
+ if ( m_nMannVsMachineWaveClassCounts[ i ] < 0 )
+ {
+ m_nMannVsMachineWaveClassCounts.GetForModify( i ) = 0;
+ }
+
+ if ( !m_nMannVsMachineWaveClassCounts[ i ] )
+ {
+ SetMannVsMachineWaveClassActive( iszClassIconName, false );
+ }
+
+ return;
+ }
+ }
+
+ for ( i = 0 ; i < m_iszMannVsMachineWaveClassNames2.Count() && i < m_nMannVsMachineWaveClassFlags2.Count() && i < m_nMannVsMachineWaveClassCounts2.Count() ; ++i )
+ {
+ if ( ( m_iszMannVsMachineWaveClassNames2[ i ] == iszClassIconName ) && ( m_nMannVsMachineWaveClassFlags2[ i ] & iFlags ) )
+ {
+ m_nMannVsMachineWaveClassCounts2.GetForModify( i ) -= 1;
+
+ if ( m_nMannVsMachineWaveClassCounts2[ i ] < 0 )
+ {
+ m_nMannVsMachineWaveClassCounts2.GetForModify( i ) = 0;
+ }
+
+ if ( !m_nMannVsMachineWaveClassCounts2[ i ] )
+ {
+ SetMannVsMachineWaveClassActive( iszClassIconName, false );
+ }
+
+ return;
+ }
+ }
+}
+
+//-----------------------------------------------------------------------------
+// Purpose:
+//-----------------------------------------------------------------------------
+void CTFObjectiveResource::IncrementTeleporterCount()
+{
+ IncrementMannVsMachineWaveClassCount( m_teleporterString, MVM_CLASS_FLAG_MISSION );
+}
+
+
+//-----------------------------------------------------------------------------
+// Purpose:
+//-----------------------------------------------------------------------------
+void CTFObjectiveResource::DecrementTeleporterCount()
+{
+ DecrementMannVsMachineWaveClassCount( m_teleporterString, MVM_CLASS_FLAG_MISSION );
+}