mirror of
https://github.com/nillerusr/source-engine.git
synced 2026-08-16 05:37:00 +00:00
1
This commit is contained in:
@@ -0,0 +1,142 @@
|
||||
//========= Copyright Valve Corporation, All rights reserved. ============//
|
||||
//
|
||||
// TF Base Projectile
|
||||
//
|
||||
//=============================================================================
|
||||
#ifndef TF_BASE_PROJECTILE_H
|
||||
#define TF_BASE_PROJECTILE_H
|
||||
#ifdef _WIN32
|
||||
#pragma once
|
||||
#endif
|
||||
|
||||
#include "cbase.h"
|
||||
#include "tf_shareddefs.h"
|
||||
#include "baseprojectile.h"
|
||||
|
||||
// Client specific.
|
||||
#ifdef CLIENT_DLL
|
||||
#include "tempent.h"
|
||||
// Server specific.
|
||||
#else
|
||||
#include "iscorer.h"
|
||||
#endif
|
||||
|
||||
#ifdef CLIENT_DLL
|
||||
#define CTFBaseProjectile C_TFBaseProjectile
|
||||
C_LocalTempEntity *ClientsideProjectileCallback( const CEffectData &data, float flGravityBase, const char *pszParticleName = NULL );
|
||||
#endif
|
||||
|
||||
/*
|
||||
CBaseProjectile
|
||||
|- CTFBaseProjectile
|
||||
|- CTFProjectile_Nail
|
||||
|- CTFProjectile_Dart
|
||||
|- CTFProjectile_Syringe
|
||||
|- CTFProjectile_EnergyRing
|
||||
|- CTFBaseRocket
|
||||
|- Soldier rocket
|
||||
|- Pyro rocket
|
||||
|- CTFProjectile_Flare
|
||||
|- CTFProjectile_Arrow
|
||||
|- CBaseGrenade
|
||||
|- CTFWeaponBaseGrenadeProj
|
||||
|- CTFGrenadePipebombProjectile
|
||||
*/
|
||||
|
||||
//=============================================================================
|
||||
//
|
||||
// Generic projectile
|
||||
//
|
||||
class CTFBaseProjectile : public CBaseProjectile
|
||||
#if !defined( CLIENT_DLL )
|
||||
, public IScorer
|
||||
#endif
|
||||
{
|
||||
public:
|
||||
|
||||
DECLARE_CLASS( CTFBaseProjectile, CBaseProjectile );
|
||||
DECLARE_NETWORKCLASS();
|
||||
|
||||
CTFBaseProjectile();
|
||||
~CTFBaseProjectile();
|
||||
|
||||
void Precache( void );
|
||||
void Spawn( void );
|
||||
|
||||
virtual int GetWeaponID( void ) const { return m_iWeaponID; }
|
||||
void SetWeaponID( int iID ) { m_iWeaponID = iID; }
|
||||
|
||||
bool IsCritical( void ) const { return m_bCritical; }
|
||||
virtual void SetCritical( bool bCritical ) { m_bCritical = bCritical; }
|
||||
|
||||
CBaseEntity *GetLauncher( void ) { return m_hLauncher; }
|
||||
|
||||
private:
|
||||
|
||||
int m_iWeaponID;
|
||||
bool m_bCritical;
|
||||
|
||||
protected:
|
||||
|
||||
// Networked.
|
||||
CNetworkVector( m_vInitialVelocity );
|
||||
|
||||
static CTFBaseProjectile *Create( const char *pszClassname, const Vector &vecOrigin,
|
||||
const QAngle &vecAngles, CBaseEntity *pOwner, float flVelocity, short iProjModelIndex, const char *pszDispatchEffect = NULL, CBaseEntity *pScorer = NULL, bool bCritical = false, Vector vColor1=vec3_origin, Vector vColor2=vec3_origin );
|
||||
|
||||
virtual const char *GetProjectileModelName( void );
|
||||
virtual float GetGravity( void ) { return 0.001f; }
|
||||
|
||||
#ifdef CLIENT_DLL
|
||||
|
||||
public:
|
||||
|
||||
virtual int DrawModel( int flags );
|
||||
virtual void PostDataUpdate( DataUpdateType_t type );
|
||||
|
||||
private:
|
||||
|
||||
float m_flSpawnTime;
|
||||
#else
|
||||
|
||||
public:
|
||||
|
||||
DECLARE_DATADESC();
|
||||
|
||||
// IScorer interface
|
||||
virtual CBasePlayer *GetScorer( void );
|
||||
virtual CBasePlayer *GetAssistant( void ) { return NULL; }
|
||||
|
||||
void SetScorer( CBaseEntity *pScorer );
|
||||
|
||||
virtual void ProjectileTouch( CBaseEntity *pOther );
|
||||
|
||||
virtual int GetProjectileType ( void ) { return TF_PROJECTILE_NONE; } // Default unset
|
||||
|
||||
virtual float GetDamage() { return m_flDamage; }
|
||||
virtual void SetDamage(float flDamage) { m_flDamage = flDamage; }
|
||||
|
||||
virtual Vector GetDamageForce( void );
|
||||
virtual int GetDamageType( void );
|
||||
|
||||
virtual unsigned int PhysicsSolidMaskForEntity( void ) const OVERRIDE;
|
||||
|
||||
void SetupInitialTransmittedGrenadeVelocity( const Vector &velocity ) { m_vInitialVelocity = velocity; }
|
||||
|
||||
virtual void SetLauncher( CBaseEntity *pLauncher ) OVERRIDE { m_hLauncher = pLauncher; BaseClass::SetLauncher( pLauncher ); }
|
||||
|
||||
protected:
|
||||
|
||||
void FlyThink( void );
|
||||
|
||||
protected:
|
||||
float m_flDamage;
|
||||
CBaseHandle m_Scorer;
|
||||
|
||||
#endif // ndef CLIENT_DLL
|
||||
|
||||
protected:
|
||||
CNetworkHandle( CBaseEntity, m_hLauncher );
|
||||
};
|
||||
|
||||
#endif //TF_BASE_PROJECTILE_H
|
||||
Reference in New Issue
Block a user