//========= Copyright Valve Corporation, All rights reserved. ============//
//
// Purpose: 
//
//=============================================================================

#ifndef TF_WEAPON_FISTS_H
#define TF_WEAPON_FISTS_H
#ifdef _WIN32
#pragma once
#endif

#include "tf_weaponbase_melee.h"

#ifdef CLIENT_DLL
#define CTFFists C_TFFists
#endif

enum fisttypes_t
{
	FISTTYPE_BASE = 0,
	FISTTYPE_RADIAL_BUFF,
	FISTTYPE_GRU,
};

//=============================================================================
//
// Fists weapon class.
//
class CTFFists : public CTFWeaponBaseMelee
{
public:

	DECLARE_CLASS( CTFFists, CTFWeaponBaseMelee );
	DECLARE_NETWORKCLASS(); 
	DECLARE_PREDICTABLE();

	CTFFists() {}
	virtual int			GetWeaponID( void ) const			{ return TF_WEAPON_FISTS; }

	virtual void ItemPreFrame();
	virtual void PrimaryAttack();
	virtual void SecondaryAttack();
	virtual bool Holster( CBaseCombatWeapon *pSwitchingTo );

	virtual void SendPlayerAnimEvent( CTFPlayer *pPlayer );

	virtual void DoViewModelAnimation( void );

	virtual bool HideWhileStunned( void ) { return false; }

	void Punch( void );

#ifdef GAME_DLL
	virtual void OnEntityHit( CBaseEntity *pEntity, CTakeDamageInfo *info );
#endif

	virtual bool AllowTaunts( void );

	int			 GetFistType( void ) { int iMode = 0; CALL_ATTRIB_HOOK_INT( iMode, set_weapon_mode ); return iMode; };

	virtual void	SetWeaponVisible( bool visible ){}  // intentionally never hiding the fists

private:

	CTFFists( const CTFFists & ) {}
};

#endif // TF_WEAPON_FISTS_H