#ifndef CHARGEDATTACK_H
#define CHARGEDATTACK_H

/**
* Charged attacks parent class
* @version 16-2-2002
* @author Herwin 'harSens' van Welbergen
*/
class CChargedAttack:public CBasePlayerWeapon
{	
public:
	/**
	* shoot beam if charging
	*/
	void WeaponIdle( void );

	/**
	* charges the attack
	*/
	void PrimaryAttack( void );

	/**
	* Called when the attack is selected as weapon
	* @return BOOL: true, if deploy succeeded
	*/
	BOOL Deploy( void );

	/**
	* Holsters the sbc
	* @param int skiplocal:???
	*/
	void Holster(int skiplocal);

	/**
	* Shoots the attack
	*/
	virtual void Shoot( void );

protected:
	/**
	* Silence the sounds for the weapon
	*/
	void SilenceWeaponSounds();

	/**
	* Silence the voice
	*/
	void SilenceVoice();
		
	/**
	* Emits charge sound
	*/
	virtual void EmitChargeSound(){};

	/**
	* Emits shoot sound
	*/
	virtual void EmitShootSound(){};

	/**
	* Inits charge sprite
	*/
	virtual void InitChargeSprite(){};

	/**
	* Enable charge sprite
	*/
	virtual void EnableChargeSprite(){};

	/**
	* Disable charge sprite
	*/
	virtual void DisableChargeSprite(){};

	/**
	* Let the chargesprite grow
	*/
	virtual void GrowChargeSprite(){};

	/**
	* Remove charge sprite
	*/
	virtual void RemoveChargeSprite(){};

	/**
	* shoots the attack
	*/
	virtual void ShootAttack(){};

	int m_iCharge;					//how far is it charged
	int m_iMaxCharge;				//max charge for this attack
	float m_flPlayerSlowDown;		//speed of the player when charging
	int m_iKiCost;					//ki needed for 1 chargepoint	
	char m_pAttackName[255];		//name of the attack	
};
#endif
