summaryrefslogtreecommitdiff
path: root/game/client/tf/c_tf_playerresource.h
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/client/tf/c_tf_playerresource.h
downloadarchived-source-engine-2018-hl2-src-master.tar.xz
archived-source-engine-2018-hl2-src-master.zip
Diffstat (limited to 'game/client/tf/c_tf_playerresource.h')
-rw-r--r--game/client/tf/c_tf_playerresource.h128
1 files changed, 128 insertions, 0 deletions
diff --git a/game/client/tf/c_tf_playerresource.h b/game/client/tf/c_tf_playerresource.h
new file mode 100644
index 0000000..423bc27
--- /dev/null
+++ b/game/client/tf/c_tf_playerresource.h
@@ -0,0 +1,128 @@
+//========= 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