diff --git a/source/hiscore_table.cpp b/source/hiscore_table.cpp index 3eedae6..faf173c 100644 --- a/source/hiscore_table.cpp +++ b/source/hiscore_table.cpp @@ -5,12 +5,13 @@ const Uint8 SELF = 0; // Constructor -HiScoreTable::HiScoreTable(SDL_Renderer *renderer, Screen *screen, Asset *asset, Lang *lang, options_t *options) +HiScoreTable::HiScoreTable(SDL_Renderer *renderer, Screen *screen, Asset *asset, Input *input, Lang *lang, options_t *options) { // Copia los punteros this->renderer = renderer; this->screen = screen; this->asset = asset; + this->input = input; this->lang = lang; // Reserva memoria para los punteros @@ -52,6 +53,9 @@ void HiScoreTable::update() // Comprueba los eventos checkEventHandler(); + // Comprueba las entradas + checkInput(); + // Actualiza las variables if (SDL_GetTicks() - ticks > ticksSpeed) { @@ -178,21 +182,45 @@ void HiScoreTable::checkEventHandler() section.name = PROG_SECTION_QUIT; break; } + } +} - if ((eventHandler->type == SDL_KEYUP) || (eventHandler->type == SDL_JOYBUTTONUP)) +// Comprueba las entradas +void HiScoreTable::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 == mhst_auto) { - if (mode == mhst_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/hiscore_table.h b/source/hiscore_table.h index 8434965..fbc2ad3 100644 --- a/source/hiscore_table.h +++ b/source/hiscore_table.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" @@ -27,6 +28,7 @@ private: SDL_Event *eventHandler; // Manejador de eventos SDL_Texture *backbuffer; // Textura para usar como backbuffer 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 options_t *options; // Opciones y parametyros del programa @@ -49,12 +51,15 @@ private: // Comprueba los eventos void checkEventHandler(); + // Comprueba las entradas + void checkInput(); + // Transforma un valor numérico en una cadena de 6 cifras std::string scoreToString(Uint32 num); public: // Constructor - HiScoreTable(SDL_Renderer *renderer, Screen *screen, Asset *mAsset, Lang *lang, options_t *options); + HiScoreTable(SDL_Renderer *renderer, Screen *screen, Asset *asset, Input *input, Lang *lang, options_t *options); // Destructor ~HiScoreTable(); diff --git a/source/title.cpp b/source/title.cpp index e63abd5..c6c3678 100644 --- a/source/title.cpp +++ b/source/title.cpp @@ -975,7 +975,7 @@ section_t Title::runHiScoreTable(mode_hiScoreTable_e mode) return section; } - hiScoreTable = new HiScoreTable(renderer, screen, asset, lang, options); + hiScoreTable = new HiScoreTable(renderer, screen, asset, input, lang, options); section = hiScoreTable->run(mode); delete hiScoreTable;