//////////////////////////////////////////////////////////////////////////
// File: CEvent.h
//
// Author: Rodney Kite (RK)
//
// Purpose: The event class for the game.
//////////////////////////////////////////////////////////////////////////
#pragma once
#include <string>
using std::string;

typedef string EVENTID;

class CEvent
{
	private:
		EVENTID		m_EventID;			//	The ID of this event.
		void		*m_pParam;			//	Parameter that is specific to this event.

	public:

		//////////////////////////////////////////////////////////////////////////
		//  Function: CEvent
		//	Last Modified: 7/17/08
		//  Purpose : Constructor.
		//////////////////////////////////////////////////////////////////////////
		CEvent() { m_EventID = "Nothing Set"; m_pParam = 0; }

		//////////////////////////////////////////////////////////////////////////
		//  Function: ~CEvent
		//	Last Modified: 7/17/08
		//  Purpose : Destructor.
		//////////////////////////////////////////////////////////////////////////
		~CEvent() { }

		//////////////////////////////////////////////////////////////////////////
		//  Function: SetEventParams
		//	Last Modified: 7/17/08
		//  Purpose : set the event paramaters.
		//////////////////////////////////////////////////////////////////////////
		void SetEventParams(EVENTID eventID, void *pData = 0)
		{
			m_EventID = eventID;
			m_pParam  = pData;
		}

		//////////////////////////////////////////////////////////////////////////
		//  Function: Accessors
		//	Last Modified: 7/17/08
		//  Purpose : Returns the specified type.
		//////////////////////////////////////////////////////////////////////////
		inline void SetEventID(EVENTID eventID)	{ m_EventID = eventID; }
		inline void SetParam(void *pParam)		{ m_pParam  = pParam;  }

		//////////////////////////////////////////////////////////////////////////
		// Function: Modifiers
		//	Last Modified: 7/17/08
		//  Purpose: Modifies the specified type.
		//////////////////////////////////////////////////////////////////////////
		inline EVENTID	GetEventID(void)		{ return m_EventID;	   }
		inline void		*GetParam(void)			{ return m_pParam;	   }	
};