//////////////////////////////////////////////////////////////////////////////
//
// AVP_Behaviour_FaceHugger_Wander.h
//
// 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 __AVP_BEHAVIOUR_FACEHUGGER_WANDER_H__
#define __AVP_BEHAVIOUR_FACEHUGGER_WANDER_H__ 1

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

// I N C L U D E S ///////////////////////////////////////////////////////////

// axon
#include "Behaviour/Axon_Project_Behaviour.h"

// F O R W A R D   D E C L A R A T I O N S ///////////////////////////////////

class AVP_Brain_Actor_FaceHugger;

//////////////////////////////////////////////////////////////////////////////
//
// AVP_Behaviour_FaceHugger_Wander
//
//////////////////////////////////////////////////////////////////////////////

class AVP_Behaviour_FaceHugger_Wander : public Axon_Project_Behaviour
{
	typedef Axon_Project_Behaviour PARENT;

public:
	AVP_Behaviour_FaceHugger_Wander( AVP_Brain_Actor_FaceHugger* pxBrain );
	void SetCenterPoint(const Asura_Vector_3& xCenter);
	void SetAvoidLight();

protected:
	virtual void Deactivate();
	virtual void Update( const float fTimeslice );

#ifndef ASURA_NO_DEBUG_OUTPUT
	virtual void RenderDebugInfo();
#endif

private:
	enum State
	{
		GETTING_TO_POSITION,
		WAIT
	};
	void SwitchToState( const State eNextState );

	AVP_Brain_Actor_FaceHugger* GetFaceHuggerBrain() const;

private:

	u_short FindNextRandomWaypoint(u_short usCurrenWaypoint) const;

	State m_eCurrentState;
	float m_fTimeInState;
	u_short m_usCenterWaypoint;
	bool m_bIsCenterValid;
	bool m_bAvoidLight;
};

//////////////////////////////////////////////////////////////////////////////
//
// 
//
//////////////////////////////////////////////////////////////////////////////

#endif //__AVP_BEHAVIOUR_FACEHUGGER_WANDER_H__
