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

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

#include "tf_weaponbase_melee.h"

#ifdef CLIENT_DLL
#define CTFShovel C_TFShovel
#endif

enum shovel_weapontypes_t
{
	SHOVEL_STANDARD = 0,
	SHOVEL_DAMAGE_BOOST,
	SHOVEL_SPEED_BOOST,
};

//=============================================================================
//
// Shovel class.
//
class CTFShovel : public CTFWeaponBaseMelee
{
public:

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

	CTFShovel();
	virtual int		GetWeaponID( void ) const			{ return TF_WEAPON_SHOVEL; }
	virtual void	PrimaryAttack();

	int				GetShovelType( void ) { int iMode = 0; CALL_ATTRIB_HOOK_INT( iMode, set_weapon_mode ); return iMode; };
	virtual bool	HasDamageBoost( void ) { return (GetShovelType() == SHOVEL_DAMAGE_BOOST); }
	virtual bool	HasSpeedBoost( void ) { return (GetShovelType() == SHOVEL_SPEED_BOOST); }
	virtual void	ItemPreFrame( void ) OVERRIDE;
	virtual float	GetMeleeDamage( CBaseEntity *pTarget, int* piDamageType, int* piCustomDamage );
	virtual float	GetSpeedMod( void );

	void			MoveSpeedThink( void );

	virtual bool	Deploy( void );
	virtual bool	Holster( CBaseCombatWeapon *pSwitchingTo );

#ifndef CLIENT_DLL
	virtual float	GetForceScale( void );
	virtual int		GetDamageCustom();
#endif

private:

	CTFShovel( const CTFShovel & ) {}

	bool			m_bHolstering;
	float			m_flLastHealthRatio;
};

#endif // TF_WEAPON_SHOVEL_H