//===========================================================================//
// File:    rpdirect.hh                                                      //
// Project: Red Planet                                                 		  //
// Contents: Chooses from a Selection of Camerea's and provides information  //
//	to any number of cameraship's as to which player to follow					  //
//---------------------------------------------------------------------------//
//   Date    Who  Modification                                               //
// --------  ---  ---------------------------------------------------------- //
// 12/12/95  JM  Initial coding.                                             //
//---------------------------------------------------------------------------//
// Copyright (C) 1995, Virtual World Entertainment, Inc.                     //
// All Rights reserved worldwide                                             //
// This unpublished sourcecode is PROPRIETARY and CONFIDENTIAL               //
//===========================================================================//

#if !defined (RPDIRECT_HPP)
#define RPDIRECT_HPP

#	if !defined (DIRECTOR_HPP)
#		include <director.hpp>
#	endif

	class RPPlayer;

	class RPCameraDirector :
		public CameraDirector
	{
	//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
	// Shared Data support
	//
	public:

		static Derivation ClassDerivations;
		static SharedData DefaultData;

	//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
	// Simulation Support
	//
	public:
		typedef void
			(RPCameraDirector::*Performance)(Scalar time_slice);

		void
			SetPerformance(Performance performance)
				{
					Check(this);
					activePerformance = (Simulation::Performance)performance;
				}

		void
			CreateRPCameraShip(Scalar);

		void
			BeARPDirector(Scalar);

	//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
	// Construction and Destruction Support
	//
		RPCameraDirector(
			MakeMessage	*creation_message,
			SharedData &virtual_data = DefaultData
		);

		static RPCameraDirector*
			RPCameraDirector::Make(CameraDirector::MakeMessage *creation_message);

		~RPCameraDirector();

		Logical
			TestInstance() const;

	protected:
		RPPlayer
			*currentWatchedPlayer;

		Logical
			martianFootball;
	};

#endif
