//========= Copyright © 1996-2005, Valve Corporation, All rights reserved. ============//
//
// Purpose: 
//
// $NoKeywords: $
//
//=============================================================================//
#ifndef LOGICRTSOBJECTIVES_H
#define LOGICRTSOBJECTIVES_H

#include "cbase.h"
#include "entityinput.h"
#include "entityoutput.h"
#include "eventqueue.h"

typedef struct objdata_t 
{
	int m_iObjectiveID;
	int m_iType;

	DECLARE_SIMPLE_DATADESC();
} objdata_t;

class CLogicRTSObjectives : public CLogicalEntity
{
public:
	DECLARE_CLASS( CLogicRTSObjectives, CLogicalEntity );

	CLogicRTSObjectives();

	//void Activate();
	//void Think();
	// for save/restore, apply objectives again
	//virtual int						Restore( IRestore &restore );
	virtual void					OnRestore();

	// Input handlers
	void InputEnable( inputdata_t &inputdata );
	void InputDisable( inputdata_t &inputdata );
	void InputToggle( inputdata_t &inputdata );

	void InputObjectiveCompleted( inputdata_t &inputdata );
	void InputObjectiveFailed( inputdata_t &inputdata );
	void InputObjectiveSetVisible( inputdata_t &inputdata );
	void InputObjectiveHide( inputdata_t &inputdata );

	DECLARE_DATADESC();

	// Outputs
	//COutputEvent m_OnTrigger;
	COutputEvent m_OnSpawn;

private:
	bool m_bDisabled;

	CUtlVector<objdata_t> m_ObjectiveData;
};

#endif //LOGICRTSOBJECTIVES_H
