|
|
//========= 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 ); }
|