diff options
| author | Jørgen P. Tjernø <[email protected]> | 2013-12-02 19:31:46 -0800 |
|---|---|---|
| committer | Jørgen P. Tjernø <[email protected]> | 2013-12-02 19:46:31 -0800 |
| commit | f56bb35301836e56582a575a75864392a0177875 (patch) | |
| tree | de61ddd39de3e7df52759711950b4c288592f0dc /mp/src/game/client/c_team.cpp | |
| parent | Mark some more files as text. (diff) | |
| download | source-sdk-2013-f56bb35301836e56582a575a75864392a0177875.tar.xz source-sdk-2013-f56bb35301836e56582a575a75864392a0177875.zip | |
Fix line endings. WHAMMY.
Diffstat (limited to 'mp/src/game/client/c_team.cpp')
| -rw-r--r-- | mp/src/game/client/c_team.cpp | 510 |
1 files changed, 255 insertions, 255 deletions
diff --git a/mp/src/game/client/c_team.cpp b/mp/src/game/client/c_team.cpp index 94373b5f..ba688cc7 100644 --- a/mp/src/game/client/c_team.cpp +++ b/mp/src/game/client/c_team.cpp @@ -1,256 +1,256 @@ -//========= Copyright Valve Corporation, All rights reserved. ============//
-//
-// Purpose: Client side CTeam class
-//
-// $NoKeywords: $
-//=============================================================================//
-#include "cbase.h"
-#include "c_team.h"
-
-// memdbgon must be the last include file in a .cpp file!!!
-#include "tier0/memdbgon.h"
-
-//-----------------------------------------------------------------------------
-// Purpose: RecvProxy that converts the Team's player UtlVector to entindexes
-//-----------------------------------------------------------------------------
-void RecvProxy_PlayerList( const CRecvProxyData *pData, void *pStruct, void *pOut )
-{
- C_Team *pTeam = (C_Team*)pOut;
- pTeam->m_aPlayers[pData->m_iElement] = pData->m_Value.m_Int;
-}
-
-
-void RecvProxyArrayLength_PlayerArray( void *pStruct, int objectID, int currentArrayLength )
-{
- C_Team *pTeam = (C_Team*)pStruct;
-
- if ( pTeam->m_aPlayers.Size() != currentArrayLength )
- pTeam->m_aPlayers.SetSize( currentArrayLength );
-}
-
-
-IMPLEMENT_CLIENTCLASS_DT_NOBASE(C_Team, DT_Team, CTeam)
- RecvPropInt( RECVINFO(m_iTeamNum)),
- RecvPropInt( RECVINFO(m_iScore)),
- RecvPropInt( RECVINFO(m_iRoundsWon) ),
- RecvPropString( RECVINFO(m_szTeamname)),
-
- RecvPropArray2(
- RecvProxyArrayLength_PlayerArray,
- RecvPropInt( "player_array_element", 0, SIZEOF_IGNORE, 0, RecvProxy_PlayerList ),
- MAX_PLAYERS,
- 0,
- "player_array"
- )
-END_RECV_TABLE()
-
-BEGIN_PREDICTION_DATA( C_Team )
- DEFINE_PRED_ARRAY( m_szTeamname, FIELD_CHARACTER, MAX_TEAM_NAME_LENGTH, FTYPEDESC_PRIVATE ),
- DEFINE_PRED_FIELD( m_iScore, FIELD_INTEGER, FTYPEDESC_PRIVATE ),
- DEFINE_PRED_FIELD( m_iRoundsWon, FIELD_INTEGER, FTYPEDESC_PRIVATE ),
- DEFINE_PRED_FIELD( m_iDeaths, FIELD_INTEGER, FTYPEDESC_PRIVATE ),
- DEFINE_PRED_FIELD( m_iPing, FIELD_INTEGER, FTYPEDESC_PRIVATE ),
- DEFINE_PRED_FIELD( m_iPacketloss, FIELD_INTEGER, FTYPEDESC_PRIVATE ),
- DEFINE_PRED_FIELD( m_iTeamNum, FIELD_INTEGER, FTYPEDESC_PRIVATE ),
-END_PREDICTION_DATA();
-
-// Global list of client side team entities
-CUtlVector< C_Team * > g_Teams;
-
-//=================================================================================================
-// C_Team functionality
-
-//-----------------------------------------------------------------------------
-// Purpose:
-//-----------------------------------------------------------------------------
-C_Team::C_Team()
-{
- m_iScore = 0;
- m_iRoundsWon = 0;
- memset( m_szTeamname, 0, sizeof(m_szTeamname) );
-
- m_iDeaths = 0;
- m_iPing = 0;
- m_iPacketloss = 0;
-
- // Add myself to the global list of team entities
- g_Teams.AddToTail( this );
-}
-
-//-----------------------------------------------------------------------------
-// Purpose:
-//-----------------------------------------------------------------------------
-C_Team::~C_Team()
-{
- g_Teams.FindAndRemove( this );
-}
-
-
-void C_Team::RemoveAllPlayers()
-{
- m_aPlayers.RemoveAll();
-}
-
-void C_Team::PreDataUpdate( DataUpdateType_t updateType )
-{
- BaseClass::PreDataUpdate( updateType );
-}
-
-
-//-----------------------------------------------------------------------------
-// Gets the ith player on the team (may return NULL)
-//-----------------------------------------------------------------------------
-C_BasePlayer* C_Team::GetPlayer( int idx )
-{
- return (C_BasePlayer*)cl_entitylist->GetEnt(m_aPlayers[idx]);
-}
-
-
-int C_Team::GetTeamNumber() const
-{
- return m_iTeamNum;
-}
-
-
-//=================================================================================================
-// TEAM HANDLING
-//=================================================================================================
-// Purpose:
-//-----------------------------------------------------------------------------
-char *C_Team::Get_Name( void )
-{
- return m_szTeamname;
-}
-
-//-----------------------------------------------------------------------------
-// Purpose:
-//-----------------------------------------------------------------------------
-int C_Team::Get_Score( void )
-{
- return m_iScore;
-}
-
-//-----------------------------------------------------------------------------
-// Purpose:
-//-----------------------------------------------------------------------------
-int C_Team::Get_Deaths( void )
-{
- return m_iDeaths;
-}
-
-//-----------------------------------------------------------------------------
-// Purpose:
-//-----------------------------------------------------------------------------
-int C_Team::Get_Ping( void )
-{
- return m_iPing;
-}
-
-//-----------------------------------------------------------------------------
-// Purpose: Return the number of players in this team
-//-----------------------------------------------------------------------------
-int C_Team::Get_Number_Players( void )
-{
- return m_aPlayers.Size();
-}
-
-//-----------------------------------------------------------------------------
-// Purpose: Returns true if the specified player is on this team
-//-----------------------------------------------------------------------------
-bool C_Team::ContainsPlayer( int iPlayerIndex )
-{
- for (int i = 0; i < m_aPlayers.Size(); i++ )
- {
- if ( m_aPlayers[i] == iPlayerIndex )
- return true;
- }
-
- return false;
-}
-
-
-void C_Team::ClientThink()
-{
-}
-
-
-//=================================================================================================
-// GLOBAL CLIENT TEAM HANDLING
-//=================================================================================================
-// Purpose: Get the C_Team for the local player
-//-----------------------------------------------------------------------------
-C_Team *GetLocalTeam( void )
-{
- C_BasePlayer *player = C_BasePlayer::GetLocalPlayer();
-
- if ( !player )
- return NULL;
-
- return GetPlayersTeam( player->index );
-}
-
-//-----------------------------------------------------------------------------
-// Purpose: Get the C_Team for the specified team number
-//-----------------------------------------------------------------------------
-C_Team *GetGlobalTeam( int iTeamNumber )
-{
- for (int i = 0; i < g_Teams.Count(); i++ )
- {
- if ( g_Teams[i]->GetTeamNumber() == iTeamNumber )
- return g_Teams[i];
- }
-
- return NULL;
-}
-
-//-----------------------------------------------------------------------------
-// Purpose: Returns the number of teams you can access via GetGlobalTeam() (hence the +1)
-//-----------------------------------------------------------------------------
-int GetNumTeams()
-{
- return g_Teams.Count() + 1;
-}
-
-//-----------------------------------------------------------------------------
-// Purpose: Get the team of the specified player
-//-----------------------------------------------------------------------------
-C_Team *GetPlayersTeam( int iPlayerIndex )
-{
- for (int i = 0; i < g_Teams.Count(); i++ )
- {
- if ( g_Teams[i]->ContainsPlayer( iPlayerIndex ) )
- return g_Teams[i];
- }
-
- return NULL;
-}
-
-//-----------------------------------------------------------------------------
-// Purpose: Get the team of the specified player
-//-----------------------------------------------------------------------------
-C_Team *GetPlayersTeam( C_BasePlayer *pPlayer )
-{
- return GetPlayersTeam( pPlayer->entindex() );
-}
-
-//-----------------------------------------------------------------------------
-// Purpose: Returns true if the two specified players are on the same team
-//-----------------------------------------------------------------------------
-bool ArePlayersOnSameTeam( int iPlayerIndex1, int iPlayerIndex2 )
-{
- for (int i = 0; i < g_Teams.Count(); i++ )
- {
- if ( g_Teams[i]->ContainsPlayer( iPlayerIndex1 ) && g_Teams[i]->ContainsPlayer( iPlayerIndex2 ) )
- return true;
- }
-
- return false;
-}
-
-//-----------------------------------------------------------------------------
-// Purpose: Get the number of team managers
-//-----------------------------------------------------------------------------
-int GetNumberOfTeams( void )
-{
- return g_Teams.Size();
+//========= Copyright Valve Corporation, All rights reserved. ============// +// +// Purpose: Client side CTeam class +// +// $NoKeywords: $ +//=============================================================================// +#include "cbase.h" +#include "c_team.h" + +// memdbgon must be the last include file in a .cpp file!!! +#include "tier0/memdbgon.h" + +//----------------------------------------------------------------------------- +// Purpose: RecvProxy that converts the Team's player UtlVector to entindexes +//----------------------------------------------------------------------------- +void RecvProxy_PlayerList( const CRecvProxyData *pData, void *pStruct, void *pOut ) +{ + C_Team *pTeam = (C_Team*)pOut; + pTeam->m_aPlayers[pData->m_iElement] = pData->m_Value.m_Int; +} + + +void RecvProxyArrayLength_PlayerArray( void *pStruct, int objectID, int currentArrayLength ) +{ + C_Team *pTeam = (C_Team*)pStruct; + + if ( pTeam->m_aPlayers.Size() != currentArrayLength ) + pTeam->m_aPlayers.SetSize( currentArrayLength ); +} + + +IMPLEMENT_CLIENTCLASS_DT_NOBASE(C_Team, DT_Team, CTeam) + RecvPropInt( RECVINFO(m_iTeamNum)), + RecvPropInt( RECVINFO(m_iScore)), + RecvPropInt( RECVINFO(m_iRoundsWon) ), + RecvPropString( RECVINFO(m_szTeamname)), + + RecvPropArray2( + RecvProxyArrayLength_PlayerArray, + RecvPropInt( "player_array_element", 0, SIZEOF_IGNORE, 0, RecvProxy_PlayerList ), + MAX_PLAYERS, + 0, + "player_array" + ) +END_RECV_TABLE() + +BEGIN_PREDICTION_DATA( C_Team ) + DEFINE_PRED_ARRAY( m_szTeamname, FIELD_CHARACTER, MAX_TEAM_NAME_LENGTH, FTYPEDESC_PRIVATE ), + DEFINE_PRED_FIELD( m_iScore, FIELD_INTEGER, FTYPEDESC_PRIVATE ), + DEFINE_PRED_FIELD( m_iRoundsWon, FIELD_INTEGER, FTYPEDESC_PRIVATE ), + DEFINE_PRED_FIELD( m_iDeaths, FIELD_INTEGER, FTYPEDESC_PRIVATE ), + DEFINE_PRED_FIELD( m_iPing, FIELD_INTEGER, FTYPEDESC_PRIVATE ), + DEFINE_PRED_FIELD( m_iPacketloss, FIELD_INTEGER, FTYPEDESC_PRIVATE ), + DEFINE_PRED_FIELD( m_iTeamNum, FIELD_INTEGER, FTYPEDESC_PRIVATE ), +END_PREDICTION_DATA(); + +// Global list of client side team entities +CUtlVector< C_Team * > g_Teams; + +//================================================================================================= +// C_Team functionality + +//----------------------------------------------------------------------------- +// Purpose: +//----------------------------------------------------------------------------- +C_Team::C_Team() +{ + m_iScore = 0; + m_iRoundsWon = 0; + memset( m_szTeamname, 0, sizeof(m_szTeamname) ); + + m_iDeaths = 0; + m_iPing = 0; + m_iPacketloss = 0; + + // Add myself to the global list of team entities + g_Teams.AddToTail( this ); +} + +//----------------------------------------------------------------------------- +// Purpose: +//----------------------------------------------------------------------------- +C_Team::~C_Team() +{ + g_Teams.FindAndRemove( this ); +} + + +void C_Team::RemoveAllPlayers() +{ + m_aPlayers.RemoveAll(); +} + +void C_Team::PreDataUpdate( DataUpdateType_t updateType ) +{ + BaseClass::PreDataUpdate( updateType ); +} + + +//----------------------------------------------------------------------------- +// Gets the ith player on the team (may return NULL) +//----------------------------------------------------------------------------- +C_BasePlayer* C_Team::GetPlayer( int idx ) +{ + return (C_BasePlayer*)cl_entitylist->GetEnt(m_aPlayers[idx]); +} + + +int C_Team::GetTeamNumber() const +{ + return m_iTeamNum; +} + + +//================================================================================================= +// TEAM HANDLING +//================================================================================================= +// Purpose: +//----------------------------------------------------------------------------- +char *C_Team::Get_Name( void ) +{ + return m_szTeamname; +} + +//----------------------------------------------------------------------------- +// Purpose: +//----------------------------------------------------------------------------- +int C_Team::Get_Score( void ) +{ + return m_iScore; +} + +//----------------------------------------------------------------------------- +// Purpose: +//----------------------------------------------------------------------------- +int C_Team::Get_Deaths( void ) +{ + return m_iDeaths; +} + +//----------------------------------------------------------------------------- +// Purpose: +//----------------------------------------------------------------------------- +int C_Team::Get_Ping( void ) +{ + return m_iPing; +} + +//----------------------------------------------------------------------------- +// Purpose: Return the number of players in this team +//----------------------------------------------------------------------------- +int C_Team::Get_Number_Players( void ) +{ + return m_aPlayers.Size(); +} + +//----------------------------------------------------------------------------- +// Purpose: Returns true if the specified player is on this team +//----------------------------------------------------------------------------- +bool C_Team::ContainsPlayer( int iPlayerIndex ) +{ + for (int i = 0; i < m_aPlayers.Size(); i++ ) + { + if ( m_aPlayers[i] == iPlayerIndex ) + return true; + } + + return false; +} + + +void C_Team::ClientThink() +{ +} + + +//================================================================================================= +// GLOBAL CLIENT TEAM HANDLING +//================================================================================================= +// Purpose: Get the C_Team for the local player +//----------------------------------------------------------------------------- +C_Team *GetLocalTeam( void ) +{ + C_BasePlayer *player = C_BasePlayer::GetLocalPlayer(); + + if ( !player ) + return NULL; + + return GetPlayersTeam( player->index ); +} + +//----------------------------------------------------------------------------- +// Purpose: Get the C_Team for the specified team number +//----------------------------------------------------------------------------- +C_Team *GetGlobalTeam( int iTeamNumber ) +{ + for (int i = 0; i < g_Teams.Count(); i++ ) + { + if ( g_Teams[i]->GetTeamNumber() == iTeamNumber ) + return g_Teams[i]; + } + + return NULL; +} + +//----------------------------------------------------------------------------- +// Purpose: Returns the number of teams you can access via GetGlobalTeam() (hence the +1) +//----------------------------------------------------------------------------- +int GetNumTeams() +{ + return g_Teams.Count() + 1; +} + +//----------------------------------------------------------------------------- +// Purpose: Get the team of the specified player +//----------------------------------------------------------------------------- +C_Team *GetPlayersTeam( int iPlayerIndex ) +{ + for (int i = 0; i < g_Teams.Count(); i++ ) + { + if ( g_Teams[i]->ContainsPlayer( iPlayerIndex ) ) + return g_Teams[i]; + } + + return NULL; +} + +//----------------------------------------------------------------------------- +// Purpose: Get the team of the specified player +//----------------------------------------------------------------------------- +C_Team *GetPlayersTeam( C_BasePlayer *pPlayer ) +{ + return GetPlayersTeam( pPlayer->entindex() ); +} + +//----------------------------------------------------------------------------- +// Purpose: Returns true if the two specified players are on the same team +//----------------------------------------------------------------------------- +bool ArePlayersOnSameTeam( int iPlayerIndex1, int iPlayerIndex2 ) +{ + for (int i = 0; i < g_Teams.Count(); i++ ) + { + if ( g_Teams[i]->ContainsPlayer( iPlayerIndex1 ) && g_Teams[i]->ContainsPlayer( iPlayerIndex2 ) ) + return true; + } + + return false; +} + +//----------------------------------------------------------------------------- +// Purpose: Get the number of team managers +//----------------------------------------------------------------------------- +int GetNumberOfTeams( void ) +{ + return g_Teams.Size(); }
\ No newline at end of file |