hl2_src-leak-2017/src/game/shared/tf2/grenade_emp.h

83 lines
1.9 KiB
C++

//========= Copyright Valve Corporation, All rights reserved. ============//
//
// Purpose:
//
// $NoKeywords: $
//=============================================================================//
#ifndef GRENADE_EMP_H
#define GRENADE_EMP_H
#ifdef _WIN32
#pragma once
#endif
class CSprite;
#include "grenade_base_empable.h"
#if defined( CLIENT_DLL )
#define CGrenadeEMP C_GrenadeEMP
#endif
//-----------------------------------------------------------------------------
// Purpose: EMP grenade
//-----------------------------------------------------------------------------
class CGrenadeEMP : public CBaseEMPableGrenade
{
DECLARE_CLASS( CGrenadeEMP, CBaseEMPableGrenade );
public:
CGrenadeEMP();
DECLARE_PREDICTABLE();
DECLARE_NETWORKCLASS();
virtual void Spawn( void );
virtual void Precache( void );
virtual void UpdateOnRemove( void );
virtual void Explode( trace_t *pTrace, int bitsDamageType );
virtual void BounceTouch( CBaseEntity *pOther );
virtual void BounceSound( void );
virtual float GetShakeAmplitude( void );
virtual int GetDamageType() const { return DMG_BLAST; }
void ApplyRadiusEMPEffect( CBaseEntity *pOwner, const Vector& vecCenter );
static CGrenadeEMP *CGrenadeEMP::Create( const Vector &vecOrigin, const Vector &vecAngles, CBasePlayer *pOwner );
// A derived class should return true here so that weapon sounds, etc, can
// apply the proper filter
virtual bool IsPredicted( void ) const
{
return true;
}
#if defined( CLIENT_DLL )
virtual bool ShouldPredict( void )
{
if ( GetThrower() &&
GetThrower() == C_BasePlayer::GetLocalPlayer() )
return true;
return BaseClass::ShouldPredict();
}
virtual void OnDataChanged( DataUpdateType_t updateType );
virtual void ClientThink( void );
TimedEvent m_ParticleEvent;
virtual int DrawModel( int flags );
#endif
private:
CNetworkHandle( CSprite, m_hLiveSprite );
private:
CGrenadeEMP( const CGrenadeEMP & );
};
#endif // GRENADE_EMP_H