//-----------------------------------------------------------------------------
//
//  $Logfile:: /Quake 2 Engine/Sin/code/game/rocket_turret.h                  $
// $Revision:: 5                                                              $
//   $Author:: Markd                                                          $
//     $Date:: 9/22/98 12:49p                                                 $
//
// Copyright (C) 1998 by Ritual Entertainment, Inc.
// All rights reserved.
//
// This source is may not be distributed and/or modified without
// expressly written permission by Ritual Entertainment, Inc.
//
// $Log:: /Quake 2 Engine/Sin/code/game/rocket_turret.h                       $
//
// 5     9/22/98 12:49p Markd
// Put in archive and unarchive functions
//
// 4     7/24/98 10:05p Aldie
// Speed and rocket rate
//
// 3     7/10/98 3:08p Aldie
// Simple prediction for rocket firing
//
// 2     7/07/98 4:12p Aldie
// Updated to new class hierarchy
//
// DESCRIPTION:
// Rocket based turret

#ifndef __ROCKET_TURRET_H__
#define __ROCKET_TURRET_H__

#include "turret.h"

class EXPORT_FROM_DLL RocketTurret : public Turret
{
protected:
	Vector new_orientation;
	Vector enemy_oldorigin;

public:
	CLASS_PROTOTYPE( RocketTurret );

	float speed;
	float rate;

	RocketTurret();
	virtual void   Seek( Event *ev );
	virtual void   Turn( Event *ev );
	virtual void   SetSpeed( Event *ev );
	virtual void   SetRate( Event *ev );
	virtual void   Archive( Archiver &arc );
	virtual void   Unarchive( Archiver &arc );
};

inline EXPORT_FROM_DLL void RocketTurret::Archive( Archiver &arc )
{
	Turret::Archive( arc );

	arc.WriteVector( new_orientation );
	arc.WriteVector( enemy_oldorigin );
	arc.WriteFloat( speed );
	arc.WriteFloat( rate );
}

inline EXPORT_FROM_DLL void RocketTurret::Unarchive( Archiver &arc )
{
	Turret::Unarchive( arc );

	arc.ReadVector( &new_orientation );
	arc.ReadVector( &enemy_oldorigin );
	arc.ReadFloat( &speed );
	arc.ReadFloat( &rate );
}


#endif // rocket_turret