From b8bb1b144f937ea2689066aa34524a6af41fa38a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sergio=20Valor=20Mart=C3=ADnez?= Date: Sun, 12 Feb 2023 19:19:39 +0100 Subject: [PATCH] Ya funcionan los nuevos inputs de teclado y mando durante las instrucciones --- source/instructions.cpp | 56 ++++++++++++++++++++++++++++++----------- source/instructions.h | 23 ++++++++++------- source/title.cpp | 2 +- 3 files changed, 57 insertions(+), 24 deletions(-) diff --git a/source/instructions.cpp b/source/instructions.cpp index 2bd43cc..4a8901c 100644 --- a/source/instructions.cpp +++ b/source/instructions.cpp @@ -4,12 +4,13 @@ const Uint8 SELF = 0; // Constructor -Instructions::Instructions(SDL_Renderer *renderer, Screen *screen, Asset *asset, Lang *lang) +Instructions::Instructions(SDL_Renderer *renderer, Screen *screen, Asset *asset, Input *input, Lang *lang) { // Copia los punteros this->renderer = renderer; this->screen = screen; this->asset = asset; + this->input = input; this->lang = lang; // Reserva memoria para los punteros @@ -40,7 +41,7 @@ Instructions::Instructions(SDL_Renderer *renderer, Screen *screen, Asset *asset, backbuffer = SDL_CreateTexture(renderer, SDL_PIXELFORMAT_RGBA8888, SDL_TEXTUREACCESS_TARGET, GAMECANVAS_WIDTH, GAMECANVAS_HEIGHT); if (backbuffer == nullptr) { - std::cout << "Error: textTexture could not be created!\nSDL Error: " << SDL_GetError() << std::endl; + std::cout << "Error: textTexture could not be created!\nSDL Error: " << SDL_GetError() << std::endl; } // Inicializa variables @@ -75,6 +76,9 @@ void Instructions::update() // Comprueba los eventos checkEventHandler(); + // Comprueba las entradas + checkInput(); + // Actualiza las variables if (SDL_GetTicks() - ticks > ticksSpeed) { @@ -216,21 +220,45 @@ void Instructions::checkEventHandler() section.name = PROG_SECTION_QUIT; break; } + } +} - if ((eventHandler->type == SDL_KEYUP) || (eventHandler->type == SDL_JOYBUTTONUP)) +// Comprueba las entradas +void Instructions::checkInput() +{ + if (input->checkInput(input_exit, REPEAT_FALSE)) + { + section.name = PROG_SECTION_QUIT; + } + + else if (input->checkInput(input_window_fullscreen, REPEAT_FALSE)) + { + screen->switchVideoMode(); + } + + else if (input->checkInput(input_window_dec_size, REPEAT_FALSE)) + { + screen->decWindowSize(); + } + + else if (input->checkInput(input_window_inc_size, REPEAT_FALSE)) + { + screen->incWindowSize(); + } + + else if (input->checkInput(input_pause, REPEAT_FALSE) || input->checkInput(input_accept, REPEAT_FALSE) || input->checkInput(input_fire_left, REPEAT_FALSE) || input->checkInput(input_fire_center, REPEAT_FALSE) || input->checkInput(input_fire_right, REPEAT_FALSE)) + { + if (mode == m_auto) { - if (mode == m_auto) + JA_StopMusic(); + section.name = PROG_SECTION_TITLE; + section.subsection = TITLE_SECTION_1; + } + else + { + if (counter > 30) { - JA_StopMusic(); - section.name = PROG_SECTION_TITLE; - section.subsection = TITLE_SECTION_1; - } - else - { - if (counter > 30) - { - manualQuit = true; - } + manualQuit = true; } } } diff --git a/source/instructions.h b/source/instructions.h index bf01163..2988f37 100644 --- a/source/instructions.h +++ b/source/instructions.h @@ -2,6 +2,7 @@ #include #include "common/asset.h" +#include "common/input.h" #include "common/jail_audio.h" #include "common/screen.h" #include "common/sprite.h" @@ -23,15 +24,16 @@ class Instructions { private: // Objetos y punteros - SDL_Renderer *renderer; // El renderizador de la ventana - Screen *screen; // Objeto encargado de dibujar en pantalla + SDL_Renderer *renderer; // El renderizador de la ventana + Screen *screen; // Objeto encargado de dibujar en pantalla std::vector itemTextures; // Vector con las texturas de los items - SDL_Event *eventHandler; // Manejador de eventos - SDL_Texture *backbuffer; // Textura para usar como backbuffer - Sprite *sprite; // Sprite con la textura de las instrucciones - Asset *asset; // Objeto que gestiona todos los ficheros de recursos - Lang *lang; // Objeto para gestionar los textos en diferentes idiomas - Text *text; // Objeto para escribir texto + SDL_Event *eventHandler; // Manejador de eventos + SDL_Texture *backbuffer; // Textura para usar como backbuffer + Sprite *sprite; // Sprite con la textura de las instrucciones + Asset *asset; // Objeto que gestiona todos los ficheros de recursos + Input *input; // Objeto pata gestionar la entrada + Lang *lang; // Objeto para gestionar los textos en diferentes idiomas + Text *text; // Objeto para escribir texto // Variables Uint16 counter; // Contador @@ -51,9 +53,12 @@ private: // Comprueba los eventos void checkEventHandler(); + // Comprueba las entradas + void checkInput(); + public: // Constructor - Instructions(SDL_Renderer *renderer, Screen *screen, Asset *mAsset, Lang *lang); + Instructions(SDL_Renderer *renderer, Screen *screen, Asset *asset, Input *input, Lang *lang); // Destructor ~Instructions(); diff --git a/source/title.cpp b/source/title.cpp index 0051d81..e63abd5 100644 --- a/source/title.cpp +++ b/source/title.cpp @@ -957,7 +957,7 @@ section_t Title::run() // Ejecuta la parte donde se muestran las instrucciones section_t Title::runInstructions(mode_e mode) { - instructions = new Instructions(renderer, screen, asset, lang); + instructions = new Instructions(renderer, screen, asset, input, lang); section = instructions->run(mode); delete instructions;