diff options
Diffstat (limited to 'game/shared/tf/tf_weaponbase_melee.h')
| -rw-r--r-- | game/shared/tf/tf_weaponbase_melee.h | 105 |
1 files changed, 105 insertions, 0 deletions
diff --git a/game/shared/tf/tf_weaponbase_melee.h b/game/shared/tf/tf_weaponbase_melee.h new file mode 100644 index 0000000..9861fbf --- /dev/null +++ b/game/shared/tf/tf_weaponbase_melee.h @@ -0,0 +1,105 @@ +//========= Copyright Valve Corporation, All rights reserved. ============// +// +// Purpose: Weapon Base Melee +// +//============================================================================= + +#ifndef TF_WEAPONBASE_MELEE_H +#define TF_WEAPONBASE_MELEE_H +#ifdef _WIN32 +#pragma once +#endif + +#include "tf_shareddefs.h" +#include "tf_weaponbase.h" + +#if defined( CLIENT_DLL ) +#define CTFWeaponBaseMelee C_TFWeaponBaseMelee +extern ConVar cl_crosshair_file; +#endif + +//============================================================================= +// +// Weapon Base Melee Class +// +class CTFWeaponBaseMelee : public CTFWeaponBase +{ +public: + + DECLARE_CLASS( CTFWeaponBaseMelee, CTFWeaponBase ); + DECLARE_NETWORKCLASS(); + DECLARE_PREDICTABLE(); + +#if !defined( CLIENT_DLL ) + DECLARE_DATADESC(); +#endif + + CTFWeaponBaseMelee(); + + // We say yes to this so the weapon system lets us switch to it. + virtual bool HasPrimaryAmmo() { return true; } + virtual bool CanBeSelected() { return true; } + virtual void Precache(); + virtual void ItemPreFrame(); + virtual void ItemPostFrame(); + virtual void Spawn(); + virtual void PrimaryAttack(); + virtual void SecondaryAttack(); + virtual bool Holster( CBaseCombatWeapon *pSwitchingTo ); + virtual int GetWeaponID( void ) const { return TF_WEAPON_NONE; } + virtual int GetSwingRange( void ); + virtual void WeaponReset( void ); + virtual bool CanHolster( void ) const; + + virtual bool CalcIsAttackCriticalHelper( void ); + virtual bool CalcIsAttackCriticalHelperNoCrits( void ); + + virtual void DoViewModelAnimation( void ); + + virtual bool DoSwingTrace( trace_t &trace ); + virtual void Smack( void ); + virtual void DoMeleeDamage( CBaseEntity* ent, trace_t& trace ); + virtual void DoMeleeDamage( CBaseEntity* ent, trace_t& trace, float flDamageMod ); + + virtual float GetMeleeDamage( CBaseEntity *pTarget, int* piDamageType, int* piCustomDamage ); + +#ifndef CLIENT_DLL + virtual float GetForceScale( void ); + virtual int GetDamageCustom( void ) { return TF_DMG_CUSTOM_NONE; } +#endif + + // Call when we hit an entity. Use for special weapon effects on hit. + virtual void OnEntityHit( CBaseEntity *pEntity, CTakeDamageInfo *info ); + + virtual void SendPlayerAnimEvent( CTFPlayer *pPlayer ); + + bool ConnectedHit( void ) { return m_bConnected; } + + virtual char const *GetShootSound( int iIndex ) const; + +public: + + CTFWeaponInfo *m_pWeaponInfo; + +protected: + + virtual void Swing( CTFPlayer *pPlayer ); + +protected: + + float m_flSmackTime; + bool m_bConnected; + bool m_bMiniCrit; + +#ifdef GAME_DLL + CUtlVector< CHandle< CTFPlayer > > m_potentialVictimVector; +#endif + +private: + bool DoSwingTraceInternal( trace_t &trace, bool bCleave, CUtlVector< trace_t >* pTargetTraceVector ); + bool OnSwingHit( trace_t &trace ); + + CTFWeaponBaseMelee( const CTFWeaponBaseMelee & ) {} +}; + +#endif // TF_WEAPONBASE_MELEE_H |