///////////////////////////////////////////////////////////////////////////////
// File   : AVP_ClientActor_Civilian.h
// Author : Gareth Thomas
// Date   : 12 / 02 / 2008
//
// Copyright (C) 2006 Rebellion, All Rights Reserved.
//
///////////////////////////////////////////////////////////////////////////////

#ifdef ASURA_USE_PRAGMA_ONCE
#pragma once
#endif   // ifdef ASURA_USE_PRAGMA_ONCE

#ifndef __AVP_CLIENTACTOR_CIVILIAN_H__
#define __AVP_CLIENTACTOR_CIVILIAN_H__

////////////////////////////////////////////////////////////////////////////////
// Include files...
////////////////////////////////////////////////////////////////////////////////

#include "Entity/PhysicalObject/Actor/Vertebrates/Human/AVP_ClientActor_Human.h"
#include "Entity/PhysicalObject/Actor/Vertebrates/Human/Civilian/AVP_ServerActor_Civilian.h"
////////////////////////////////////////////////////////////////////////////////
// Forward class declarations...
////////////////////////////////////////////////////////////////////////////////

////////////////////////////////////////////////////////////////////////////////
// Class declaration...
////////////////////////////////////////////////////////////////////////////////
class AVP_ClientActor_Human;

////////////////////////////////////////////////////////////////////////////////
// Class        : AVP_ClientActor_Civilian
// Author       : Gareth Thomas
// Date         : 12 / 02 / 2008
// Description  : This class handles the operation of the Civilian actor, the
//				  Civilian is AI controlled.
////////////////////////////////////////////////////////////////////////////////
class AVP_ClientActor_Civilian : public AVP_ClientActor_Human
{

public:

	// Public functions...
	static	AVP_ClientActor_Civilian*	Create	(const Asura_Message* pxMessage);

	virtual void ReadFromClientCreateStream(Asura_Chunk_Memory_Stream& xStream, float fServerTime);

	// Static Public Functions...
	static	AVP_ClientActor_Civilian*							FindEntity	(const Asura_Guid uGuid)	{ return(s_xList.FindEntity(uGuid)); }
	static	const Asura_Hashed_List<AVP_ClientActor_Civilian>*	GetList		(void)						{ return(&s_xList); }


protected:

	// Protected functions...
	AVP_ClientActor_Civilian         (void);
	virtual ~AVP_ClientActor_Civilian	();

private:

	// Private typedefs...
	typedef AVP_ClientActor_Human PARENT;

	AVP_ServerActor_Civilian::CivilianType m_eCivType;

	// Static Private Member variables
	static	Asura_Hashed_List<AVP_ClientActor_Civilian>	s_xList;

	// Private functions...
	AVP_ClientActor_Civilian (const AVP_ClientActor_Civilian& xOther);
	AVP_ClientActor_Civilian&	operator=	(const AVP_ClientActor_Civilian& xOther);

};   // End of class 'AVP_ClientActor_Civilian'.

#endif   // ifndef __AVP_CLIENTACTOR_CIVILIAN_H__

/// End of file. ///
