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

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

#include "tf_weaponbase_melee.h"

#ifdef CLIENT_DLL
#include "tf_weapon_medigun.h"

#define CTFBonesaw C_TFBonesaw
#endif

enum bonesaw_weapontypes_t
{
	BONESAW_DEFAULT = 0,
	BONESAW_UBER_ONHIT,
	BONESAW_UBER_SAVEDONDEATH,
	BONESAW_RADIUSHEAL,
	BONESAW_TONGS,
};

//=============================================================================
//
// Bonesaw class.
//
class CTFBonesaw : public CTFWeaponBaseMelee
{
public:
	DECLARE_CLASS( CTFBonesaw, CTFWeaponBaseMelee );
	DECLARE_NETWORKCLASS(); 
	DECLARE_PREDICTABLE();

	CTFBonesaw() {}
	virtual void		Activate( void );
	virtual int			GetWeaponID( void ) const			
	{ 
		const CEconItemView *pEconItemView = GetAttributeContainer()->GetItem();
		if ( !V_strcmp( pEconItemView->GetItemDefinition()->GetDefinitionName(), "Harvester" ) )
			return TF_WEAPON_HARVESTER_SAW;
		return TF_WEAPON_BONESAW; 
	}

	virtual void		SecondaryAttack();

	virtual bool		DefaultDeploy( char *szViewModel, char *szWeaponModel, int iActivity, char *szAnimExt );
	int					GetBonesawType( void ) const		{ int iMode = 0; CALL_ATTRIB_HOOK_INT( iMode, set_weapon_mode ); return iMode; };

	virtual void		DoMeleeDamage( CBaseEntity* ent, trace_t& trace ) OVERRIDE;
	
	float				GetProgress( void ) { return 0; }
	int					GetCount( void );
	const char*			GetEffectLabelText( void ) { return "#TF_ORGANS"; }

	float				GetBoneSawSpeedMod( void );

#ifdef CLIENT_DLL
	virtual void		OnDataChanged( DataUpdateType_t updateType );
	void				UpdateChargePoseParam( void );
	virtual void		GetPoseParameters( CStudioHdr *pStudioHdr, float poseParameter[MAXSTUDIOPOSEPARAM] );
	virtual void		UpdateAttachmentModels( void );
#endif

private:

#ifdef CLIENT_DLL
	int			m_iUberChargePoseParam;
	float		m_flChargeLevel;
#endif

	CTFBonesaw( const CTFBonesaw & ) {}
};

#endif // TF_WEAPON_BONESAW_H