#ifndef _H_SPACESHOOTER_APP_
#define _H_SPACESHOOTER_APP_


//#include	<memory.h>
#include	"Core/AGK_App.h"
#include	"Core/GameState.h"

#define	TITLE							"Space Shooter"
#define DEVICE_WIDTH					1024
#define DEVICE_HEIGHT					683
#define FULLSCREEN						false

class	CLevel;
class	CAliens;
class	CPlayer;

//	This is a derived class of 'AGK_App'. this class has three pure virtual 
//	functions. these are 'Begin', 'Loop' and 'End'. these must be declared 
//	and defined in the derived class.
//	that is our main game class. here are initialized our global resouces and
//	running the main game loop.
class CSpaceShooterApp : public AGK_App
{
public:
	// constructor
	CSpaceShooterApp();
	~CSpaceShooterApp() {}

	// runs before the main loop is calling
	void Begin(void);

	// main loop
	void Loop(void);

	// relese some media at the end?
	void End(void);

protected:
	// handling the game states ;).
	// the current state
	EGameState		m_eCurrentState					= EGS_Start;

	//	an array with our state-pointers
	CGameState*		m_ppStates[EGS_StateCount]		= {};

	CLevel*		m_pScenery							= 0L;
	CAliens*	m_pAliens							= 0L;
	CPlayer*	m_pPlayer							= 0L;
};

#endif

// Allow us to use the LoadImage function name
#ifdef LoadImage
#undef LoadImage
#endif