#ifndef __BOB_H__
#define __BOB_H__

#include "g_local.h"
#include "actor.h"
#include "trigger.h"
#include "concussion.h"
#include "crossbow.h"

// varient of the Plasma Bow that's the secondary fire only
class EXPORT_FROM_DLL BobBow : public Weapon
{
public:
	CLASS_PROTOTYPE( BobBow );

	BobBow();
	virtual void Shoot( Event *ev );
};

extern Event EV_Bob_Concussion;

class EXPORT_FROM_DLL Bob : public Actor
{
private:
	float concussiontime;

	int blastcount; // fire counter
	Vector lastfirepos; // where it last fired from
	Vector lastfiredir; // direction it last fired in

public:
	CLASS_PROTOTYPE( Bob );

	Bob::Bob();
	virtual void Prethink( void );
	void Killed( Event *ev );
	qboolean InConcussionFOV( Vector pos );
	void FireConcussion( Event *ev );
	void ConcussionEffect( Event *ev );

	virtual void Archive( Archiver &arc );
	virtual void Unarchive( Archiver &arc );
};

inline EXPORT_FROM_DLL void Bob::Archive( Archiver &arc )
{
	Actor::Archive( arc );

	arc.WriteFloat( concussiontime );
	arc.WriteInteger( blastcount );
	arc.WriteVector( lastfirepos );
	arc.WriteVector( lastfiredir );
}

inline EXPORT_FROM_DLL void Bob::Unarchive( Archiver &arc )
{
	Actor::Unarchive( arc );

	arc.ReadFloat( &concussiontime );
	arc.ReadInteger( &blastcount );
	arc.ReadVector( &lastfirepos );
	arc.ReadVector( &lastfiredir );
}

#endif