You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
128 lines
4.5 KiB
128 lines
4.5 KiB
//========= Copyright Valve Corporation, All rights reserved. ============// |
|
// |
|
// Purpose: TF's custom C_PlayerResource |
|
// |
|
// $NoKeywords: $ |
|
//=============================================================================// |
|
|
|
#ifndef C_TF_PLAYERRESOURCE_H |
|
#define C_TF_PLAYERRESOURCE_H |
|
#ifdef _WIN32 |
|
#pragma once |
|
#endif |
|
|
|
#include "tf_shareddefs.h" |
|
#include "c_playerresource.h" |
|
#include "tf_player_shared.h" |
|
|
|
class C_TF_PlayerResource : public C_PlayerResource |
|
{ |
|
DECLARE_CLASS( C_TF_PlayerResource, C_PlayerResource ); |
|
public: |
|
DECLARE_CLIENTCLASS(); |
|
|
|
C_TF_PlayerResource(); |
|
virtual ~C_TF_PlayerResource(); |
|
|
|
virtual int GetTeam( int index ) OVERRIDE; |
|
|
|
int GetTotalScore( int iIndex ) { return GetArrayValue( iIndex, m_iTotalScore, 0 ); } |
|
int GetMaxHealth( int iIndex ) { return GetArrayValue( iIndex, m_iMaxHealth, TF_HEALTH_UNDEFINED ); } |
|
int GetMaxHealthForBuffing( int iIndex ) { return GetArrayValue( iIndex, m_iMaxBuffedHealth, TF_HEALTH_UNDEFINED ); } |
|
int GetPlayerClass( int iIndex ) { return GetArrayValue( iIndex, m_iPlayerClass, TF_CLASS_UNDEFINED ); } |
|
int GetActiveDominations( int iIndex ) { return GetArrayValue( iIndex, m_iActiveDominations, 0 ); } |
|
float GetNextRespawnTime( int iIndex ) { return (IsConnected(iIndex) ? m_flNextRespawnTime[iIndex] : 0); } |
|
int GetChargeLevel( int iIndex ) { return GetArrayValue( iIndex, m_iChargeLevel, 0 ); } |
|
int GetDamage( unsigned int nIndex ); |
|
int GetDamageAssist( unsigned int nIndex ); |
|
int GetDamageBoss( unsigned int nIndex ); |
|
int GetHealing( unsigned int nIndex ); |
|
int GetHealingAssist( unsigned int nIndex ); |
|
int GetDamageBlocked( unsigned int nIndex ); |
|
int GetCurrencyCollected( unsigned int nIndex ); |
|
int GetBonusPoints( unsigned int nIndex ); |
|
int GetPlayerLevel( unsigned int nIndex ) { return GetArrayValue( nIndex, m_iPlayerLevel, 0 ); } |
|
int GetStreak( unsigned int nIndex, CTFPlayerShared::ETFStreak streak_type ); |
|
int GetNumRespecCredits( uint32 unIndex ); |
|
int GetNumBuybackCredits( uint32 unIndex ); |
|
|
|
void UpdatePlayerScoreStats( void ); |
|
void ResetPlayerScoreStats( int playerIndex = -1 ); |
|
|
|
bool IsArenaSpectator( int iIndex ) |
|
{ |
|
if ( !IsConnected( iIndex ) ) |
|
{ |
|
return false; |
|
} |
|
return m_bArenaSpectator[iIndex]; |
|
} |
|
|
|
int GetCountForPlayerClass( int iTeam, int iClass, bool bExcludeLocalPlayer = false ); |
|
|
|
int GetNumPlayersForTeam( int iTeam, bool bAliveOnly ); |
|
|
|
bool HasPremadeParties(){ return ( ( m_iPartyLeaderRedTeamIndex > 0 ) && ( m_iPartyLeaderBlueTeamIndex > 0 ) ); } |
|
int GetPartyLeaderRedTeamIndex(){ return m_iPartyLeaderRedTeamIndex; } |
|
int GetPartyLeaderBlueTeamIndex(){ return m_iPartyLeaderBlueTeamIndex; } |
|
int GetEventTeamStatus() { return m_iEventTeamStatus; } |
|
|
|
int GetPlayerClassWhenKilled( int iIndex ) { return GetArrayValue( iIndex, m_iPlayerClassWhenKilled, TF_CLASS_UNDEFINED ); } |
|
|
|
MM_PlayerConnectionState_t GetPlayerConnectionState( int iIndex ) const; |
|
|
|
protected: |
|
int GetArrayValue( int iIndex, int *pArray, int defaultVal ); |
|
|
|
int m_iTotalScore[MAX_PLAYERS+1]; |
|
int m_iMaxHealth[MAX_PLAYERS+1]; |
|
// !! This is actually m_iMaxHealthForBuffing, but we can't fix it now because of demos :-/ |
|
int m_iMaxBuffedHealth[MAX_PLAYERS+1]; |
|
int m_iPlayerClass[MAX_PLAYERS+1]; |
|
bool m_bArenaSpectator[MAX_PLAYERS+1]; |
|
int m_iActiveDominations[MAX_PLAYERS+1]; |
|
|
|
// These variables are only networked in tournament mode |
|
float m_flNextRespawnTime[MAX_PLAYERS+1]; |
|
int m_iChargeLevel[MAX_PLAYERS+1]; |
|
|
|
private: |
|
int m_iDamage[MAX_PLAYERS+1]; |
|
int m_iDamageAssist[MAX_PLAYERS+1]; |
|
int m_iDamageBoss[MAX_PLAYERS+1]; |
|
int m_iHealing[MAX_PLAYERS+1]; |
|
int m_iHealingAssist[MAX_PLAYERS+1]; |
|
int m_iDamageBlocked[MAX_PLAYERS+1]; |
|
int m_iCurrencyCollected[MAX_PLAYERS+1]; |
|
int m_iBonusPoints[MAX_PLAYERS+1]; |
|
int m_iPlayerLevel[MAX_PLAYERS+1]; |
|
// Pseudo multidimensional array [MAX_PLAYERS + 1][CTFPlayerShared::kTFStreak_COUNT] |
|
int m_iStreaks[(MAX_PLAYERS+1) * CTFPlayerShared::kTFStreak_COUNT]; |
|
int m_iUpgradeRefundCredits[MAX_PLAYERS + 1]; |
|
int m_iBuybackCredits[MAX_PLAYERS + 1]; |
|
|
|
int m_iPartyLeaderBlueTeamIndex; |
|
int m_iPartyLeaderRedTeamIndex; |
|
int m_iEventTeamStatus; |
|
|
|
int m_iPlayerClassWhenKilled[MAX_PLAYERS+1]; |
|
MM_PlayerConnectionState_t m_iConnectionState[MAX_PLAYERS+1]; |
|
|
|
struct PlayerScoreboardStats_t |
|
{ |
|
int m_iPrevDamage; |
|
int m_iPrevDamageAssist; |
|
int m_iPrevDamageBoss; |
|
int m_iPrevHealing; |
|
int m_iPrevHealingAssist; |
|
int m_iPrevDamageBlocked; |
|
int m_iPrevCurrencyCollected; |
|
int m_iPrevBonusPoints; |
|
}; |
|
|
|
PlayerScoreboardStats_t m_aPlayerScoreStats[MAX_PLAYERS+1]; |
|
}; |
|
|
|
extern C_TF_PlayerResource *g_TF_PR; |
|
|
|
#endif // C_TF_PLAYERRESOURCE_H
|
|
|