summaryrefslogtreecommitdiff
path: root/game/server/dod/dod_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/dod/dod_objective_resource.cpp
downloadarchived-source-engine-2018-hl2-src-3bf9df6b2785fa6d951086978a3e66f49427166a.tar.xz
archived-source-engine-2018-hl2-src-3bf9df6b2785fa6d951086978a3e66f49427166a.zip
Diffstat (limited to 'game/server/dod/dod_objective_resource.cpp')
-rw-r--r--game/server/dod/dod_objective_resource.cpp226
1 files changed, 226 insertions, 0 deletions
diff --git a/game/server/dod/dod_objective_resource.cpp b/game/server/dod/dod_objective_resource.cpp
new file mode 100644
index 0000000..c2e0825
--- /dev/null
+++ b/game/server/dod/dod_objective_resource.cpp
@@ -0,0 +1,226 @@
+//========= Copyright Valve Corporation, All rights reserved. ============//
+//
+// Purpose: Entity that propagates general data needed by clients for every player.
+//
+// $NoKeywords: $
+//=============================================================================//
+#include "cbase.h"
+#include "dod_objective_resource.h"
+#include "shareddefs.h"
+#include <coordsize.h>
+
+// memdbgon must be the last include file in a .cpp file!!!
+#include "tier0/memdbgon.h"
+
+// Datatable
+IMPLEMENT_SERVERCLASS_ST_NOBASE(CDODObjectiveResource, DT_DODObjectiveResource)
+
+ SendPropInt( SENDINFO(m_iNumControlPoints), 4, SPROP_UNSIGNED ),
+
+ // data variables
+ SendPropArray( SendPropVector( SENDINFO_ARRAY(m_vCPPositions), -1, SPROP_COORD), m_vCPPositions ),
+ SendPropArray3( SENDINFO_ARRAY3(m_bCPIsVisible), SendPropInt( SENDINFO_ARRAY(m_bCPIsVisible), 1, SPROP_UNSIGNED ) ),
+ SendPropArray3( SENDINFO_ARRAY3(m_iAlliesIcons), SendPropInt( SENDINFO_ARRAY(m_iAlliesIcons), 8, SPROP_UNSIGNED ) ),
+ SendPropArray3( SENDINFO_ARRAY3(m_iAxisIcons), SendPropInt( SENDINFO_ARRAY(m_iAxisIcons), 8, SPROP_UNSIGNED ) ),
+ SendPropArray3( SENDINFO_ARRAY3(m_iNeutralIcons), SendPropInt( SENDINFO_ARRAY(m_iNeutralIcons), 8, SPROP_UNSIGNED ) ),
+ SendPropArray3( SENDINFO_ARRAY3(m_iTimerCapIcons), SendPropInt( SENDINFO_ARRAY(m_iTimerCapIcons), 8, SPROP_UNSIGNED ) ),
+ SendPropArray3( SENDINFO_ARRAY3(m_iBombedIcons), SendPropInt( SENDINFO_ARRAY(m_iBombedIcons), 8, SPROP_UNSIGNED ) ),
+ SendPropArray3( SENDINFO_ARRAY3(m_iAlliesReqCappers), SendPropInt( SENDINFO_ARRAY(m_iAlliesReqCappers), 4, SPROP_UNSIGNED ) ),
+ SendPropArray3( SENDINFO_ARRAY3(m_iAxisReqCappers), SendPropInt( SENDINFO_ARRAY(m_iAxisReqCappers), 4, SPROP_UNSIGNED ) ),
+ SendPropArray3( SENDINFO_ARRAY3(m_flAlliesCapTime), SendPropTime( SENDINFO_ARRAY(m_flAlliesCapTime) ) ),
+ SendPropArray3( SENDINFO_ARRAY3(m_flAxisCapTime), SendPropTime( SENDINFO_ARRAY(m_flAxisCapTime) ) ),
+
+ SendPropArray3( SENDINFO_ARRAY3(m_bBombPlanted), SendPropInt( SENDINFO_ARRAY(m_bBombPlanted), 1, SPROP_UNSIGNED ) ),
+ SendPropArray3( SENDINFO_ARRAY3(m_iBombsRequired), SendPropInt( SENDINFO_ARRAY(m_iBombsRequired), 2, SPROP_UNSIGNED ) ),
+ SendPropArray3( SENDINFO_ARRAY3(m_iBombsRemaining), SendPropInt( SENDINFO_ARRAY(m_iBombsRemaining), 2, SPROP_UNSIGNED ) ),
+ SendPropArray3( SENDINFO_ARRAY3(m_bBombBeingDefused), SendPropInt( SENDINFO_ARRAY(m_bBombBeingDefused), 1, SPROP_UNSIGNED ) ),
+
+ // state variables
+ SendPropArray3( SENDINFO_ARRAY3(m_iNumAllies), SendPropInt( SENDINFO_ARRAY(m_iNumAllies), 4, SPROP_UNSIGNED ) ),
+ SendPropArray3( SENDINFO_ARRAY3(m_iNumAxis), SendPropInt( SENDINFO_ARRAY(m_iNumAxis), 4, SPROP_UNSIGNED ) ),
+ SendPropArray3( SENDINFO_ARRAY3(m_iCappingTeam), SendPropInt( SENDINFO_ARRAY(m_iCappingTeam), 4, SPROP_UNSIGNED ) ),
+ SendPropArray3( SENDINFO_ARRAY3(m_iOwner), SendPropInt( SENDINFO_ARRAY(m_iOwner), 4, SPROP_UNSIGNED ) ),
+
+END_SEND_TABLE()
+
+
+BEGIN_DATADESC( CDODObjectiveResource )
+END_DATADESC()
+
+
+LINK_ENTITY_TO_CLASS( dod_objective_resource, CDODObjectiveResource );
+
+CDODObjectiveResource *g_pObjectiveResource;
+
+//-----------------------------------------------------------------------------
+// Purpose:
+//-----------------------------------------------------------------------------
+void CDODObjectiveResource::Spawn( void )
+{
+ m_iNumControlPoints = 0;
+
+ for ( int i=0; i < MAX_CONTROL_POINTS; i++ )
+ {
+ // data variables
+ m_vCPPositions.Set( i, vec3_origin );
+ m_bCPIsVisible.Set( i, true );
+ m_iAlliesIcons.Set( i, 0 );
+ m_iAxisIcons.Set( i, 0 );
+ m_iNeutralIcons.Set( i, 0 );
+ m_iTimerCapIcons.Set( i, 0 );
+ m_iBombedIcons.Set( i, 0 );
+ m_iAlliesReqCappers.Set( i, 0 );
+ m_iAxisReqCappers.Set( i, 0 );
+ m_flAlliesCapTime.Set( i, 0.0f );
+ m_flAxisCapTime.Set( i, 0.0f );
+ m_bBombPlanted.Set( i, 0 );
+ m_iBombsRequired.Set( i, 0 );
+ m_iBombsRemaining.Set( i, 0 );
+ m_bBombBeingDefused.Set( i, 0 );
+
+ // state variables
+ m_iNumAllies.Set( i, 0 );
+ m_iNumAxis.Set( i, 0 );
+ m_iCappingTeam.Set( i, TEAM_UNASSIGNED );
+ m_iOwner.Set( i, TEAM_UNASSIGNED );
+ }
+
+}
+
+//-----------------------------------------------------------------------------
+// Purpose: The objective resource is always transmitted to clients
+//-----------------------------------------------------------------------------
+int CDODObjectiveResource::UpdateTransmitState()
+{
+ // ALWAYS transmit to all clients.
+ return SetTransmitState( FL_EDICT_ALWAYS );
+}
+
+//-----------------------------------------------------------------------------
+// Purpose: Round is starting, reset state
+//-----------------------------------------------------------------------------
+void CDODObjectiveResource::ResetControlPoints( void )
+{
+ for ( int i=0; i < MAX_CONTROL_POINTS; i++ )
+ {
+ m_iNumAllies.Set( i, 0 );
+ m_iNumAxis.Set( i, 0 );
+ m_iCappingTeam.Set( i, TEAM_UNASSIGNED );
+
+ m_bBombPlanted.Set( i, 0 );
+ m_bBombBeingDefused.Set( i, 0 );
+ }
+}
+
+//-----------------------------------------------------------------------------
+// Purpose: Data setting functions
+//-----------------------------------------------------------------------------
+void CDODObjectiveResource::SetNumControlPoints( int num )
+{
+ Assert( num <= MAX_CONTROL_POINTS );
+ m_iNumControlPoints = num;
+}
+
+void CDODObjectiveResource::SetCPIcons( int index, int iAlliesIcon, int iAxisIcon, int iNeutralIcon, int iTimerCapIcon, int iBombedIcon )
+{
+ AssertValidIndex(index);
+ m_iAlliesIcons.Set( index, iAlliesIcon);
+ m_iAxisIcons.Set( index, iAxisIcon );
+ m_iNeutralIcons.Set( index, iNeutralIcon );
+ m_iTimerCapIcons.Set( index, iTimerCapIcon );
+ m_iBombedIcons.Set( index, iBombedIcon );
+}
+
+void CDODObjectiveResource::SetCPPosition( int index, const Vector& vPosition )
+{
+ AssertValidIndex(index);
+ m_vCPPositions.Set( index, vPosition );
+}
+
+void CDODObjectiveResource::SetCPVisible( int index, bool bVisible )
+{
+ AssertValidIndex(index);
+ m_bCPIsVisible.Set( index, bVisible );
+}
+
+void CDODObjectiveResource::SetCPRequiredCappers( int index, int iReqAllies, int iReqAxis )
+{
+ AssertValidIndex(index);
+ m_iAlliesReqCappers.Set( index, iReqAllies );
+ m_iAxisReqCappers.Set( index, iReqAxis );
+}
+
+void CDODObjectiveResource::SetCPCapTime( int index, float flAlliesCapTime, float flAxisCapTime )
+{
+ AssertValidIndex(index);
+ m_flAlliesCapTime.Set( index, flAlliesCapTime );
+ m_flAxisCapTime.Set( index, flAxisCapTime );
+}
+
+//-----------------------------------------------------------------------------
+// Purpose: Data setting functions
+//-----------------------------------------------------------------------------
+void CDODObjectiveResource::SetNumPlayers( int index, int team, int iNumPlayers )
+{
+ AssertValidIndex(index);
+
+ switch( team )
+ {
+ case TEAM_ALLIES:
+ m_iNumAllies.Set( index, iNumPlayers );
+ break;
+
+ case TEAM_AXIS:
+ m_iNumAxis.Set( index, iNumPlayers );
+ break;
+
+ default:
+ Assert( 0 );
+ break;
+ }
+}
+
+void CDODObjectiveResource::StartCap( int index, int team )
+{
+ AssertValidIndex(index);
+ m_iCappingTeam.Set( index, team );
+}
+
+void CDODObjectiveResource::SetOwningTeam( int index, int team )
+{
+ AssertValidIndex(index);
+ m_iOwner.Set( index, team );
+
+ // clear the capper
+ m_iCappingTeam.Set( index, TEAM_UNASSIGNED );
+}
+
+void CDODObjectiveResource::SetCappingTeam( int index, int team )
+{
+ AssertValidIndex(index);
+ m_iCappingTeam.Set( index, team );
+}
+
+void CDODObjectiveResource::SetBombPlanted( int index, bool bPlanted )
+{
+ AssertValidIndex(index);
+ m_bBombPlanted.Set( index, bPlanted );
+}
+
+void CDODObjectiveResource::SetBombBeingDefused( int index, bool bBeingDefused )
+{
+ AssertValidIndex(index);
+ m_bBombBeingDefused.Set( index, bBeingDefused );
+}
+
+void CDODObjectiveResource::SetBombsRequired( int index, int iBombsRequired )
+{
+ AssertValidIndex(index);
+ m_iBombsRequired.Set( index, iBombsRequired );
+}
+
+void CDODObjectiveResource::SetBombsRemaining( int index, int iBombsRemaining )
+{
+ AssertValidIndex(index);
+ m_iBombsRemaining.Set( index, iBombsRemaining );
+}