//========= Copyright © 1996-2005, Valve Corporation, All rights reserved. ============//
//
// Purpose: 
//
// $NoKeywords: $
//=============================================================================//

#ifndef WEAPON_SNIPERRIFLE_H
#define WEAPON_SNIPERRIFLE_H

#ifdef _WIN32
#pragma once
#endif

#include "basehlcombatweapon.h"

class CBeam;

class CWeaponSniperRifle : public CBaseHLCombatWeapon
{
	DECLARE_DATADESC();
public:
	DECLARE_CLASS( CWeaponSniperRifle, CBaseHLCombatWeapon );

	CWeaponSniperRifle(void);

	DECLARE_SERVERCLASS();

	void Precache( void );
	void Activate( void );

	int		CapabilitiesGet( void ) { return bits_CAP_WEAPON_RANGE_ATTACK1; }

	const Vector &GetBulletSpread( void );

	void Equip( CBaseCombatCharacter *pOwner );
	void Drop( const Vector &vecVelocity );
	bool Deploy( void );	
	bool Holster( CBaseCombatWeapon *pSwitchingTo = NULL );
	void ItemPostFrame( void );
	void PrimaryAttack( void );
	bool Reload( void );
	void Zoom( void );
	virtual float GetFireRate( void ) { return 1; };

	virtual int	GetMinBurst() 
	{ 
		return 1; 
	}

	virtual int	GetMaxBurst() 
	{ 
		return 1; 
	}

	void Operator_HandleAnimEvent( animevent_t *pEvent, CBaseCombatCharacter *pOperator );

	void LaserOff( void );
	void LaserOn();
	bool IsLaserOn( void ) { return m_pBeam != NULL; }
	void UpdateLaser();

	DECLARE_ACTTABLE();

protected:
	CBeam						*m_pBeam;

	float m_fNextZoom;
	int m_nZoomLevel;
};

#endif // WEAPON_SNIPERRIFLE_H
