diff options
Diffstat (limited to 'game/server/tf2/tf_class_sapper.h')
| -rw-r--r-- | game/server/tf2/tf_class_sapper.h | 97 |
1 files changed, 97 insertions, 0 deletions
diff --git a/game/server/tf2/tf_class_sapper.h b/game/server/tf2/tf_class_sapper.h new file mode 100644 index 0000000..e003008 --- /dev/null +++ b/game/server/tf2/tf_class_sapper.h @@ -0,0 +1,97 @@ +//========= Copyright Valve Corporation, All rights reserved. ============// +// +// Purpose: Sapper player class +// +// $NoKeywords: $ +//=============================================================================// + +#ifndef TF_CLASS_SAPPER_H +#define TF_CLASS_SAPPER_H +#ifdef _WIN32 +#pragma once +#endif + +#include "TFClassData_Shared.h" +#include "damagemodifier.h" + +class CEMPPulseStatus; +class CBaseObject; + + +//----------------------------------------------------------------------------- +// Purpose: Sapper +//----------------------------------------------------------------------------- +class CPlayerClassSapper : public CPlayerClass +{ +public: + DECLARE_CLASS( CPlayerClassSapper, CPlayerClass ); + + CPlayerClassSapper( CBaseTFPlayer *pPlayer, TFClass iClass ); + ~CPlayerClassSapper(); + + // Any objects created/owned by class should be allocated and destroyed here + virtual void ClassActivate( void ); + virtual void ClassDeactivate( void ); + + virtual const char* GetClassModelString( int nTeam ); + + // Class Initialization + virtual void CreateClass( void ); // Create the class upon initial spawn + virtual void RespawnClass( void ); // Called upon all respawns + virtual bool ResupplyAmmo( float flPercentage, ResupplyReason_t reason ); + virtual void SetupMoveData( void ); // Override class specific movement data here. + virtual void SetupSizeData( void ); // Override class specific size data here. + virtual void ResetViewOffset( void ); + + PlayerClassSapperData_t *GetClassData( void ) { return &m_ClassData; } + + virtual void GainedNewTechnology( CBaseTechnology *pTechnology ); + + virtual void ClassThink( void ); + + // Energy draining + void AddDrainedEnergy( float flEnergy ); + + // See if the player has not moved in time_required seconds + bool CheckStationaryTime( float time_required ); + + // Orders + virtual void CreatePersonalOrder( void ); + + // Hooks + virtual void SetPlayerHull( void ); + + float GetDrainedEnergy( void ); + void DeductDrainedEnergy( float flEnergy ); + +public: + CNetworkVar( float, m_flDrainedEnergy ); + +private: + bool m_bHasMediumRangeEMP; + bool m_bHasFasterRechargingEMP; + bool m_bHasHugeRadiusEMP; + bool m_bHasLongerLastingEMPEffect; + + // Energy drained with the drainbeam + float m_flBoostEndTime; + CDamageModifier m_DamageModifier; + + static int m_nEffectIndex; + CEMPPulseStatus *m_pEMPPulseStatus; + + Vector m_vecLastOrigin; + float m_flLastMoveTime; + + PlayerClassSapperData_t m_ClassData; + + // Weapons + CHandle<CBaseTFCombatWeapon> m_hWpnPlasma; +}; + +EXTERN_SEND_TABLE( DT_PlayerClassSapperData ) + + +extern char *g_pszEMPPulseStart; + +#endif // TF_CLASS_SAPPER_H |