Team Fortress 2 Source Code as on 22/4/2020
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.
|
|
//========= Copyright Valve Corporation, All rights reserved. ============//
//
// Purpose:
//
// $NoKeywords: $
//=============================================================================//
#ifndef BASEGRENADE_SHARED_H
#define BASEGRENADE_SHARED_H
#ifdef _WIN32
#pragma once
#endif
#include "baseprojectile.h"
#if defined( CLIENT_DLL )
#define CBaseGrenade C_BaseGrenade
#include "c_basecombatcharacter.h"
#else
#include "basecombatcharacter.h"
#include "player_pickup.h"
#endif
#define BASEGRENADE_EXPLOSION_VOLUME 1024
class CTakeDamageInfo;
#if !defined( CLIENT_DLL )
class CBaseGrenade : public CBaseProjectile, public CDefaultPlayerPickupVPhysics #else
class CBaseGrenade : public CBaseProjectile #endif
{ DECLARE_CLASS( CBaseGrenade, CBaseProjectile ); public:
CBaseGrenade(void); ~CBaseGrenade(void);
DECLARE_PREDICTABLE(); DECLARE_NETWORKCLASS();
#if !defined( CLIENT_DLL )
DECLARE_DATADESC(); #endif
virtual void Precache( void );
virtual void Explode( trace_t *pTrace, int bitsDamageType ); void Smoke( void );
void BounceTouch( CBaseEntity *pOther ); void SlideTouch( CBaseEntity *pOther ); void ExplodeTouch( CBaseEntity *pOther ); void DangerSoundThink( void ); void PreDetonate( void ); virtual void Detonate( void ); void DetonateUse( CBaseEntity *pActivator, CBaseEntity *pCaller, USE_TYPE useType, float value ); void TumbleThink( void );
virtual Vector GetBlastForce() { return vec3_origin; }
virtual void BounceSound( void ); virtual int BloodColor( void ) { return DONT_BLEED; } virtual void Event_Killed( const CTakeDamageInfo &info );
virtual float GetShakeAmplitude( void ) { return 25.0; } virtual float GetShakeRadius( void ) { return 750.0; }
// Damage accessors.
virtual float GetDamage() { return m_flDamage; } virtual float GetDamageRadius() { return m_DmgRadius; }
virtual void SetDamage(float flDamage) { m_flDamage = flDamage; }
virtual void SetDamageRadius(float flDamageRadius) { m_DmgRadius = flDamageRadius; }
// Bounce sound accessors.
void SetBounceSound( const char *pszBounceSound ) { m_iszBounceSound = MAKE_STRING( pszBounceSound ); }
CBaseCombatCharacter *GetThrower( void ); void SetThrower( CBaseCombatCharacter *pThrower ); CBaseEntity *GetOriginalThrower() { return m_hOriginalThrower; }
#if !defined( CLIENT_DLL )
// Allow +USE pickup
int ObjectCaps() { return (BaseClass::ObjectCaps() | FCAP_IMPULSE_USE | FCAP_USE_IN_RADIUS); }
void Use( CBaseEntity *pActivator, CBaseEntity *pCaller, USE_TYPE useType, float value ); #endif
public: IMPLEMENT_NETWORK_VAR_FOR_DERIVED( m_vecVelocity ); IMPLEMENT_NETWORK_VAR_FOR_DERIVED( m_fFlags ); bool m_bHasWarnedAI; // whether or not this grenade has issued its DANGER sound to the world sound list yet.
CNetworkVar( bool, m_bIsLive ); // Is this grenade live, or can it be picked up?
CNetworkVar( float, m_DmgRadius ); // How far do I do damage?
CNetworkVar( float, m_flNextAttack ); float m_flDetonateTime; // Time at which to detonate.
float m_flWarnAITime; // Time at which to warn the AI
protected:
CNetworkVar( float, m_flDamage ); // Damage to inflict.
string_t m_iszBounceSound; // The sound to make on bouncing. If not NULL, overrides the BounceSound() function.
private: CNetworkHandle( CBaseEntity, m_hThrower ); // Who threw this grenade
EHANDLE m_hOriginalThrower; // Who was the original thrower of this grenade
CBaseGrenade( const CBaseGrenade & ); // not defined, not accessible
};
#endif // BASEGRENADE_SHARED_H
|