//////////////////////////////////////////////////////////////////////////////
//
// AVP_Behaviour_AVP3Alien.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_AVP3ALIEN_H__
#define __AVP_BEHAVIOUR_AVP3ALIEN_H__ 1

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

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

#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 Axon_Project_Brain;

//////////////////////////////////////////////////////////////////////////////
//
// AVP_Behaviour_AVP3Alien
//
//////////////////////////////////////////////////////////////////////////////

class AVP_Behaviour_AVP3Alien : public Axon_Project_Behaviour
{
    typedef Axon_Project_Behaviour PARENT;

public:
    AVP_Behaviour_AVP3Alien( Axon_Project_Brain* pxBrain );
    virtual ~AVP_Behaviour_AVP3Alien() {}

    virtual bool Activate();
    virtual void Deactivate();
    virtual void Pause();
    virtual void Unpause();
    virtual void Update( const float fTimeslice );

#ifndef ASURA_NO_DEBUG_OUTPUT
    virtual void RenderDebugInfo();
#endif

	// Function to test if the alien should flee or not
	void PerformFleeTest(void);
	// Function to test if the alien should rally or not
	void PerformRallyTest(void);

private:
    enum State
    {
        UNSET,
        STALKING,
		ATTACKING,
        WANDERING,
		FLEEING
    };
    void SwitchToState( const State eNextState );
    
private:
    State m_eCurrentState;
    float m_fTimeInState;
	bool  m_bFleeCheckFailedOnce;
};

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

#endif //__AVP_BEHAVIOUR_AVP3ALIEN_H__
