- Ya se puede usar el mando en todas las secciones del juego

- Definido flag para compilar para consola de juegos (GAME_CONSOLE)
This commit is contained in:
2023-02-10 20:08:06 +01:00
parent 76e928e21d
commit 3be9d4459c
19 changed files with 393 additions and 354 deletions

View File

@@ -79,56 +79,57 @@ void Credits::checkEventHandler()
section->name = SECTION_PROG_QUIT; section->name = SECTION_PROG_QUIT;
break; break;
} }
}
}
// Comprueba las teclas que se han pulsado // Comprueba las entradas
if ((eventHandler->type == SDL_KEYDOWN && eventHandler->key.repeat == 0) || (eventHandler->type == SDL_JOYBUTTONDOWN)) void Credits::checkInput()
{ {
switch (eventHandler->key.keysym.scancode)
if (input->checkInput(input_exit, REPEAT_FALSE))
{ {
case SDL_SCANCODE_ESCAPE:
section->name = SECTION_PROG_QUIT; section->name = SECTION_PROG_QUIT;
break; }
case SDL_SCANCODE_B: else if (input->checkInput(input_toggle_border, REPEAT_FALSE))
{
screen->switchBorder(); screen->switchBorder();
resource->reLoadTextures(); }
break;
case SDL_SCANCODE_F: else if (input->checkInput(input_video_mode, REPEAT_FALSE))
{
screen->switchVideoMode(); screen->switchVideoMode();
resource->reLoadTextures(); }
break;
case SDL_SCANCODE_F1: else if (input->checkInput(input_window_size_1, REPEAT_FALSE))
{
screen->setWindowSize(1); screen->setWindowSize(1);
resource->reLoadTextures(); }
break;
case SDL_SCANCODE_F2: else if (input->checkInput(input_window_size_2, REPEAT_FALSE))
{
screen->setWindowSize(2); screen->setWindowSize(2);
resource->reLoadTextures(); }
break;
case SDL_SCANCODE_F3: else if (input->checkInput(input_window_size_3, REPEAT_FALSE))
{
screen->setWindowSize(3); screen->setWindowSize(3);
resource->reLoadTextures(); }
break;
case SDL_SCANCODE_F4: else if (input->checkInput(input_window_size_4, REPEAT_FALSE))
{
screen->setWindowSize(4); screen->setWindowSize(4);
resource->reLoadTextures(); }
break;
case SDL_SCANCODE_F5: else if (input->checkInput(input_swap_palette, REPEAT_FALSE))
{
switchPalette(); switchPalette();
break; }
default: 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->name = SECTION_PROG_TITLE;
section->subsection = 0; section->subsection = 0;
break;
}
}
} }
} }
@@ -268,14 +269,17 @@ void Credits::updateCounter()
// Actualiza las variables // Actualiza las variables
void Credits::update() void Credits::update()
{ {
// Comprueba el manejador de eventos
checkEventHandler();
// Comprueba que la diferencia de ticks sea mayor a la velocidad del juego // Comprueba que la diferencia de ticks sea mayor a la velocidad del juego
if (SDL_GetTicks() - ticks > ticksSpeed) if (SDL_GetTicks() - ticks > ticksSpeed)
{ {
// Actualiza el contador de ticks // Actualiza el contador de ticks
ticks = SDL_GetTicks(); ticks = SDL_GetTicks();
// Comprueba el manejador de eventos // Comprueba las entradas
checkEventHandler(); checkInput();
// Actualiza el contador // Actualiza el contador
updateCounter(); updateCounter();

View File

@@ -57,6 +57,9 @@ private:
// Comprueba el manejador de eventos // Comprueba el manejador de eventos
void checkEventHandler(); void checkEventHandler();
// Comprueba las entradas
void checkInput();
// Actualiza el contador // Actualiza el contador
void updateCounter(); void updateCounter();

View File

@@ -29,7 +29,7 @@ Demo::Demo(SDL_Renderer *renderer, Screen *screen, Resource *resource, Asset *as
// Crea los objetos // Crea los objetos
itemTracker = new ItemTracker(); 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); room = new Room(resource->getRoom(currentRoom), renderer, screen, asset, options, itemTracker, &board.items, false, debug);
eventHandler = new SDL_Event(); eventHandler = new SDL_Event();
text = new Text(resource->getOffset("smb2.txt"), resource->getTexture("smb2.png"), renderer); 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")); screen->setBorderColor(stringToColor(options->palette, "black"));
break; break;
} }
}
}
// Comprueba las teclas que se han pulsado // Comprueba las entradas
if ((eventHandler->type == SDL_KEYDOWN && eventHandler->key.repeat == 0) || (eventHandler->type == SDL_JOYBUTTONDOWN)) void Demo::checkInput()
{ {
switch (eventHandler->key.keysym.scancode)
if (input->checkInput(input_exit, REPEAT_FALSE))
{ {
case SDL_SCANCODE_ESCAPE:
section->name = SECTION_PROG_QUIT; section->name = SECTION_PROG_QUIT;
break; }
case SDL_SCANCODE_B: else if (input->checkInput(input_toggle_border, REPEAT_FALSE))
{
screen->switchBorder(); screen->switchBorder();
reLoadTextures(); reLoadTextures();
break; }
case SDL_SCANCODE_F: else if (input->checkInput(input_video_mode, REPEAT_FALSE))
{
screen->switchVideoMode(); screen->switchVideoMode();
reLoadTextures(); reLoadTextures();
break; }
case SDL_SCANCODE_F1: else if (input->checkInput(input_window_size_1, REPEAT_FALSE))
{
screen->setWindowSize(1); screen->setWindowSize(1);
reLoadTextures(); reLoadTextures();
break; }
case SDL_SCANCODE_F2: else if (input->checkInput(input_window_size_2, REPEAT_FALSE))
{
screen->setWindowSize(2); screen->setWindowSize(2);
reLoadTextures(); reLoadTextures();
break; }
case SDL_SCANCODE_F3: else if (input->checkInput(input_window_size_3, REPEAT_FALSE))
{
screen->setWindowSize(3); screen->setWindowSize(3);
reLoadTextures(); reLoadTextures();
break; }
case SDL_SCANCODE_F4: else if (input->checkInput(input_window_size_4, REPEAT_FALSE))
{
screen->setWindowSize(4); screen->setWindowSize(4);
reLoadTextures(); reLoadTextures();
break; }
case SDL_SCANCODE_F5: else if (input->checkInput(input_swap_palette, REPEAT_FALSE))
{
switchPalette(); switchPalette();
break; }
default: 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->name = SECTION_PROG_TITLE;
section->subsection = 0; section->subsection = 0;
break;
}
}
} }
} }
@@ -139,14 +146,17 @@ void Demo::run()
// Actualiza el juego, las variables, comprueba la entrada, etc. // Actualiza el juego, las variables, comprueba la entrada, etc.
void Demo::update() void Demo::update()
{ {
// Comprueba los eventos de la cola
checkEventHandler();
// Comprueba que la diferencia de ticks sea mayor a la velocidad del juego // Comprueba que la diferencia de ticks sea mayor a la velocidad del juego
if (SDL_GetTicks() - ticks > ticksSpeed) if (SDL_GetTicks() - ticks > ticksSpeed)
{ {
// Actualiza el contador de ticks // Actualiza el contador de ticks
ticks = SDL_GetTicks(); ticks = SDL_GetTicks();
// Comprueba los eventos de la cola // Comprueba las entradas
checkEventHandler(); checkInput();
// Actualiza los objetos // Actualiza los objetos
room->update(); room->update();

View File

@@ -57,6 +57,9 @@ private:
// Comprueba los eventos de la cola // Comprueba los eventos de la cola
void checkEventHandler(); void checkEventHandler();
// Comprueba las entradas
void checkInput();
// Escribe el nombre de la pantalla // Escribe el nombre de la pantalla
void renderRoomName(); void renderRoomName();

View File

@@ -19,7 +19,7 @@ Director::Director(int argc, char *argv[])
section->subsection = SUBSECTION_LOGO_TO_INTRO; section->subsection = SUBSECTION_LOGO_TO_INTRO;
#ifdef DEBUG #ifdef DEBUG
section->name = SECTION_PROG_GAME; section->name = SECTION_PROG_LOGO;
#endif #endif
// Crea e inicializa las opciones del programa // 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_swap_palette, SDL_SCANCODE_F5);
input->bindKey(input_switch_music, SDL_SCANCODE_M); input->bindKey(input_switch_music, SDL_SCANCODE_M);
input->bindKey(input_video_mode, SDL_SCANCODE_F); input->bindKey(input_video_mode, SDL_SCANCODE_F);
input->bindKey(input_toggle_border, SDL_SCANCODE_B);
// Mando - Movimiento // Mando - Movimiento
input->bindGameControllerButton(input_jump, SDL_CONTROLLER_BUTTON_B); input->bindGameControllerButton(input_jump, SDL_CONTROLLER_BUTTON_B);
@@ -1782,7 +1783,7 @@ void Director::runEnterID()
std::cout << "\n* SECTION: ENTER_ID" << std::endl; std::cout << "\n* SECTION: ENTER_ID" << std::endl;
} }
// loadResources(section); // loadResources(section);
enterID = new EnterID(renderer, screen, asset, input, options, section); enterID = new EnterID(renderer, screen, asset, options, section);
enterID->run(); enterID->run();
delete enterID; delete enterID;
resource->free(); resource->free();

View File

@@ -1,13 +1,14 @@
#include "ending.h" #include "ending.h"
// Constructor // 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 // Copia los punteros
this->renderer = renderer; this->renderer = renderer;
this->screen = screen; this->screen = screen;
this->resource = resource; this->resource = resource;
this->asset = asset; this->asset = asset;
this->input = input;
this->options = options; this->options = options;
this->section = section; this->section = section;
@@ -84,14 +85,17 @@ Ending::~Ending()
// Actualiza el objeto // Actualiza el objeto
void Ending::update() void Ending::update()
{ {
// Comprueba el manejador de eventos
checkEventHandler();
// Comprueba que la diferencia de ticks sea mayor a la velocidad del juego // Comprueba que la diferencia de ticks sea mayor a la velocidad del juego
if (SDL_GetTicks() - ticks > ticksSpeed) if (SDL_GetTicks() - ticks > ticksSpeed)
{ {
// Actualiza el contador de ticks // Actualiza el contador de ticks
ticks = SDL_GetTicks(); ticks = SDL_GetTicks();
// Comprueba el manejador de eventos // Comprueba las entradas
checkEventHandler(); checkInput();
// Actualiza el contador // Actualiza el contador
updateCounters(); updateCounters();
@@ -154,55 +158,52 @@ void Ending::checkEventHandler()
section->name = SECTION_PROG_QUIT; section->name = SECTION_PROG_QUIT;
break; break;
} }
}
}
// Comprueba las teclas que se han pulsado // Comprueba las entradas
if ((eventHandler->type == SDL_KEYDOWN && eventHandler->key.repeat == 0) || (eventHandler->type == SDL_JOYBUTTONDOWN)) void Ending::checkInput()
{ {
switch (eventHandler->key.keysym.scancode)
if (input->checkInput(input_exit, REPEAT_FALSE))
{ {
case SDL_SCANCODE_ESCAPE:
section->name = SECTION_PROG_LOGO; section->name = SECTION_PROG_LOGO;
section->subsection = SUBSECTION_LOGO_TO_INTRO; section->subsection = SUBSECTION_LOGO_TO_INTRO;
break; }
case SDL_SCANCODE_B: else if (input->checkInput(input_toggle_border, REPEAT_FALSE))
{
screen->switchBorder(); screen->switchBorder();
resource->reLoadTextures(); }
break;
case SDL_SCANCODE_F: else if (input->checkInput(input_video_mode, REPEAT_FALSE))
{
screen->switchVideoMode(); screen->switchVideoMode();
resource->reLoadTextures(); }
break;
case SDL_SCANCODE_F1: else if (input->checkInput(input_window_size_1, REPEAT_FALSE))
{
screen->setWindowSize(1); screen->setWindowSize(1);
resource->reLoadTextures(); }
break;
case SDL_SCANCODE_F2: else if (input->checkInput(input_window_size_2, REPEAT_FALSE))
{
screen->setWindowSize(2); screen->setWindowSize(2);
resource->reLoadTextures(); }
break;
case SDL_SCANCODE_F3: else if (input->checkInput(input_window_size_3, REPEAT_FALSE))
{
screen->setWindowSize(3); screen->setWindowSize(3);
resource->reLoadTextures(); }
break;
case SDL_SCANCODE_F4: else if (input->checkInput(input_window_size_4, REPEAT_FALSE))
{
screen->setWindowSize(4); screen->setWindowSize(4);
resource->reLoadTextures(); }
break;
case SDL_SCANCODE_F5: else if (input->checkInput(input_swap_palette, REPEAT_FALSE))
{
switchPalette(); switchPalette();
break;
default:
break;
}
}
} }
} }

