#ifndef _GAME_STATE_H_
#define _GAME_STATE_H_

// enumeration of all states.
enum EGameState
{
	EGS_Start = 0,
	EGS_Play,
	EGS_End,

	EGS_StateCount
};

// abstract state-class. each derivation of this class must implement the 
// functions 'Run' and 'Reset'. the constructor of the derived class must 
// set the correct state-enumeration.
class CGameState
{
public:
	// constructor / destructor
	CGameState(EGameState eState) : m_eState(eState) {}
	~CGameState() {}

	// pure virtual function must implement in the derived class.
	virtual EGameState		Run(float fFrameTime) = 0;
	virtual void			Reset() = 0;

protected:
	// identify the state
	EGameState		m_eState;
};


#endif // !_GAME_STATE_H_