diff --git a/source/credits.cpp b/source/credits.cpp index b9154df..7fb2e63 100644 --- a/source/credits.cpp +++ b/source/credits.cpp @@ -79,56 +79,57 @@ void Credits::checkEventHandler() section->name = SECTION_PROG_QUIT; break; } + } +} - // Comprueba las teclas que se han pulsado - if ((eventHandler->type == SDL_KEYDOWN && eventHandler->key.repeat == 0) || (eventHandler->type == SDL_JOYBUTTONDOWN)) - { - switch (eventHandler->key.keysym.scancode) - { - case SDL_SCANCODE_ESCAPE: - section->name = SECTION_PROG_QUIT; - break; +// Comprueba las entradas +void Credits::checkInput() +{ - case SDL_SCANCODE_B: - screen->switchBorder(); - resource->reLoadTextures(); - break; + if (input->checkInput(input_exit, REPEAT_FALSE)) + { + section->name = SECTION_PROG_QUIT; + } - case SDL_SCANCODE_F: - screen->switchVideoMode(); - resource->reLoadTextures(); - break; + else if (input->checkInput(input_toggle_border, REPEAT_FALSE)) + { + screen->switchBorder(); + } - case SDL_SCANCODE_F1: - screen->setWindowSize(1); - resource->reLoadTextures(); - break; + else if (input->checkInput(input_video_mode, REPEAT_FALSE)) + { + screen->switchVideoMode(); + } - case SDL_SCANCODE_F2: - screen->setWindowSize(2); - resource->reLoadTextures(); - break; + else if (input->checkInput(input_window_size_1, REPEAT_FALSE)) + { + screen->setWindowSize(1); + } - case SDL_SCANCODE_F3: - screen->setWindowSize(3); - resource->reLoadTextures(); - break; + else if (input->checkInput(input_window_size_2, REPEAT_FALSE)) + { + screen->setWindowSize(2); + } - case SDL_SCANCODE_F4: - screen->setWindowSize(4); - resource->reLoadTextures(); - break; + else if (input->checkInput(input_window_size_3, REPEAT_FALSE)) + { + screen->setWindowSize(3); + } - case SDL_SCANCODE_F5: - switchPalette(); - break; + else if (input->checkInput(input_window_size_4, REPEAT_FALSE)) + { + screen->setWindowSize(4); + } - default: - section->name = SECTION_PROG_TITLE; - section->subsection = 0; - break; - } - } + else if (input->checkInput(input_swap_palette, REPEAT_FALSE)) + { + switchPalette(); + } + + else if (input->checkInput(input_pause, REPEAT_FALSE) || input->checkInput(input_accept, REPEAT_FALSE) || input->checkInput(input_jump, REPEAT_FALSE)) + { + section->name = SECTION_PROG_TITLE; + section->subsection = 0; } } @@ -268,14 +269,17 @@ void Credits::updateCounter() // Actualiza las variables void Credits::update() { + // Comprueba el manejador de eventos + checkEventHandler(); + // Comprueba que la diferencia de ticks sea mayor a la velocidad del juego if (SDL_GetTicks() - ticks > ticksSpeed) { // Actualiza el contador de ticks ticks = SDL_GetTicks(); - // Comprueba el manejador de eventos - checkEventHandler(); + // Comprueba las entradas + checkInput(); // Actualiza el contador updateCounter(); diff --git a/source/credits.h b/source/credits.h index 0c76163..3b866b5 100644 --- a/source/credits.h +++ b/source/credits.h @@ -57,6 +57,9 @@ private: // Comprueba el manejador de eventos void checkEventHandler(); + // Comprueba las entradas + void checkInput(); + // Actualiza el contador void updateCounter(); diff --git a/source/demo.cpp b/source/demo.cpp index e9c52c8..a31ecc3 100644 --- a/source/demo.cpp +++ b/source/demo.cpp @@ -29,7 +29,7 @@ Demo::Demo(SDL_Renderer *renderer, Screen *screen, Resource *resource, Asset *as // Crea los objetos itemTracker = new ItemTracker(); - scoreboard = new ScoreBoard(renderer, resource, asset, input, options, &board); + scoreboard = new ScoreBoard(renderer, resource, asset, options, &board); room = new Room(resource->getRoom(currentRoom), renderer, screen, asset, options, itemTracker, &board.items, false, debug); eventHandler = new SDL_Event(); text = new Text(resource->getOffset("smb2.txt"), resource->getTexture("smb2.png"), renderer); @@ -73,56 +73,63 @@ void Demo::checkEventHandler() screen->setBorderColor(stringToColor(options->palette, "black")); break; } + } +} - // Comprueba las teclas que se han pulsado - if ((eventHandler->type == SDL_KEYDOWN && eventHandler->key.repeat == 0) || (eventHandler->type == SDL_JOYBUTTONDOWN)) - { - switch (eventHandler->key.keysym.scancode) - { - case SDL_SCANCODE_ESCAPE: - section->name = SECTION_PROG_QUIT; - break; +// Comprueba las entradas +void Demo::checkInput() +{ - case SDL_SCANCODE_B: - screen->switchBorder(); - reLoadTextures(); - break; + if (input->checkInput(input_exit, REPEAT_FALSE)) + { + section->name = SECTION_PROG_QUIT; + } - case SDL_SCANCODE_F: - screen->switchVideoMode(); - reLoadTextures(); - break; + else if (input->checkInput(input_toggle_border, REPEAT_FALSE)) + { + screen->switchBorder(); + reLoadTextures(); + } - case SDL_SCANCODE_F1: - screen->setWindowSize(1); - reLoadTextures(); - break; + else if (input->checkInput(input_video_mode, REPEAT_FALSE)) + { + screen->switchVideoMode(); + reLoadTextures(); + } - case SDL_SCANCODE_F2: - screen->setWindowSize(2); - reLoadTextures(); - break; + else if (input->checkInput(input_window_size_1, REPEAT_FALSE)) + { + screen->setWindowSize(1); + reLoadTextures(); + } - case SDL_SCANCODE_F3: - screen->setWindowSize(3); - reLoadTextures(); - break; + else if (input->checkInput(input_window_size_2, REPEAT_FALSE)) + { + screen->setWindowSize(2); + reLoadTextures(); + } - case SDL_SCANCODE_F4: - screen->setWindowSize(4); - reLoadTextures(); - break; + else if (input->checkInput(input_window_size_3, REPEAT_FALSE)) + { + screen->setWindowSize(3); + reLoadTextures(); + } - case SDL_SCANCODE_F5: - switchPalette(); - break; + else if (input->checkInput(input_window_size_4, REPEAT_FALSE)) + { + screen->setWindowSize(4); + reLoadTextures(); + } - default: - section->name = SECTION_PROG_TITLE; - section->subsection = 0; - break; - } - } + else if (input->checkInput(input_swap_palette, REPEAT_FALSE)) + { + switchPalette(); + } + + else if (input->checkInput(input_pause, REPEAT_FALSE) || input->checkInput(input_accept, REPEAT_FALSE) || input->checkInput(input_jump, REPEAT_FALSE)) + { + section->name = SECTION_PROG_TITLE; + section->subsection = 0; } } @@ -139,14 +146,17 @@ void Demo::run() // Actualiza el juego, las variables, comprueba la entrada, etc. void Demo::update() { + // Comprueba los eventos de la cola + checkEventHandler(); + // Comprueba que la diferencia de ticks sea mayor a la velocidad del juego if (SDL_GetTicks() - ticks > ticksSpeed) { // Actualiza el contador de ticks ticks = SDL_GetTicks(); - // Comprueba los eventos de la cola - checkEventHandler(); + // Comprueba las entradas + checkInput(); // Actualiza los objetos room->update(); diff --git a/source/demo.h b/source/demo.h index 387b2cd..cf5b6ef 100644 --- a/source/demo.h +++ b/source/demo.h @@ -57,6 +57,9 @@ private: // Comprueba los eventos de la cola void checkEventHandler(); + // Comprueba las entradas + void checkInput(); + // Escribe el nombre de la pantalla void renderRoomName(); diff --git a/source/director.cpp b/source/director.cpp index ba8ef6b..85acd06 100644 --- a/source/director.cpp +++ b/source/director.cpp @@ -19,7 +19,7 @@ Director::Director(int argc, char *argv[]) section->subsection = SUBSECTION_LOGO_TO_INTRO; #ifdef DEBUG - section->name = SECTION_PROG_GAME; + section->name = SECTION_PROG_LOGO; #endif // Crea e inicializa las opciones del programa @@ -1241,6 +1241,7 @@ void Director::initInput() input->bindKey(input_swap_palette, SDL_SCANCODE_F5); input->bindKey(input_switch_music, SDL_SCANCODE_M); input->bindKey(input_video_mode, SDL_SCANCODE_F); + input->bindKey(input_toggle_border, SDL_SCANCODE_B); // Mando - Movimiento input->bindGameControllerButton(input_jump, SDL_CONTROLLER_BUTTON_B); @@ -1782,7 +1783,7 @@ void Director::runEnterID() std::cout << "\n* SECTION: ENTER_ID" << std::endl; } // loadResources(section); - enterID = new EnterID(renderer, screen, asset, input, options, section); + enterID = new EnterID(renderer, screen, asset, options, section); enterID->run(); delete enterID; resource->free(); diff --git a/source/ending.cpp b/source/ending.cpp index bc321fc..335e6bf 100644 --- a/source/ending.cpp +++ b/source/ending.cpp @@ -1,13 +1,14 @@ #include "ending.h" // Constructor -Ending::Ending(SDL_Renderer *renderer, Screen *screen, Resource *resource, Asset *asset, options_t *options, section_t *section) +Ending::Ending(SDL_Renderer *renderer, Screen *screen, Resource *resource, Asset *asset, Input *input, options_t *options, section_t *section) { // Copia los punteros this->renderer = renderer; this->screen = screen; this->resource = resource; this->asset = asset; + this->input = input; this->options = options; this->section = section; @@ -84,14 +85,17 @@ Ending::~Ending() // Actualiza el objeto void Ending::update() { + // Comprueba el manejador de eventos + checkEventHandler(); + // Comprueba que la diferencia de ticks sea mayor a la velocidad del juego if (SDL_GetTicks() - ticks > ticksSpeed) { // Actualiza el contador de ticks ticks = SDL_GetTicks(); - // Comprueba el manejador de eventos - checkEventHandler(); + // Comprueba las entradas + checkInput(); // Actualiza el contador updateCounters(); @@ -154,55 +158,52 @@ void Ending::checkEventHandler() section->name = SECTION_PROG_QUIT; break; } + } +} - // Comprueba las teclas que se han pulsado - if ((eventHandler->type == SDL_KEYDOWN && eventHandler->key.repeat == 0) || (eventHandler->type == SDL_JOYBUTTONDOWN)) - { - switch (eventHandler->key.keysym.scancode) - { - case SDL_SCANCODE_ESCAPE: - section->name = SECTION_PROG_LOGO; - section->subsection = SUBSECTION_LOGO_TO_INTRO; - break; +// Comprueba las entradas +void Ending::checkInput() +{ - case SDL_SCANCODE_B: - screen->switchBorder(); - resource->reLoadTextures(); - break; + if (input->checkInput(input_exit, REPEAT_FALSE)) + { + section->name = SECTION_PROG_LOGO; + section->subsection = SUBSECTION_LOGO_TO_INTRO; + } - case SDL_SCANCODE_F: - screen->switchVideoMode(); - resource->reLoadTextures(); - break; + else if (input->checkInput(input_toggle_border, REPEAT_FALSE)) + { + screen->switchBorder(); + } - case SDL_SCANCODE_F1: - screen->setWindowSize(1); - resource->reLoadTextures(); - break; + else if (input->checkInput(input_video_mode, REPEAT_FALSE)) + { + screen->switchVideoMode(); + } - case SDL_SCANCODE_F2: - screen->setWindowSize(2); - resource->reLoadTextures(); - break; + else if (input->checkInput(input_window_size_1, REPEAT_FALSE)) + { + screen->setWindowSize(1); + } - case SDL_SCANCODE_F3: - screen->setWindowSize(3); - resource->reLoadTextures(); - break; + else if (input->checkInput(input_window_size_2, REPEAT_FALSE)) + { + screen->setWindowSize(2); + } - case SDL_SCANCODE_F4: - screen->setWindowSize(4); - resource->reLoadTextures(); - break; + else if (input->checkInput(input_window_size_3, REPEAT_FALSE)) + { + screen->setWindowSize(3); + } - case SDL_SCANCODE_F5: - switchPalette(); - break; + else if (input->checkInput(input_window_size_4, REPEAT_FALSE)) + { + screen->setWindowSize(4); + } - default: - break; - } - } + else if (input->checkInput(input_swap_palette, REPEAT_FALSE)) + { + switchPalette(); } } diff --git a/source/ending.h b/source/ending.h index 71461c2..c50b1f2 100644 --- a/source/ending.h +++ b/source/ending.h @@ -83,6 +83,9 @@ private: // Comprueba el manejador de eventos void checkEventHandler(); + // Comprueba las entradas + void checkInput(); + // Inicializa los textos void iniTexts(); @@ -115,7 +118,7 @@ private: public: // Constructor - Ending(SDL_Renderer *renderer, Screen *screen, Resource *resource, Asset *asset, options_t *options, section_t *section); + Ending(SDL_Renderer *renderer, Screen *screen, Resource *resource, Asset *asset, Input *input, options_t *options, section_t *section); // Destructor ~Ending(); diff --git a/source/ending2.cpp b/source/ending2.cpp index b2db67c..26340e3 100644 --- a/source/ending2.cpp +++ b/source/ending2.cpp @@ -2,13 +2,14 @@ #include // Constructor -Ending2::Ending2(SDL_Renderer *renderer, Screen *screen, Resource *resource, Asset *asset, options_t *options, section_t *section) +Ending2::Ending2(SDL_Renderer *renderer, Screen *screen, Resource *resource, Asset *asset, Input *input, options_t *options, section_t *section) { // Copia los punteros this->renderer = renderer; this->screen = screen; this->resource = resource; this->asset = asset; + this->input = input; this->options = options; this->section = section; @@ -74,14 +75,17 @@ Ending2::~Ending2() // Actualiza el objeto void Ending2::update() { + // Comprueba el manejador de eventos + checkEventHandler(); + // Comprueba que la diferencia de ticks sea mayor a la velocidad del juego if (SDL_GetTicks() - ticks > ticksSpeed) { // Actualiza el contador de ticks ticks = SDL_GetTicks(); - // Comprueba el manejador de eventos - checkEventHandler(); + // Comprueba las entradas + checkInput(); // Actualiza los contadores updateCounters(); @@ -188,55 +192,52 @@ void Ending2::checkEventHandler() section->name = SECTION_PROG_QUIT; break; } + } +} - // Comprueba las teclas que se han pulsado - if ((eventHandler->type == SDL_KEYDOWN && eventHandler->key.repeat == 0) || (eventHandler->type == SDL_JOYBUTTONDOWN)) - { - switch (eventHandler->key.keysym.scancode) - { - case SDL_SCANCODE_ESCAPE: - section->name = SECTION_PROG_LOGO; - section->subsection = SUBSECTION_LOGO_TO_INTRO; - break; +// Comprueba las entradas +void Ending2::checkInput() +{ - case SDL_SCANCODE_B: - screen->switchBorder(); - resource->reLoadTextures(); - break; + if (input->checkInput(input_exit, REPEAT_FALSE)) + { + section->name = SECTION_PROG_LOGO; + section->subsection = SUBSECTION_LOGO_TO_INTRO; + } - case SDL_SCANCODE_F: - screen->switchVideoMode(); - resource->reLoadTextures(); - break; + else if (input->checkInput(input_toggle_border, REPEAT_FALSE)) + { + screen->switchBorder(); + } - case SDL_SCANCODE_F1: - screen->setWindowSize(1); - resource->reLoadTextures(); - break; + else if (input->checkInput(input_video_mode, REPEAT_FALSE)) + { + screen->switchVideoMode(); + } - case SDL_SCANCODE_F2: - screen->setWindowSize(2); - resource->reLoadTextures(); - break; + else if (input->checkInput(input_window_size_1, REPEAT_FALSE)) + { + screen->setWindowSize(1); + } - case SDL_SCANCODE_F3: - screen->setWindowSize(3); - resource->reLoadTextures(); - break; + else if (input->checkInput(input_window_size_2, REPEAT_FALSE)) + { + screen->setWindowSize(2); + } - case SDL_SCANCODE_F4: - screen->setWindowSize(4); - resource->reLoadTextures(); - break; + else if (input->checkInput(input_window_size_3, REPEAT_FALSE)) + { + screen->setWindowSize(3); + } - case SDL_SCANCODE_F5: - switchPalette(); - break; + else if (input->checkInput(input_window_size_4, REPEAT_FALSE)) + { + screen->setWindowSize(4); + } - default: - break; - } - } + else if (input->checkInput(input_swap_palette, REPEAT_FALSE)) + { + switchPalette(); } } diff --git a/source/ending2.h b/source/ending2.h index 8ecc7ee..9911c1c 100644 --- a/source/ending2.h +++ b/source/ending2.h @@ -61,6 +61,9 @@ private: // Comprueba el manejador de eventos void checkEventHandler(); + // Comprueba las entradas + void checkInput(); + // Actualiza los contadores void updateCounters(); @@ -117,7 +120,7 @@ private: public: // Constructor - Ending2(SDL_Renderer *renderer, Screen *screen, Resource *resource, Asset *asset, options_t *options, section_t *section); + Ending2(SDL_Renderer *renderer, Screen *screen, Resource *resource, Asset *asset, Input *input, options_t *options, section_t *section); // Destructor ~Ending2(); diff --git a/source/game.cpp b/source/game.cpp index 2f7cdb1..e88f15e 100644 --- a/source/game.cpp +++ b/source/game.cpp @@ -30,7 +30,7 @@ Game::Game(SDL_Renderer *renderer, Screen *screen, Resource *resource, Asset *as // Crea los objetos cheevos = new Cheevos(screen, options, asset->get("cheevos.bin")); - scoreboard = new ScoreBoard(renderer, resource, asset, input, options, &board); + scoreboard = new ScoreBoard(renderer, resource, asset, options, &board); itemTracker = new ItemTracker(); roomTracker = new RoomTracker(); room = new Room(resource->getRoom(currentRoom), renderer, screen, asset, options, itemTracker, &board.items, false, debug); @@ -190,54 +190,54 @@ void Game::checkInput() section->name = SECTION_PROG_TITLE; } - if (input->checkInput(input_switch_music, REPEAT_FALSE)) + else if (input->checkInput(input_switch_music, REPEAT_FALSE)) { board.music = !board.music; board.music ? JA_ResumeMusic() : JA_PauseMusic(); } - if (input->checkInput(input_pause, REPEAT_FALSE)) + else if (input->checkInput(input_pause, REPEAT_FALSE)) { switchPause(); } - if (input->checkInput(input_toggle_border, REPEAT_FALSE)) + else if (input->checkInput(input_toggle_border, REPEAT_FALSE)) { screen->switchBorder(); reLoadTextures(); } - if (input->checkInput(input_video_mode, REPEAT_FALSE)) + else if (input->checkInput(input_video_mode, REPEAT_FALSE)) { screen->switchVideoMode(); reLoadTextures(); } - if (input->checkInput(input_window_size_1, REPEAT_FALSE)) + else if (input->checkInput(input_window_size_1, REPEAT_FALSE)) { screen->setWindowSize(1); reLoadTextures(); } - if (input->checkInput(input_window_size_2, REPEAT_FALSE)) + else if (input->checkInput(input_window_size_2, REPEAT_FALSE)) { screen->setWindowSize(2); reLoadTextures(); } - if (input->checkInput(input_window_size_3, REPEAT_FALSE)) + else if (input->checkInput(input_window_size_3, REPEAT_FALSE)) { screen->setWindowSize(3); reLoadTextures(); } - if (input->checkInput(input_window_size_4, REPEAT_FALSE)) + else if (input->checkInput(input_window_size_4, REPEAT_FALSE)) { screen->setWindowSize(4); reLoadTextures(); } - if (input->checkInput(input_swap_palette, REPEAT_FALSE)) + else if (input->checkInput(input_swap_palette, REPEAT_FALSE)) { switchPalette(); } @@ -264,15 +264,15 @@ void Game::run() // Actualiza el juego, las variables, comprueba la entrada, etc. void Game::update() { + // Comprueba los eventos de la cola + checkEventHandler(); + // Comprueba que la diferencia de ticks sea mayor a la velocidad del juego if (SDL_GetTicks() - ticks > ticksSpeed) { // Actualiza el contador de ticks ticks = SDL_GetTicks(); - // Comprueba los eventos de la cola - checkEventHandler(); - // Comprueba el teclado checkInput(); diff --git a/source/game_over.cpp b/source/game_over.cpp index 85f250d..6e9112e 100644 --- a/source/game_over.cpp +++ b/source/game_over.cpp @@ -1,13 +1,14 @@ #include "game_over.h" // Constructor -GameOver::GameOver(SDL_Renderer *renderer, Screen *screen, Resource *resource, Asset *asset, options_t *options, section_t *section) +GameOver::GameOver(SDL_Renderer *renderer, Screen *screen, Resource *resource, Asset *asset, Input *input, options_t *options, section_t *section) { // Copia los punteros this->renderer = renderer; this->screen = screen; this->resource = resource; this->asset = asset; + this->input = input; this->options = options; this->section = section; @@ -56,14 +57,17 @@ GameOver::~GameOver() // Actualiza el objeto void GameOver::update() { + // Comprueba el manejador de eventos + checkEventHandler(); + // Comprueba que la diferencia de ticks sea mayor a la velocidad del juego if (SDL_GetTicks() - ticks > ticksSpeed) { // Actualiza el contador de ticks ticks = SDL_GetTicks(); - // Comprueba el manejador de eventos - checkEventHandler(); + // Comprueba las entradas + checkInput(); // Actualiza el color usado para renderizar los textos e imagenes updateColor(); @@ -126,54 +130,51 @@ void GameOver::checkEventHandler() section->subsection = 0; break; } + } +} - // Comprueba las teclas que se han pulsado - if ((eventHandler->type == SDL_KEYDOWN && eventHandler->key.repeat == 0) || (eventHandler->type == SDL_JOYBUTTONDOWN)) - { - switch (eventHandler->key.keysym.scancode) - { - case SDL_SCANCODE_ESCAPE: - section->name = SECTION_PROG_QUIT; - break; +// Comprueba las entradas +void GameOver::checkInput() +{ - case SDL_SCANCODE_B: - screen->switchBorder(); - resource->reLoadTextures(); - break; + if (input->checkInput(input_exit, REPEAT_FALSE)) + { + section->name = SECTION_PROG_QUIT; + } - case SDL_SCANCODE_F: - screen->switchVideoMode(); - resource->reLoadTextures(); - break; + else if (input->checkInput(input_toggle_border, REPEAT_FALSE)) + { + screen->switchBorder(); + } - case SDL_SCANCODE_F1: - screen->setWindowSize(1); - resource->reLoadTextures(); - break; + else if (input->checkInput(input_video_mode, REPEAT_FALSE)) + { + screen->switchVideoMode(); + } - case SDL_SCANCODE_F2: - screen->setWindowSize(2); - resource->reLoadTextures(); - break; + else if (input->checkInput(input_window_size_1, REPEAT_FALSE)) + { + screen->setWindowSize(1); + } - case SDL_SCANCODE_F3: - screen->setWindowSize(3); - resource->reLoadTextures(); - break; + else if (input->checkInput(input_window_size_2, REPEAT_FALSE)) + { + screen->setWindowSize(2); + } - case SDL_SCANCODE_F4: - screen->setWindowSize(4); - resource->reLoadTextures(); - break; + else if (input->checkInput(input_window_size_3, REPEAT_FALSE)) + { + screen->setWindowSize(3); + } - case SDL_SCANCODE_F5: - switchPalette(); - break; + else if (input->checkInput(input_window_size_4, REPEAT_FALSE)) + { + screen->setWindowSize(4); + } - default: - break; - } - } + else if (input->checkInput(input_swap_palette, REPEAT_FALSE)) + { + switchPalette(); } } diff --git a/source/game_over.h b/source/game_over.h index dd2972e..ef64f61 100644 --- a/source/game_over.h +++ b/source/game_over.h @@ -53,6 +53,9 @@ private: // Comprueba el manejador de eventos void checkEventHandler(); + // Comprueba las entradas + void checkInput(); + // Actualiza el color usado para renderizar los textos e imagenes void updateColor(); @@ -67,7 +70,7 @@ private: public: // Constructor - GameOver(SDL_Renderer *renderer, Screen *screen, Resource *resource, Asset *asset, options_t *options, section_t *section); + GameOver(SDL_Renderer *renderer, Screen *screen, Resource *resource, Asset *asset, Input *input, options_t *options, section_t *section); // Destructor ~GameOver(); diff --git a/source/intro.cpp b/source/intro.cpp index ad2dbdc..db466e8 100644 --- a/source/intro.cpp +++ b/source/intro.cpp @@ -87,56 +87,57 @@ void Intro::checkEventHandler() section->name = SECTION_PROG_QUIT; break; } + } +} - // Comprueba las teclas que se han pulsado - if ((eventHandler->type == SDL_KEYDOWN && eventHandler->key.repeat == 0) || (eventHandler->type == SDL_JOYBUTTONDOWN)) - { - switch (eventHandler->key.keysym.scancode) - { - case SDL_SCANCODE_ESCAPE: - section->name = SECTION_PROG_QUIT; - break; +// Comprueba las entradas +void Intro::checkInput() +{ - case SDL_SCANCODE_B: - screen->switchBorder(); - resource->reLoadTextures(); - break; + if (input->checkInput(input_exit, REPEAT_FALSE)) + { + section->name = SECTION_PROG_QUIT; + } - case SDL_SCANCODE_F: - screen->switchVideoMode(); - resource->reLoadTextures(); - break; + else if (input->checkInput(input_toggle_border, REPEAT_FALSE)) + { + screen->switchBorder(); + } - case SDL_SCANCODE_F1: - screen->setWindowSize(1); - resource->reLoadTextures(); - break; + else if (input->checkInput(input_video_mode, REPEAT_FALSE)) + { + screen->switchVideoMode(); + } - case SDL_SCANCODE_F2: - screen->setWindowSize(2); - resource->reLoadTextures(); - break; + else if (input->checkInput(input_window_size_1, REPEAT_FALSE)) + { + screen->setWindowSize(1); + } - case SDL_SCANCODE_F3: - screen->setWindowSize(3); - resource->reLoadTextures(); - break; + else if (input->checkInput(input_window_size_2, REPEAT_FALSE)) + { + screen->setWindowSize(2); + } - case SDL_SCANCODE_F4: - screen->setWindowSize(4); - resource->reLoadTextures(); - break; + else if (input->checkInput(input_window_size_3, REPEAT_FALSE)) + { + screen->setWindowSize(3); + } - case SDL_SCANCODE_F5: - switchPalette(); - break; + else if (input->checkInput(input_window_size_4, REPEAT_FALSE)) + { + screen->setWindowSize(4); + } - default: - section->name = SECTION_PROG_TITLE; - section->subsection = 0; - break; - } - } + else if (input->checkInput(input_swap_palette, REPEAT_FALSE)) + { + switchPalette(); + } + + else if (input->checkInput(input_pause, REPEAT_FALSE) || input->checkInput(input_accept, REPEAT_FALSE) || input->checkInput(input_jump, REPEAT_FALSE)) + { + section->name = SECTION_PROG_TITLE; + section->subsection = 0; } } @@ -208,14 +209,17 @@ void Intro::renderLoad() // Actualiza las variables void Intro::update() { + // Comprueba el manejador de eventos + checkEventHandler(); + // Comprueba que la diferencia de ticks sea mayor a la velocidad del juego if (SDL_GetTicks() - ticks > ticksSpeed) { // Actualiza el contador de ticks ticks = SDL_GetTicks(); - // Comprueba el manejador de eventos - checkEventHandler(); + // Comprueba las entradas + checkInput(); // Gestiona el contador interno updateCounter(); diff --git a/source/intro.h b/source/intro.h index 98021eb..d0a7219 100644 --- a/source/intro.h +++ b/source/intro.h @@ -25,27 +25,27 @@ private: Screen *screen; // Objeto encargado de dibujar en pantalla Resource *resource; // Objeto con los recursos Asset *asset; // Objeto con los ficheros de recursos - Input *input; // Objeto pata gestionar la entrada + Input *input; // Objeto pata gestionar la entrada Texture *loadingScreenTexture1; // Textura con la pantalla de carga en blanco y negro Texture *loadingScreenTexture2; // Textura con la pantalla de carga en color SDL_Event *eventHandler; // Manejador de eventos Sprite *sprite1; // Sprite para manejar la textura loadingScreenTexture1 Sprite *sprite2; // Sprite para manejar la textura loadingScreenTexture2 options_t *options; // Puntero a las opciones del juego - section_t *section; // Estado del bucle principal para saber si continua o se sale + section_t *section; // Estado del bucle principal para saber si continua o se sale // Variables - int preCounter; // Contador previo para realizar una pausa inicial - int counter; // Contador - Uint32 ticks; // Contador de ticks para ajustar la velocidad del programa - Uint32 ticksSpeed; // Velocidad a la que se repiten los bucles del programa - int loadCounter; // Contador para controlar las cargas - bool loadingFirstPart; // Para saber en que parte de la carga se encuentra - JA_Music_t* loadingSound1; // Sonidos para imitar la carga tipo spectrum - JA_Music_t* loadingSound2; // Sonidos para imitar la carga tipo spectrum - JA_Music_t* loadingSound3; // Sonidos para imitar la carga tipo spectrum - int lineIndex[192]; // El orden en el que se procesan las 192 lineas de la pantalla de carga - SDL_Rect loadRect; // Rectangulo para dibujar la pantalla de carga + int preCounter; // Contador previo para realizar una pausa inicial + int counter; // Contador + Uint32 ticks; // Contador de ticks para ajustar la velocidad del programa + Uint32 ticksSpeed; // Velocidad a la que se repiten los bucles del programa + int loadCounter; // Contador para controlar las cargas + bool loadingFirstPart; // Para saber en que parte de la carga se encuentra + JA_Music_t *loadingSound1; // Sonidos para imitar la carga tipo spectrum + JA_Music_t *loadingSound2; // Sonidos para imitar la carga tipo spectrum + JA_Music_t *loadingSound3; // Sonidos para imitar la carga tipo spectrum + int lineIndex[192]; // El orden en el que se procesan las 192 lineas de la pantalla de carga + SDL_Rect loadRect; // Rectangulo para dibujar la pantalla de carga // Actualiza las variables void update(); @@ -56,6 +56,9 @@ private: // Comprueba el manejador de eventos void checkEventHandler(); + // Comprueba las entradas + void checkInput(); + // Gestiona el contador interno void updateCounter(); diff --git a/source/logo.cpp b/source/logo.cpp index f2451aa..f8c1ede 100644 --- a/source/logo.cpp +++ b/source/logo.cpp @@ -128,7 +128,7 @@ void Logo::checkInput() switchPalette(); } - else if (input->checkAnyInput()) + else if (input->checkInput(input_pause, REPEAT_FALSE) || input->checkInput(input_accept, REPEAT_FALSE) || input->checkInput(input_jump, REPEAT_FALSE)) { section->subsection = SUBSECTION_LOGO_TO_TITLE; endSection(); @@ -269,7 +269,7 @@ void Logo::update() checkEventHandler(); // Comprueba las entradas - void checkInput(); + checkInput(); // Incrementa el contador counter++; diff --git a/source/scoreboard.cpp b/source/scoreboard.cpp index 7348887..7b4c420 100644 --- a/source/scoreboard.cpp +++ b/source/scoreboard.cpp @@ -3,13 +3,12 @@ #include // Constructor -ScoreBoard::ScoreBoard(SDL_Renderer *renderer, Resource *resource, Asset *asset, Input *input, options_t *options, board_t *board) +ScoreBoard::ScoreBoard(SDL_Renderer *renderer, Resource *resource, Asset *asset, options_t *options, board_t *board) { // Obten punteros a objetos this->renderer = renderer; this->resource = resource; this->asset = asset; - this->input = input; this->options = options; this->board = board; diff --git a/source/scoreboard.h b/source/scoreboard.h index e7e6d10..742d028 100644 --- a/source/scoreboard.h +++ b/source/scoreboard.h @@ -3,7 +3,6 @@ #include #include "common/animatedsprite.h" #include "common/asset.h" -#include "common/input.h" #include "common/resource.h" #include "common/text.h" #include "common/utils.h" @@ -40,7 +39,6 @@ private: SDL_Renderer *renderer; // El renderizador de la ventana Resource *resource; // Objeto con los recursos Asset *asset; // Objeto con la ruta a todos los ficheros de recursos - Input *input; // Objeto pata gestionar la entrada Text *text; // Objeto para escribir texto Texture *itemTexture; // Textura con los graficos para las vidas board_t *board; // Contiene las variables a mostrar en el marcador @@ -64,7 +62,7 @@ private: public: // Constructor - ScoreBoard(SDL_Renderer *renderer, Resource *resource, Asset *asset, Input *input, options_t *options, board_t *board); + ScoreBoard(SDL_Renderer *renderer, Resource *resource, Asset *asset, options_t *options, board_t *board); // Destructor ~ScoreBoard(); diff --git a/source/title.cpp b/source/title.cpp index 34e7d33..1615457 100644 --- a/source/title.cpp +++ b/source/title.cpp @@ -43,8 +43,12 @@ Title::Title(SDL_Renderer *renderer, Screen *screen, Resource *resource, Asset * letters[0].enabled = true; marqueeSpeed = 3; - // Crea el cartel de PRESS ENTER +// Crea el cartel de PRESS ENTER +#ifdef GAME_CONSOLE + const std::string caption = "PRESS START TO PLAY"; +#else const std::string caption = "PRESS ENTER TO PLAY"; +#endif const color_t textColor = stringToColor(options->palette, "white"); const color_t strokeColor = stringToColor(options->palette, "bright_blue"); @@ -84,71 +88,63 @@ void Title::checkEventHandler() section->name = SECTION_PROG_QUIT; break; } + } +} - // Comprueba las teclas que se han pulsado - if ((eventHandler->type == SDL_KEYDOWN && eventHandler->key.repeat == 0) || (eventHandler->type == SDL_JOYBUTTONDOWN)) - { - if (eventHandler->type == SDL_JOYBUTTONDOWN) - { - section->name = SECTION_PROG_GAME; - section->subsection = 0; - } +// Comprueba las entradas +void Title::checkInput() +{ - switch (eventHandler->key.keysym.scancode) - { - case SDL_SCANCODE_ESCAPE: - section->name = SECTION_PROG_QUIT; - break; + if (input->checkInput(input_exit, REPEAT_FALSE)) + { + section->name = SECTION_PROG_QUIT; + } - case SDL_SCANCODE_RETURN: - section->name = SECTION_PROG_GAME; - section->subsection = 0; - break; + else if (input->checkInput(input_toggle_border, REPEAT_FALSE)) + { + screen->switchBorder(); + resource->reLoadTextures(); + } - case SDL_SCANCODE_B: - screen->switchBorder(); - resource->reLoadTextures(); - break; + else if (input->checkInput(input_video_mode, REPEAT_FALSE)) + { + screen->switchVideoMode(); + resource->reLoadTextures(); + } - case SDL_SCANCODE_F: - screen->switchVideoMode(); - resource->reLoadTextures(); - break; + else if (input->checkInput(input_window_size_1, REPEAT_FALSE)) + { + screen->setWindowSize(1); + resource->reLoadTextures(); + } - case SDL_SCANCODE_F1: - screen->setWindowSize(1); - resource->reLoadTextures(); - break; + else if (input->checkInput(input_window_size_2, REPEAT_FALSE)) + { + screen->setWindowSize(2); + resource->reLoadTextures(); + } - case SDL_SCANCODE_F2: - screen->setWindowSize(2); - resource->reLoadTextures(); - break; + else if (input->checkInput(input_window_size_3, REPEAT_FALSE)) + { + screen->setWindowSize(3); + resource->reLoadTextures(); + } - case SDL_SCANCODE_F3: - screen->setWindowSize(3); - resource->reLoadTextures(); - break; + else if (input->checkInput(input_window_size_4, REPEAT_FALSE)) + { + screen->setWindowSize(4); + resource->reLoadTextures(); + } - case SDL_SCANCODE_F4: - screen->setWindowSize(4); - resource->reLoadTextures(); - break; + else if (input->checkInput(input_swap_palette, REPEAT_FALSE)) + { + switchPalette(); + } - case SDL_SCANCODE_F5: - switchPalette(); - break; - -#ifdef DEBUG - case SDL_SCANCODE_F6: - screen->showNotification("MAMA MIRA! SIN MANOS!"); - break; -#endif - - default: - break; - } - } + else if (input->checkInput(input_accept, REPEAT_FALSE) || input->checkInput(input_pause, REPEAT_FALSE)) + { + section->name = SECTION_PROG_GAME; + section->subsection = 0; } } @@ -191,14 +187,17 @@ void Title::renderMarquee() // Actualiza las variables void Title::update() { + // Comprueba el manejador de eventos + checkEventHandler(); + // Comprueba que la diferencia de ticks sea mayor a la velocidad del juego if (SDL_GetTicks() - ticks > ticksSpeed) { // Actualiza el contador de ticks ticks = SDL_GetTicks(); - // Comprueba el manejador de eventos - checkEventHandler(); + // Comprueba las entradas + checkInput(); // Incrementa el contador counter++; diff --git a/source/title.h b/source/title.h index 923c803..d32e5e7 100644 --- a/source/title.h +++ b/source/title.h @@ -57,6 +57,9 @@ private: // Comprueba el manejador de eventos void checkEventHandler(); + // Comprueba las entradas + void checkInput(); + // Actualiza la marquesina void updateMarquee();