View File

@@ -83,6 +83,9 @@ private:
// Comprueba el manejador de eventos // Comprueba el manejador de eventos
void checkEventHandler(); void checkEventHandler();
// Comprueba las entradas
void checkInput();
// Inicializa los textos // Inicializa los textos
void iniTexts(); void iniTexts();
@@ -115,7 +118,7 @@ private:
public: public:
// Constructor // 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 // Destructor
~Ending(); ~Ending();

View File

@@ -2,13 +2,14 @@
#include <algorithm> #include <algorithm>
// Constructor // 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 // Copia los punteros
this->renderer = renderer; this->renderer = renderer;
this->screen = screen; this->screen = screen;
this->resource = resource; this->resource = resource;
this->asset = asset; this->asset = asset;
this->input = input;
this->options = options; this->options = options;
this->section = section; this->section = section;
@@ -74,14 +75,17 @@ Ending2::~Ending2()
// Actualiza el objeto // Actualiza el objeto
void Ending2::update() void Ending2::update()
{ {
// Comprueba el manejador de eventos
checkEventHandler();
// Comprueba que la diferencia de ticks sea mayor a la velocidad del juego // Comprueba que la diferencia de ticks sea mayor a la velocidad del juego
if (SDL_GetTicks() - ticks > ticksSpeed) if (SDL_GetTicks() - ticks > ticksSpeed)
{ {
// Actualiza el contador de ticks // Actualiza el contador de ticks
ticks = SDL_GetTicks(); ticks = SDL_GetTicks();
// Comprueba el manejador de eventos // Comprueba las entradas
checkEventHandler(); checkInput();
// Actualiza los contadores // Actualiza los contadores
updateCounters(); updateCounters();
@@ -188,55 +192,52 @@ void Ending2::checkEventHandler()
section->name = SECTION_PROG_QUIT; section->name = SECTION_PROG_QUIT;
break; break;
} }
}
}
// Comprueba las teclas que se han pulsado // Comprueba las entradas
if ((eventHandler->type == SDL_KEYDOWN && eventHandler->key.repeat == 0) || (eventHandler->type == SDL_JOYBUTTONDOWN)) void Ending2::checkInput()
{ {
switch (eventHandler->key.keysym.scancode)
if (input->checkInput(input_exit, REPEAT_FALSE))
{ {
case SDL_SCANCODE_ESCAPE:
section->name = SECTION_PROG_LOGO; section->name = SECTION_PROG_LOGO;
section->subsection = SUBSECTION_LOGO_TO_INTRO; section->subsection = SUBSECTION_LOGO_TO_INTRO;
break; }
case SDL_SCANCODE_B: else if (input->checkInput(input_toggle_border, REPEAT_FALSE))
{
screen->switchBorder(); screen->switchBorder();
resource->reLoadTextures(); }
break;
case SDL_SCANCODE_F: else if (input->checkInput(input_video_mode, REPEAT_FALSE))
{
screen->switchVideoMode(); screen->switchVideoMode();
resource->reLoadTextures(); }
break;
case SDL_SCANCODE_F1: else if (input->checkInput(input_window_size_1, REPEAT_FALSE))
{
screen->setWindowSize(1); screen->setWindowSize(1);
resource->reLoadTextures(); }
break;
case SDL_SCANCODE_F2: else if (input->checkInput(input_window_size_2, REPEAT_FALSE))
{
screen->setWindowSize(2); screen->setWindowSize(2);
resource->reLoadTextures(); }
break;
case SDL_SCANCODE_F3: else if (input->checkInput(input_window_size_3, REPEAT_FALSE))
{
screen->setWindowSize(3); screen->setWindowSize(3);
resource->reLoadTextures(); }
break;
case SDL_SCANCODE_F4: else if (input->checkInput(input_window_size_4, REPEAT_FALSE))
{
screen->setWindowSize(4); screen->setWindowSize(4);
resource->reLoadTextures(); }
break;
case SDL_SCANCODE_F5: else if (input->checkInput(input_swap_palette, REPEAT_FALSE))
{
switchPalette(); switchPalette();
break;
default:
break;
}
}
} }
} }

