diff options
Diffstat (limited to 'game/server/dod/dod_objective_resource.cpp')
| -rw-r--r-- | game/server/dod/dod_objective_resource.cpp | 226 |
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 ); +} |