//////////////////////////////////////////////////////////////////////////////
//
// ToolsAVP_Node_GuardZone.h
//
// (Stuart Perry - 18.04.2007) 
//
// Copyright (c) 2007 Rebellion. All rights reserved.
//
//////////////////////////////////////////////////////////////////////////////

// B E G I N   F I L E   W R A P P E R ///////////////////////////////////////

#ifdef ASURA_USE_PRAGMA_ONCE
#pragma once
#endif

#ifndef TOOLSAVP_NODE_GUARDZONE_H___
#define TOOLSAVP_NODE_GUARDZONE_H___ 1

// I N C L U D E S ///////////////////////////////////////////////////////////
#include "Entity/Locations/GuardZone/Tools_EntityNode_GuardZone.h"

//////////////////////////////////////////////////////////////////////////////
//
// ToolsAVP_Node_GuardZone
//
//////////////////////////////////////////////////////////////////////////////
class ToolsAVP_Node_GuardZone : public Tools_EntityNode_GuardZone
{
private:

	typedef Tools_EntityNode_GuardZone PARENT;

public:
	
	// Constructor / destructor
	ToolsAVP_Node_GuardZone( Asura_Entity* pxEntity );
	virtual ~ToolsAVP_Node_GuardZone();

	// Public Virtual Overridden Functions
	virtual void					AddOverlayControls		(class Asura_Overlay* pxNewOverlay, class Asura_Vector_2& xOffset);
	virtual void					OnSelection				(void);
	virtual void					OnDeselection			(void);
	virtual void					UpdateWhileSelected		(void);
	virtual void					Render					(void);

	// Public Static Functions...
	static void						Project_Create			(void);
	static void						Create					(void);
	static Tools_Object*			Create					(Asura_Entity* pxEntity);

	// Public Member Functions...
	u_int							GetNumPatrolPoints		(void) const			{return m_uNumPatrolPoints;}

protected:
	
	// Protected Virtual Member Functions...
	virtual bool					AddGuardPoint			(const Asura_Vector_3& xPosition);

private:
	
	// Private Static Functions...
	static ToolsAVP_Node_GuardZone* CreateAndReturn			(void);
	
	// Private Static Variables...
	static ToolsAVP_Node_GuardZone*	s_pxAVPToolsGuardZone;

	// Private Member Variables...
	bool							m_bChanged;
	int								m_iPatrolType;
	u_int							m_uNumPatrolPoints;
	float							m_fDisplayErrorTimer;
	bool							m_bStartedToDisplayError;
};

// E N D   F I L E   W R A P P E R ///////////////////////////////////////////

#endif // #ifndef TOOLSAVP_NODE_GUARDZONE_H___