View File

@@ -61,6 +61,9 @@ private:
// Comprueba el manejador de eventos // Comprueba el manejador de eventos
void checkEventHandler(); void checkEventHandler();
// Comprueba las entradas
void checkInput();
// Actualiza los contadores // Actualiza los contadores
void updateCounters(); void updateCounters();
@@ -117,7 +120,7 @@ private:
public: public:
// Constructor // 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 // Destructor
~Ending2(); ~Ending2();

View File

@@ -30,7 +30,7 @@ Game::Game(SDL_Renderer *renderer, Screen *screen, Resource *resource, Asset *as
// Crea los objetos // Crea los objetos
cheevos = new Cheevos(screen, options, asset->get("cheevos.bin")); 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(); itemTracker = new ItemTracker();
roomTracker = new RoomTracker(); roomTracker = new RoomTracker();
room = new Room(resource->getRoom(currentRoom), renderer, screen, asset, options, itemTracker, &board.items, false, debug); 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; 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 = !board.music;
board.music ? JA_ResumeMusic() : JA_PauseMusic(); board.music ? JA_ResumeMusic() : JA_PauseMusic();
} }
if (input->checkInput(input_pause, REPEAT_FALSE)) else if (input->checkInput(input_pause, REPEAT_FALSE))
{ {
switchPause(); switchPause();
} }
if (input->checkInput(input_toggle_border, REPEAT_FALSE)) else if (input->checkInput(input_toggle_border, REPEAT_FALSE))
{ {
screen->switchBorder(); screen->switchBorder();
reLoadTextures(); reLoadTextures();
} }
if (input->checkInput(input_video_mode, REPEAT_FALSE)) else if (input->checkInput(input_video_mode, REPEAT_FALSE))
{ {
screen->switchVideoMode(); screen->switchVideoMode();
reLoadTextures(); reLoadTextures();
} }
if (input->checkInput(input_window_size_1, REPEAT_FALSE)) else if (input->checkInput(input_window_size_1, REPEAT_FALSE))
{ {
screen->setWindowSize(1); screen->setWindowSize(1);
reLoadTextures(); reLoadTextures();
} }
if (input->checkInput(input_window_size_2, REPEAT_FALSE)) else if (input->checkInput(input_window_size_2, REPEAT_FALSE))
{ {
screen->setWindowSize(2); screen->setWindowSize(2);
reLoadTextures(); reLoadTextures();
} }
if (input->checkInput(input_window_size_3, REPEAT_FALSE)) else if (input->checkInput(input_window_size_3, REPEAT_FALSE))
{ {
screen->setWindowSize(3); screen->setWindowSize(3);
reLoadTextures(); reLoadTextures();
} }
if (input->checkInput(input_window_size_4, REPEAT_FALSE)) else if (input->checkInput(input_window_size_4, REPEAT_FALSE))
{ {
screen->setWindowSize(4); screen->setWindowSize(4);
reLoadTextures(); reLoadTextures();
} }
if (input->checkInput(input_swap_palette, REPEAT_FALSE)) else if (input->checkInput(input_swap_palette, REPEAT_FALSE))
{ {
switchPalette(); switchPalette();
} }
@@ -264,15 +264,15 @@ void Game::run()
// Actualiza el juego, las variables, comprueba la entrada, etc. // Actualiza el juego, las variables, comprueba la entrada, etc.
void Game::update() void Game::update()
{ {
// Comprueba los eventos de la cola
checkEventHandler();
// Comprueba que la diferencia de ticks sea mayor a la velocidad del juego // Comprueba que la diferencia de ticks sea mayor a la velocidad del juego
if (SDL_GetTicks() - ticks > ticksSpeed) if (SDL_GetTicks() - ticks > ticksSpeed)
{ {
// Actualiza el contador de ticks // Actualiza el contador de ticks
ticks = SDL_GetTicks(); ticks = SDL_GetTicks();
// Comprueba los eventos de la cola
checkEventHandler();
// Comprueba el teclado // Comprueba el teclado
checkInput(); checkInput();

View File

@@ -1,13 +1,14 @@
#include "game_over.h" #include "game_over.h"
// Constructor // 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 // Copia los punteros
this->renderer = renderer; this->renderer = renderer;
this->screen = screen; this->screen = screen;
this->resource = resource; this->resource = resource;
this->asset = asset; this->asset = asset;
this->input = input;
this->options = options; this->options = options;
this->section = section; this->section = section;
@@ -56,14 +57,17 @@ GameOver::~GameOver()
// Actualiza el objeto // Actualiza el objeto
void GameOver::update() void GameOver::update()
{ {
// Comprueba el manejador de eventos
checkEventHandler();
// Comprueba que la diferencia de ticks sea mayor a la velocidad del juego // Comprueba que la diferencia de ticks sea mayor a la velocidad del juego
if (SDL_GetTicks() - ticks > ticksSpeed) if (SDL_GetTicks() - ticks > ticksSpeed)
{ {
// Actualiza el contador de ticks // Actualiza el contador de ticks
ticks = SDL_GetTicks(); ticks = SDL_GetTicks();
// Comprueba el manejador de eventos // Comprueba las entradas
checkEventHandler(); checkInput();
// Actualiza el color usado para renderizar los textos e imagenes // Actualiza el color usado para renderizar los textos e imagenes
updateColor(); updateColor();
@@ -126,54 +130,51 @@ void GameOver::checkEventHandler()
section->subsection = 0; section->subsection = 0;
break; break;
} }
}
}
// Comprueba las teclas que se han pulsado // Comprueba las entradas
if ((eventHandler->type == SDL_KEYDOWN && eventHandler->key.repeat == 0) || (eventHandler->type == SDL_JOYBUTTONDOWN)) void GameOver::checkInput()
{ {
switch (eventHandler->key.keysym.scancode)
if (input->checkInput(input_exit, REPEAT_FALSE))
{ {
case SDL_SCANCODE_ESCAPE:
section->name = SECTION_PROG_QUIT; section->name = SECTION_PROG_QUIT;
break; }
case SDL_SCANCODE_B: else if (input->checkInput(input_toggle_border, REPEAT_FALSE))
{
screen->switchBorder(); screen->switchBorder();
resource->reLoadTextures(); }
break;
case SDL_SCANCODE_F: else if (input->checkInput(input_video_mode, REPEAT_FALSE))
{
screen->switchVideoMode(); screen->switchVideoMode();
resource->reLoadTextures(); }
break;
case SDL_SCANCODE_F1: else if (input->checkInput(input_window_size_1, REPEAT_FALSE))
{
screen->setWindowSize(1); screen->setWindowSize(1);
resource->reLoadTextures(); }
break;
case SDL_SCANCODE_F2: else if (input->checkInput(input_window_size_2, REPEAT_FALSE))
{
screen->setWindowSize(2); screen->setWindowSize(2);
resource->reLoadTextures(); }
break;
case SDL_SCANCODE_F3: else if (input->checkInput(input_window_size_3, REPEAT_FALSE))
{
screen->setWindowSize(3); screen->setWindowSize(3);
resource->reLoadTextures(); }
break;
case SDL_SCANCODE_F4: else if (input->checkInput(input_window_size_4, REPEAT_FALSE))
{
screen->setWindowSize(4); screen->setWindowSize(4);
resource->reLoadTextures(); }
break;
case SDL_SCANCODE_F5: else if (input->checkInput(input_swap_palette, REPEAT_FALSE))
{
switchPalette(); switchPalette();
break;
default:
break;
}
}
} }
} }

View File

@@ -53,6 +53,9 @@ private:
// Comprueba el manejador de eventos // Comprueba el manejador de eventos
void checkEventHandler(); void checkEventHandler();
// Comprueba las entradas
void checkInput();
// Actualiza el color usado para renderizar los textos e imagenes // Actualiza el color usado para renderizar los textos e imagenes
void updateColor(); void updateColor();
@@ -67,7 +70,7 @@ private:
public: public:
// Constructor // 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 // Destructor
~GameOver(); ~GameOver();

View File

@@ -87,56 +87,57 @@ void Intro::checkEventHandler()
section->name = SECTION_PROG_QUIT; section->name = SECTION_PROG_QUIT;
break; break;
} }
}
}
// Comprueba las teclas que se han pulsado // Comprueba las entradas
if ((eventHandler->type == SDL_KEYDOWN && eventHandler->key.repeat == 0) || (eventHandler->type == SDL_JOYBUTTONDOWN)) void Intro::checkInput()
{ {
switch (eventHandler->key.keysym.scancode)
if (input->checkInput(input_exit, REPEAT_FALSE))
{ {
case SDL_SCANCODE_ESCAPE:
section->name = SECTION_PROG_QUIT; section->name = SECTION_PROG_QUIT;
break; }
case SDL_SCANCODE_B: else if (input->checkInput(input_toggle_border, REPEAT_FALSE))
{
screen->switchBorder(); screen->switchBorder();
resource->reLoadTextures(); }
break;
case SDL_SCANCODE_F: else if (input->checkInput(input_video_mode, REPEAT_FALSE))
{
screen->switchVideoMode(); screen->switchVideoMode();
resource->reLoadTextures(); }
break;
case SDL_SCANCODE_F1: else if (input->checkInput(input_window_size_1, REPEAT_FALSE))
{
screen->setWindowSize(1); screen->setWindowSize(1);
resource->reLoadTextures(); }
break;
case SDL_SCANCODE_F2: else if (input->checkInput(input_window_size_2, REPEAT_FALSE))
{
screen->setWindowSize(2); screen->setWindowSize(2);
resource->reLoadTextures(); }
break;
case SDL_SCANCODE_F3: else if (input->checkInput(input_window_size_3, REPEAT_FALSE))
{
screen->setWindowSize(3); screen->setWindowSize(3);
resource->reLoadTextures(); }
break;
case SDL_SCANCODE_F4: else if (input->checkInput(input_window_size_4, REPEAT_FALSE))
{
screen->setWindowSize(4); screen->setWindowSize(4);
resource->reLoadTextures(); }
break;
case SDL_SCANCODE_F5: else if (input->checkInput(input_swap_palette, REPEAT_FALSE))
{
switchPalette(); switchPalette();
break; }
default: 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->name = SECTION_PROG_TITLE;
section->subsection = 0; section->subsection = 0;
break;
}
}
} }
} }
@@ -208,14 +209,17 @@ void Intro::renderLoad()
// Actualiza las variables // Actualiza las variables
void Intro::update() void Intro::update()
{ {
// Comprueba el manejador de eventos
checkEventHandler();
// Comprueba que la diferencia de ticks sea mayor a la velocidad del juego // Comprueba que la diferencia de ticks sea mayor a la velocidad del juego
if (SDL_GetTicks() - ticks > ticksSpeed) if (SDL_GetTicks() - ticks > ticksSpeed)
{ {
// Actualiza el contador de ticks // Actualiza el contador de ticks
ticks = SDL_GetTicks(); ticks = SDL_GetTicks();
// Comprueba el manejador de eventos // Comprueba las entradas
checkEventHandler(); checkInput();
// Gestiona el contador interno // Gestiona el contador interno
updateCounter(); updateCounter();

View File

@@ -56,6 +56,9 @@ private:
// Comprueba el manejador de eventos // Comprueba el manejador de eventos
void checkEventHandler(); void checkEventHandler();
// Comprueba las entradas
void checkInput();
// Gestiona el contador interno // Gestiona el contador interno
void updateCounter(); void updateCounter();

View File

@@ -128,7 +128,7 @@ void Logo::checkInput()
switchPalette(); 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; section->subsection = SUBSECTION_LOGO_TO_TITLE;
endSection(); endSection();
@@ -269,7 +269,7 @@ void Logo::update()
checkEventHandler(); checkEventHandler();
// Comprueba las entradas // Comprueba las entradas
void checkInput(); checkInput();
// Incrementa el contador // Incrementa el contador
counter++; counter++;

View File

@@ -3,13 +3,12 @@
#include <sstream> #include <sstream>
// Constructor // 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 // Obten punteros a objetos
this->renderer = renderer; this->renderer = renderer;
this->resource = resource; this->resource = resource;
this->asset = asset; this->asset = asset;
this->input = input;
this->options = options; this->options = options;
this->board = board; this->board = board;

View File

@@ -3,7 +3,6 @@
#include <SDL2/SDL.h> #include <SDL2/SDL.h>
#include "common/animatedsprite.h" #include "common/animatedsprite.h"
#include "common/asset.h" #include "common/asset.h"
#include "common/input.h"
#include "common/resource.h" #include "common/resource.h"
#include "common/text.h" #include "common/text.h"
#include "common/utils.h" #include "common/utils.h"
@@ -40,7 +39,6 @@ private:
SDL_Renderer *renderer; // El renderizador de la ventana SDL_Renderer *renderer; // El renderizador de la ventana
Resource *resource; // Objeto con los recursos Resource *resource; // Objeto con los recursos
Asset *asset; // Objeto con la ruta a todos los ficheros de 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 Text *text; // Objeto para escribir texto
Texture *itemTexture; // Textura con los graficos para las vidas Texture *itemTexture; // Textura con los graficos para las vidas
board_t *board; // Contiene las variables a mostrar en el marcador board_t *board; // Contiene las variables a mostrar en el marcador
@@ -64,7 +62,7 @@ private:
public: public:
// Constructor // 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 // Destructor
~ScoreBoard(); ~ScoreBoard();

View File

@@ -44,7 +44,11 @@ Title::Title(SDL_Renderer *renderer, Screen *screen, Resource *resource, Asset *
marqueeSpeed = 3; 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"; const std::string caption = "PRESS ENTER TO PLAY";
#endif
const color_t textColor = stringToColor(options->palette, "white"); const color_t textColor = stringToColor(options->palette, "white");
const color_t strokeColor = stringToColor(options->palette, "bright_blue"); const color_t strokeColor = stringToColor(options->palette, "bright_blue");
@@ -84,71 +88,63 @@ void Title::checkEventHandler()
section->name = SECTION_PROG_QUIT; section->name = SECTION_PROG_QUIT;
break; 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;
} }
switch (eventHandler->key.keysym.scancode) // Comprueba las entradas
void Title::checkInput()
{
if (input->checkInput(input_exit, REPEAT_FALSE))
{ {
case SDL_SCANCODE_ESCAPE:
section->name = SECTION_PROG_QUIT; section->name = SECTION_PROG_QUIT;
break; }
case SDL_SCANCODE_RETURN: else if (input->checkInput(input_toggle_border, REPEAT_FALSE))
section->name = SECTION_PROG_GAME; {
section->subsection = 0;
break;
case SDL_SCANCODE_B:
screen->switchBorder(); screen->switchBorder();
resource->reLoadTextures(); resource->reLoadTextures();
break; }
case SDL_SCANCODE_F: else if (input->checkInput(input_video_mode, REPEAT_FALSE))
{
screen->switchVideoMode(); screen->switchVideoMode();
resource->reLoadTextures(); resource->reLoadTextures();
break; }
case SDL_SCANCODE_F1: else if (input->checkInput(input_window_size_1, REPEAT_FALSE))
{
screen->setWindowSize(1); screen->setWindowSize(1);
resource->reLoadTextures(); resource->reLoadTextures();
break; }
case SDL_SCANCODE_F2: else if (input->checkInput(input_window_size_2, REPEAT_FALSE))
{
screen->setWindowSize(2); screen->setWindowSize(2);
resource->reLoadTextures(); resource->reLoadTextures();
break; }
case SDL_SCANCODE_F3: else if (input->checkInput(input_window_size_3, REPEAT_FALSE))
{
screen->setWindowSize(3); screen->setWindowSize(3);
resource->reLoadTextures(); resource->reLoadTextures();
break; }
case SDL_SCANCODE_F4: else if (input->checkInput(input_window_size_4, REPEAT_FALSE))
{
screen->setWindowSize(4); screen->setWindowSize(4);
resource->reLoadTextures(); resource->reLoadTextures();
break; }
case SDL_SCANCODE_F5: else if (input->checkInput(input_swap_palette, REPEAT_FALSE))
{
switchPalette(); 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 // Actualiza las variables
void Title::update() void Title::update()
{ {
// Comprueba el manejador de eventos
checkEventHandler();
// Comprueba que la diferencia de ticks sea mayor a la velocidad del juego // Comprueba que la diferencia de ticks sea mayor a la velocidad del juego
if (SDL_GetTicks() - ticks > ticksSpeed) if (SDL_GetTicks() - ticks > ticksSpeed)
{ {
// Actualiza el contador de ticks // Actualiza el contador de ticks
ticks = SDL_GetTicks(); ticks = SDL_GetTicks();
// Comprueba el manejador de eventos // Comprueba las entradas
checkEventHandler(); checkInput();
// Incrementa el contador // Incrementa el contador
counter++; counter++;

View File

@@ -57,6 +57,9 @@ private:
// Comprueba el manejador de eventos // Comprueba el manejador de eventos
void checkEventHandler(); void checkEventHandler();
// Comprueba las entradas
void checkInput();
// Actualiza la marquesina // Actualiza la marquesina
void updateMarquee(); void updateMarquee();