source-engine/game/server/tf2/tf_class_sapper.h
FluorescentCIAAfricanAmerican 3bf9df6b27 1
2020-04-22 12:56:21 -04:00

98 lines
2.6 KiB
C++

//========= 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