//-----------------------------------------------------------------------------
// File		: ToolsAVP_Entity_Human.h
// Author	: Gareth Thomas
// Created	: 18 / 12 / 07
// Copyright (C) 2006 Rebellion, All Rights Reserved.
//-----------------------------------------------------------------------------

//-----------------------------------------------------------------------------
// Begin File Wrapper
#ifdef ASURA_USE_PRAGMA_ONCE
#pragma once
#endif
#ifndef _TOOLSAVP_ENTITY_CIVILIAN_H_
#define _TOOLSAVP_ENTITY_CIVILIAN_H_
// End File Wrapper
//-----------------------------------------------------------------------------

//-----------------------------------------------------------------------------
// Includes
//-----------------------------------------------------------------------------
#include "Entity/PhysicalObject/Actor/Vertebrates/Human/ToolsAVP_Entity_Human.h"
//#include "Objects/Tools_Object_System.h"
//#include "Tools_Mode.h"

//-----------------------------------------------------------------------------
// Forward Declarations
//-----------------------------------------------------------------------------

class AVP_ServerActor_Civilian;

//-----------------------------------------------------------------------------
// Class : ToolsAVP_Entity_Civilian
//-----------------------------------------------------------------------------
class ToolsAVP_Entity_Civilian : public ToolsAVP_Entity_Human
{
	typedef ToolsAVP_Entity_Human PARENT;

public:
	static Tools_Object*				Create( const bool bFullInit );
	static Tools_Object*				Create(Asura_Entity* pxEntity);
	static void							Project_Create();
	static ToolsAVP_Entity_Civilian*	FindEntity(Asura_Guid uGuid)			{return s_xList.FindEntity(uGuid);}
	virtual Tools_Object*				CreateObjectOfThisType() const { return Create( false ); }
	virtual void						Copy(const Tools_Object* pxObject);
	virtual void						OnSelection(void);
	virtual void						OnDeselection(void);
	virtual void						Render(void);
	virtual bool						HandlesThisEvent(int iEventID) const;

protected:

	static void SelectGuardZoneAddLink(void);
	static void SelectGuardZoneRemoveLink(void);
	static void SetGuardZoneGuid(Asura_Guid uGuid);

	ToolsAVP_Entity_Civilian(AVP_ServerActor_Civilian* pxActor);
	virtual ~ToolsAVP_Entity_Civilian(void);

	virtual const char*					GetTypeDescription(void)				{return "Civilian";}
	virtual Asura_Hash_ID				GetDefaultBlueprintHashID(void) const	{return 0x05f0612d;} // Asura_GetHashID( "Human" ) // human for now as we have no android specific settings.
	virtual void						RestoreMesh(); 

private:

	AVP_ServerActor_Civilian*							m_pxCivilian;
	static ToolsAVP_Entity_Civilian*					s_pxSelectedCivilian; 

	static Asura_Hashed_List<ToolsAVP_Entity_Civilian>	s_xList;
};

#endif //_TOOLSAVP_ENTITY_CIVILIAN_H_
