//========= Copyright Valve Corporation, All rights reserved. ============//
// boss_alpha_launch_grenades.h
// Michael Booth, November 2010

#ifndef BOSS_ALPHA_LAUNCH_GRENADES_H
#define BOSS_ALPHA_LAUNCH_GRENADES_H

#ifdef TF_RAID_MODE

#include "tf_weapon_grenade_pipebomb.h"

class CBossAlphaLaunchGrenades : public Action< CBossAlpha >
{
public:
	virtual ActionResult< CBossAlpha >	OnStart( CBossAlpha *me, Action< CBossAlpha > *priorAction );
	virtual ActionResult< CBossAlpha >	Update( CBossAlpha *me, float interval );
	virtual void					OnEnd( CBossAlpha *me, Action< CBossAlpha > *nextAction );

	// if anything interrupts this action, abort it
	virtual ActionResult< CBossAlpha >	OnSuspend( CBossAlpha *me, Action< CBossAlpha > *interruptingAction )	{ return Done(); }

	virtual const char *GetName( void ) const	{ return "LaunchGrenades"; }		// return name of this action

private:
	CountdownTimer m_timer;
	CountdownTimer m_detonateTimer;
	CUtlVector< CHandle< CTFGrenadePipebombProjectile > > m_grenadeVector;
	void LaunchGrenade( CBossAlpha *me, const Vector &launchVel, CTFWeaponInfo *weaponInfo );
	void LaunchGrenadeRings( CBossAlpha *me );
	void LaunchGrenadeSpokes( CBossAlpha *me );
	int m_animLayer;
};

#endif // TF_RAID_MODE

#endif // BOSS_ALPHA_LAUNCH_GRENADES_H