Máquina de estados

La mejor forma para ver el funcionamiento de la máquina de estados es con un ejemplo, en nuestro caso será el estado “SPLASH” en el cual aparece el logo des estudio Pepes Games.

Para añadir una ventana con el logotipo del estudio crearemos un nuevo objeto del tipo Sprite y un nuevo estado en el que se mostrara la imagen y cargará el menú principal al presionar ESC

enum State {
	STARTUP,
	SPLASH, 
	MAIN_MENU,
	GAME,
	HIGHSCORE,
	SELECT_PROFILE,
	CREATE_PROFILE1,
	CREATE_PROFILE2,
	EXIT = -1
};


Y un objeto del tipo Sprite En el constructor de GameController asignamos g_ g_NextGameState el estado de SPLASH

g_NextGameState = SPLASH;

En la función Update capturamos el nuevo estado y definimos que en el caso de pulsar ‘ESC’ por el jugador el estado pasará a MAIN_MENU

else if (g_GameState == SPLASH)
{
	//If ESCAPE KEY PRESSED
	int inKey = m_keyboard->DetectOneKeyReleased(SDLK_ESCAPE);
	if (inKey != 0)
		g_NextGameState = MAIN_MENU;
}


En la función Draw realizaremos el dibujo del objeto m_splashscreen y un texto con

el mensaje presione escape cuando el estado sea SPLASH

//Draw splash screen
else if (g_GameState == SPLASH) 
{
	m_splashscreen->DrawImage(280, 150, 500, 400);
	m_textfont->DrawTxt("Press 'Esc'", 400, 700, 20, 30, 1);
}

Declaración del objeto

Sprite* m_splashscreen;

En la función LoadAssets Cargamos la imagen y construimos el objeto

m_splashscreen = new Sprite("./Images/PepeLogo.png");