//========= Copyright Valve Corporation, All rights reserved. ============// // // Purpose: The class from which all bludgeon melee // weapons are derived. // // $Workfile: $ // $Date: $ // $NoKeywords: $ //=============================================================================// #include "basehlcombatweapon.h" #ifndef BASEBLUDGEONWEAPON_H #define BASEBLUDGEONWEAPON_H //========================================================= // CBaseHLBludgeonWeapon //========================================================= class CBaseHLBludgeonWeapon : public CBaseHLCombatWeapon { DECLARE_CLASS(CBaseHLBludgeonWeapon, CBaseHLCombatWeapon); public: CBaseHLBludgeonWeapon(); DECLARE_SERVERCLASS(); virtual void Spawn(void); virtual void Precache(void); // Attack functions virtual void PrimaryAttack(void); virtual void SecondaryAttack(void); virtual void ItemPostFrame(void); // Functions to select animation sequences virtual Activity GetPrimaryAttackActivity(void) { return ACT_VM_HITCENTER; } virtual Activity GetSecondaryAttackActivity(void) { return ACT_VM_HITCENTER2; } virtual float GetFireRate(void) { return 0.2f; } virtual float GetRange(void) { return 32.0f; } virtual float GetDamageForActivity(Activity hitActivity) { return 1.0f; } virtual int CapabilitiesGet(void); virtual int WeaponMeleeAttack1Condition(float flDot, float flDist); protected: virtual void ImpactEffect(trace_t &trace); private: bool ImpactWater(const Vector &start, const Vector &end); void Swing(int bIsSecondary); void Hit(trace_t &traceHit, Activity nHitActivity, bool bIsSecondary); Activity ChooseIntersectionPointAndActivity(trace_t &hitTrace, const Vector &mins, const Vector &maxs, CBasePlayer *pOwner); }; #endif