diff --git a/source/game.cpp b/source/game.cpp index 625892a..6330ad5 100644 --- a/source/game.cpp +++ b/source/game.cpp @@ -81,6 +81,10 @@ void Game::checkEventHandler() { switch (eventHandler->key.keysym.scancode) { + case SDL_SCANCODE_ESCAPE: + section.name = SECTION_PROG_TITLE; + break; + case SDL_SCANCODE_D: debug = !debug; break; diff --git a/source/title.cpp b/source/title.cpp index b450556..c759b9a 100644 --- a/source/title.cpp +++ b/source/title.cpp @@ -11,11 +11,12 @@ Title::Title(SDL_Renderer *renderer, Screen *screen, Asset *asset) // Reserva memoria para los punteros eventHandler = new SDL_Event(); texture = new LTexture(renderer, asset->get("loading_screen2.png")); - sprite = new Sprite(0,0, texture->getWidth(), texture->getHeight(), texture, renderer); + sprite = new Sprite(0, 0, texture->getWidth(), texture->getHeight(), texture, renderer); + text = new Text(asset->get("smb2.png"), asset->get("smb2.txt"), renderer); // Inicializa variables counter = 0; - section.name = SECTION_PROG_LOGO; + section.name = SECTION_PROG_TITLE; section.subsection = 0; ticks = 0; ticksSpeed = 15; @@ -24,9 +25,10 @@ Title::Title(SDL_Renderer *renderer, Screen *screen, Asset *asset) // Destructor Title::~Title() { + delete eventHandler; delete texture; delete sprite; - delete eventHandler; + delete text; } // Comprueba el manejador de eventos @@ -42,11 +44,23 @@ void Title::checkEventHandler() break; } - // Cualquier tecla pulsada - if ((eventHandler->type == SDL_KEYDOWN) || (eventHandler->type == SDL_JOYBUTTONDOWN)) + // Comprueba si se ha pulsado alguna tecla + else if ((eventHandler->type == SDL_KEYDOWN) and (eventHandler->key.repeat == 0)) { - section.name = SECTION_PROG_GAME; - section.subsection = 0; + switch (eventHandler->key.keysym.scancode) + { + case SDL_SCANCODE_ESCAPE: + section.name = SECTION_PROG_QUIT; + break; + + case SDL_SCANCODE_RETURN: + section.name = SECTION_PROG_GAME; + section.subsection = 0; + break; + + default: + break; + } } } } @@ -65,6 +79,13 @@ void Title::update() // Incrementa el contador counter++; + + // Comprueba si ha pasado mucho tiempo y acaba el titulo + if (counter == 1000) + { + section.name = SECTION_PROG_LOGO; + section.subsection = 0; + } } } @@ -79,6 +100,13 @@ void Title::render() // Dibuja los objetos sprite->render(); + SDL_SetRenderDrawColor(renderer, 0, 0, 255, 255); + SDL_Rect rect = {0, 192 / 5 * 4, 256, 8}; + SDL_RenderFillRect(renderer, &rect); + if (counter % 80 < 60) + text->writeCentered(256 / 2, 192 / 5 * 4, "PRESS ENTER TO PLAY"); + + //text->write(0, 0, std::to_string(counter)); // Vuelca el contenido del renderizador en pantalla screen->blit(); @@ -90,7 +118,7 @@ section_t Title::run() // Detiene la música JA_StopMusic(); - while (section.name == SECTION_PROG_LOGO) + while (section.name == SECTION_PROG_TITLE) { update(); render(); diff --git a/source/title.h b/source/title.h index ffa2d88..8243d65 100644 --- a/source/title.h +++ b/source/title.h @@ -6,6 +6,7 @@ #include "sprite.h" #include "screen.h" #include "asset.h" +#include "text.h" #include "jail_audio.h" #include @@ -22,6 +23,7 @@ private: SDL_Event *eventHandler; // Manejador de eventos LTexture *texture; // Textura con los graficos Sprite *sprite; // Sprite para manejar la textura + Text *text; // Objeto para escribir texto en pantalla int counter; // Contador section_t section; // Estado del bucle principal para saber si continua o se sale int ticks; // Contador de ticks para ajustar la velocidad del programa