//========= Copyright Valve Corporation, All rights reserved. ============//
// NextBot paths that go through this entity must fulfill the given prerequisites to pass
// Michael Booth, August 2009

#ifndef FUNC_NAV_PREREQUISITE_H
#define FUNC_NAV_PREREQUISITE_H

#include "triggers.h"

/**
 * NextBot paths that pass through this entity must fulfill the given prerequisites to pass
 */
DECLARE_AUTO_LIST( IFuncNavPrerequisiteAutoList );

class CFuncNavPrerequisite : public CBaseTrigger, public IFuncNavPrerequisiteAutoList
{
	DECLARE_CLASS( CFuncNavPrerequisite, CBaseTrigger );

public:
	CFuncNavPrerequisite();

	DECLARE_DATADESC();

	virtual void Spawn( void );

	enum TaskType
	{
		TASK_NONE = 0,
		TASK_DESTROY_ENTITY = 1,
		TASK_MOVE_TO_ENTITY = 2,
		TASK_WAIT			= 3,
	};

	bool IsTask( TaskType type ) const;
	CBaseEntity *GetTaskEntity( void );
	float GetTaskValue( void ) const;

	void InputEnable( inputdata_t &inputdata );
	void InputDisable( inputdata_t &inputdata );
	bool IsEnabled( void ) const { return !m_isDisabled; }

protected:
	int m_task;
	string_t m_taskEntityName;
	float m_taskValue;
	bool m_isDisabled;
	EHANDLE m_hTaskEntity;
};

inline float CFuncNavPrerequisite::GetTaskValue( void ) const
{
	return m_taskValue;
}


#endif // FUNC_NAV_PREREQUISITE_H