From 76e928e21db3328b66b81a433f109449188c5c87 Mon Sep 17 00:00:00 2001 From: Sergio Valor Date: Fri, 10 Feb 2023 19:07:19 +0100 Subject: [PATCH] Commit para seguir programando en WSL --- source/credits.cpp | 5 +- source/credits.h | 6 ++- source/demo.cpp | 11 ++-- source/demo.h | 6 ++- source/director.cpp | 18 +++---- source/ending.h | 2 + source/ending2.h | 2 + source/game.cpp | 2 +- source/game_over.h | 2 + source/intro.cpp | 3 +- source/intro.h | 4 +- source/logo.cpp | 113 ++++++++++++++++++++++-------------------- source/logo.h | 7 ++- source/scoreboard.cpp | 7 +-- source/scoreboard.h | 4 +- source/title.cpp | 3 +- source/title.h | 4 +- 17 files changed, 115 insertions(+), 84 deletions(-) diff --git a/source/credits.cpp b/source/credits.cpp index f6a5c95..b9154df 100644 --- a/source/credits.cpp +++ b/source/credits.cpp @@ -2,13 +2,14 @@ #include // Constructor -Credits::Credits(SDL_Renderer *renderer, Screen *screen, Resource *resource, Asset *asset, options_t *options, section_t *section) +Credits::Credits(SDL_Renderer *renderer, Screen *screen, Resource *resource, Asset *asset, Input *input, options_t *options, section_t *section) { // Copia la dirección de los objetos - this->resource = resource; this->renderer = renderer; this->screen = screen; + this->resource = resource; this->asset = asset; + this->input = input; this->options = options; this->section = section; diff --git a/source/credits.h b/source/credits.h index b06b790..0c76163 100644 --- a/source/credits.h +++ b/source/credits.h @@ -3,6 +3,7 @@ #include #include "common/animatedsprite.h" #include "common/asset.h" +#include "common/input.h" #include "common/jail_audio.h" #include "common/resource.h" #include "common/screen.h" @@ -30,13 +31,14 @@ 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 SDL_Event *eventHandler; // Manejador de eventos Text *text; // Objeto para escribir texto en pantalla SDL_Texture *textTexture; // Textura para dibujar el texto SDL_Texture *coverTexture; // Textura para cubrir el texto AnimatedSprite *sprite; // Sprite para el brillo del corazón 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 counter; // Contador @@ -69,7 +71,7 @@ private: public: // Constructor - Credits(SDL_Renderer *renderer, Screen *screen, Resource *resource, Asset *asset, options_t *options, section_t *section); + Credits(SDL_Renderer *renderer, Screen *screen, Resource *resource, Asset *asset, Input *input, options_t *options, section_t *section); // Destructor ~Credits(); diff --git a/source/demo.cpp b/source/demo.cpp index e2b94c1..e9c52c8 100644 --- a/source/demo.cpp +++ b/source/demo.cpp @@ -1,7 +1,7 @@ #include "demo.h" // Constructor -Demo::Demo(SDL_Renderer *renderer, Screen *screen, Resource *resource, Asset *asset, options_t *options, section_t *section, Debug *debug) +Demo::Demo(SDL_Renderer *renderer, Screen *screen, Resource *resource, Asset *asset, Input *input, options_t *options, section_t *section, Debug *debug) { // Inicia algunas variables board.iniClock = SDL_GetTicks(); @@ -18,17 +18,18 @@ Demo::Demo(SDL_Renderer *renderer, Screen *screen, Resource *resource, Asset *as currentRoom = rooms[roomIndex]; // Copia los punteros - this->resource = resource; this->renderer = renderer; - this->asset = asset; this->screen = screen; - this->debug = debug; + this->resource = resource; + this->asset = asset; + this->input = input; this->options = options; this->section = section; + this->debug = debug; // Crea los objetos itemTracker = new ItemTracker(); - scoreboard = new ScoreBoard(renderer, resource, asset, options, &board); + scoreboard = new ScoreBoard(renderer, resource, asset, input, 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); diff --git a/source/demo.h b/source/demo.h index b2a604c..387b2cd 100644 --- a/source/demo.h +++ b/source/demo.h @@ -3,6 +3,7 @@ #include #include "common/animatedsprite.h" #include "common/asset.h" +#include "common/input.h" #include "common/debug.h" #include "common/input.h" #include "common/resource.h" @@ -29,12 +30,13 @@ private: Room *room; // Objeto encargado de gestionar cada habitación del juego 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 los textos del juego ScoreBoard *scoreboard; // Objeto encargado de gestionar el marcador ItemTracker *itemTracker; // Lleva el control de los objetos recogidos Debug *debug; // Objeto para gestionar la información de debug options_t *options; // Puntero a las opciones del juego - section_t *section; // Seccion actual dentro del juego + section_t *section; // Seccion actual dentro del juego // Variables Uint32 ticks; // Contador de ticks para ajustar la velocidad del programa @@ -75,7 +77,7 @@ private: public: // Constructor - Demo(SDL_Renderer *renderer, Screen *screen, Resource *resource, Asset *asset, options_t *options, section_t *section, Debug *debug); + Demo(SDL_Renderer *renderer, Screen *screen, Resource *resource, Asset *asset, Input *input, options_t *options, section_t *section, Debug *debug); // Destructor ~Demo(); diff --git a/source/director.cpp b/source/director.cpp index f46bed8..ba8ef6b 100644 --- a/source/director.cpp +++ b/source/director.cpp @@ -1708,7 +1708,7 @@ void Director::runLogo() std::cout << "\n* SECTION: LOGO" << std::endl; } loadResources(section); - logo = new Logo(renderer, screen, resource, asset, options, section); + logo = new Logo(renderer, screen, resource, asset, input, options, section); logo->run(); delete logo; resource->free(); @@ -1722,7 +1722,7 @@ void Director::runIntro() std::cout << "\n* SECTION: INTRO" << std::endl; } loadResources(section); - intro = new Intro(renderer, screen, resource, asset, options, section); + intro = new Intro(renderer, screen, resource, asset, input, options, section); intro->run(); delete intro; resource->free(); @@ -1740,7 +1740,7 @@ void Director::runTitle() JA_PlayMusic(music); } loadResources(section); - title = new Title(renderer, screen, resource, asset, options, section); + title = new Title(renderer, screen, resource, asset, input, options, section); title->run(); delete title; resource->free(); @@ -1754,7 +1754,7 @@ void Director::runCredits() std::cout << "\n* SECTION: CREDITS" << std::endl; } loadResources(section); - credits = new Credits(renderer, screen, resource, asset, options, section); + credits = new Credits(renderer, screen, resource, asset, input, options, section); credits->run(); delete credits; resource->free(); @@ -1768,7 +1768,7 @@ void Director::runDemo() std::cout << "\n* SECTION: DEMO" << std::endl; } loadResources(section); - demo = new Demo(renderer, screen, resource, asset, options, section, debug); + demo = new Demo(renderer, screen, resource, asset, input, options, section, debug); demo->run(); delete demo; resource->free(); @@ -1782,7 +1782,7 @@ void Director::runEnterID() std::cout << "\n* SECTION: ENTER_ID" << std::endl; } // loadResources(section); - enterID = new EnterID(renderer, screen, asset, options, section); + enterID = new EnterID(renderer, screen, asset, input, options, section); enterID->run(); delete enterID; resource->free(); @@ -1796,7 +1796,7 @@ void Director::runEnding() std::cout << "\n* SECTION: ENDING" << std::endl; } loadResources(section); - ending = new Ending(renderer, screen, resource, asset, options, section); + ending = new Ending(renderer, screen, resource, asset, input, options, section); ending->run(); delete ending; resource->free(); @@ -1810,7 +1810,7 @@ void Director::runEnding2() std::cout << "\n* SECTION: ENDING2" << std::endl; } loadResources(section); - ending2 = new Ending2(renderer, screen, resource, asset, options, section); + ending2 = new Ending2(renderer, screen, resource, asset, input, options, section); ending2->run(); delete ending2; resource->free(); @@ -1824,7 +1824,7 @@ void Director::runGameOver() std::cout << "\n* SECTION: GAME OVER" << std::endl; } loadResources(section); - gameOver = new GameOver(renderer, screen, resource, asset, options, section); + gameOver = new GameOver(renderer, screen, resource, asset, input, options, section); gameOver->run(); delete gameOver; resource->free(); diff --git a/source/ending.h b/source/ending.h index 8efa945..71461c2 100644 --- a/source/ending.h +++ b/source/ending.h @@ -1,6 +1,7 @@ #pragma once #include #include "common/asset.h" +#include "common/input.h" #include "common/jail_audio.h" #include "common/resource.h" #include "common/screen.h" @@ -54,6 +55,7 @@ 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 options_t *options; // Puntero a las opciones del juego SDL_Event *eventHandler; // Manejador de eventos Text *text; // Objeto para escribir texto en pantalla diff --git a/source/ending2.h b/source/ending2.h index c9b706c..8ecc7ee 100644 --- a/source/ending2.h +++ b/source/ending2.h @@ -2,6 +2,7 @@ #include #include "common/animatedsprite.h" #include "common/asset.h" +#include "common/input.h" #include "common/jail_audio.h" #include "common/resource.h" #include "common/screen.h" @@ -25,6 +26,7 @@ private: Screen *screen; // Objeto encargado de dibujar en pantalla SDL_Event *eventHandler; // Manejador de eventos SDL_Renderer *renderer; // El renderizador de la ventana + Input *input; // Objeto pata gestionar la entrada Text *text; // Objeto para escribir texto en pantalla options_t *options; // Puntero a las opciones del juego std::vector sprites; // Vector con todos los sprites a dibujar diff --git a/source/game.cpp b/source/game.cpp index 36c16bc..2f7cdb1 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, options, &board); + scoreboard = new ScoreBoard(renderer, resource, asset, input, options, &board); itemTracker = new ItemTracker(); roomTracker = new RoomTracker(); room = new Room(resource->getRoom(currentRoom), renderer, screen, asset, options, itemTracker, &board.items, false, debug); diff --git a/source/game_over.h b/source/game_over.h index 1ba87fb..dd2972e 100644 --- a/source/game_over.h +++ b/source/game_over.h @@ -2,6 +2,7 @@ #include #include "common/animatedsprite.h" #include "common/asset.h" +#include "common/input.h" #include "common/jail_audio.h" #include "common/resource.h" #include "common/screen.h" @@ -23,6 +24,7 @@ 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 options_t *options; // Puntero a las opciones del juego SDL_Event *eventHandler; // Manejador de eventos Text *text; // Objeto para escribir texto en pantalla diff --git a/source/intro.cpp b/source/intro.cpp index 3ce2884..ad2dbdc 100644 --- a/source/intro.cpp +++ b/source/intro.cpp @@ -1,13 +1,14 @@ #include "intro.h" // Constructor -Intro::Intro(SDL_Renderer *renderer, Screen *screen, Resource *resource, Asset *asset, options_t *options, section_t *section) +Intro::Intro(SDL_Renderer *renderer, Screen *screen, Resource *resource, Asset *asset, Input *input, options_t *options, section_t *section) { // Copia la dirección de los objetos this->resource = resource; this->renderer = renderer; this->screen = screen; this->asset = asset; + this->input = input; this->options = options; this->section = section; diff --git a/source/intro.h b/source/intro.h index 6b9cd60..98021eb 100644 --- a/source/intro.h +++ b/source/intro.h @@ -2,6 +2,7 @@ #include #include "common/asset.h" +#include "common/input.h" #include "common/jail_audio.h" #include "common/resource.h" #include "common/screen.h" @@ -24,6 +25,7 @@ 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 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 @@ -71,7 +73,7 @@ private: public: // Constructor - Intro(SDL_Renderer *renderer, Screen *screen, Resource *resource, Asset *asset, options_t *options, section_t *section); + Intro(SDL_Renderer *renderer, Screen *screen, Resource *resource, Asset *asset, Input *input, options_t *options, section_t *section); // Destructor ~Intro(); diff --git a/source/logo.cpp b/source/logo.cpp index 4dae51c..f2451aa 100644 --- a/source/logo.cpp +++ b/source/logo.cpp @@ -2,13 +2,14 @@ #include // Constructor -Logo::Logo(SDL_Renderer *renderer, Screen *screen, Resource *resource, Asset *asset, options_t *options, section_t *section) +Logo::Logo(SDL_Renderer *renderer, Screen *screen, Resource *resource, Asset *asset, Input *input, options_t *options, section_t *section) { // Copia la dirección de los objetos this->resource = resource; this->renderer = renderer; this->screen = screen; this->asset = asset; + this->input = input; this->options = options; this->section = section; @@ -80,56 +81,57 @@ void Logo::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_JOYBUTTONUP)) - { - switch (eventHandler->key.keysym.scancode) - { - case SDL_SCANCODE_ESCAPE: - section->name = SECTION_PROG_QUIT; - break; +// Comprueba las entradas +void Logo::checkInput() +{ - case SDL_SCANCODE_B: - screen->switchBorder(); - resource->reLoadTextures(); - break; + if (input->checkInput(input_exit, REPEAT_FALSE)) + { + section->name = SECTION_PROG_TITLE; + } - 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->subsection = SUBSECTION_LOGO_TO_TITLE; - endSection(); - break; - } - } + else if (input->checkInput(input_swap_palette, REPEAT_FALSE)) + { + switchPalette(); + } + + else if (input->checkAnyInput()) + { + section->subsection = SUBSECTION_LOGO_TO_TITLE; + endSection(); } } @@ -175,32 +177,32 @@ void Logo::updateTextureColors() { texture2->setColor(color[0].r, color[0].g, color[0].b); } - + else if (counter == ini + inc * 1) { texture2->setColor(color[1].r, color[1].g, color[1].b); } - + else if (counter == ini + inc * 2) { texture2->setColor(color[2].r, color[2].g, color[2].b); } - + else if (counter == ini + inc * 3) { texture2->setColor(color[3].r, color[3].g, color[3].b); } - + else if (counter == ini + inc * 4) { texture2->setColor(color[4].r, color[4].g, color[4].b); } - + else if (counter == ini + inc * 5) { texture2->setColor(color[5].r, color[5].g, color[5].b); } - + else if (counter == ini + inc * 6) { texture2->setColor(color[6].r, color[6].g, color[6].b); @@ -216,37 +218,37 @@ void Logo::updateTextureColors() texture->setColor(color[6].r, color[6].g, color[6].b); texture2->setColor(color[6].r, color[6].g, color[6].b); } - + else if (counter == initFade + inc * 1) { texture->setColor(color[5].r, color[5].g, color[5].b); texture2->setColor(color[5].r, color[5].g, color[5].b); } - + else if (counter == initFade + inc * 2) { texture->setColor(color[4].r, color[4].g, color[4].b); texture2->setColor(color[4].r, color[4].g, color[4].b); } - + else if (counter == initFade + inc * 3) { texture->setColor(color[3].r, color[3].g, color[3].b); texture2->setColor(color[3].r, color[3].g, color[3].b); } - + else if (counter == initFade + inc * 4) { texture->setColor(color[2].r, color[2].g, color[2].b); texture2->setColor(color[2].r, color[2].g, color[2].b); } - + else if (counter == initFade + inc * 5) { texture->setColor(color[1].r, color[1].g, color[1].b); texture2->setColor(color[1].r, color[1].g, color[1].b); } - + else if (counter == initFade + inc * 6) { texture->setColor(color[0].r, color[0].g, color[0].b); @@ -266,6 +268,9 @@ void Logo::update() // Comprueba el manejador de eventos checkEventHandler(); + // Comprueba las entradas + void checkInput(); + // Incrementa el contador counter++; diff --git a/source/logo.h b/source/logo.h index babeb38..d7a5828 100644 --- a/source/logo.h +++ b/source/logo.h @@ -2,6 +2,7 @@ #include #include "common/asset.h" +#include "common/input.h" #include "common/jail_audio.h" #include "common/resource.h" #include "common/screen.h" @@ -21,6 +22,7 @@ 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 Texture *texture; // Textura con los graficos "JAILGAMES" Texture *texture2; // Textura con los graficos "Since 1998" SDL_Event *eventHandler; // Manejador de eventos @@ -47,6 +49,9 @@ private: // Comprueba el manejador de eventos void checkEventHandler(); + // Comprueba las entradas + void checkInput(); + // Gestiona el logo de JAILGAME void updateJAILGAMES(); @@ -61,7 +66,7 @@ private: public: // Constructor - Logo(SDL_Renderer *renderer, Screen *screen, Resource *resource, Asset *asset, options_t *options, section_t *section); + Logo(SDL_Renderer *renderer, Screen *screen, Resource *resource, Asset *asset, Input *input, options_t *options, section_t *section); // Destructor ~Logo(); diff --git a/source/scoreboard.cpp b/source/scoreboard.cpp index 4af9d99..7348887 100644 --- a/source/scoreboard.cpp +++ b/source/scoreboard.cpp @@ -3,14 +3,15 @@ #include // Constructor -ScoreBoard::ScoreBoard(SDL_Renderer *renderer, Resource *resource, Asset *asset, options_t *options, board_t *board) +ScoreBoard::ScoreBoard(SDL_Renderer *renderer, Resource *resource, Asset *asset, Input *input, options_t *options, board_t *board) { // Obten punteros a objetos + this->renderer = renderer; this->resource = resource; this->asset = asset; - this->renderer = renderer; - this->board = board; + this->input = input; this->options = options; + this->board = board; // Reserva memoria para los objetos itemTexture = resource->getTexture("items.png"); diff --git a/source/scoreboard.h b/source/scoreboard.h index 742d028..e7e6d10 100644 --- a/source/scoreboard.h +++ b/source/scoreboard.h @@ -3,6 +3,7 @@ #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" @@ -39,6 +40,7 @@ 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 @@ -62,7 +64,7 @@ private: public: // Constructor - ScoreBoard(SDL_Renderer *renderer, Resource *resource, Asset *asset, options_t *options, board_t *board); + ScoreBoard(SDL_Renderer *renderer, Resource *resource, Asset *asset, Input *input, options_t *options, board_t *board); // Destructor ~ScoreBoard(); diff --git a/source/title.cpp b/source/title.cpp index 4dbdbca..34e7d33 100644 --- a/source/title.cpp +++ b/source/title.cpp @@ -1,13 +1,14 @@ #include "title.h" // Constructor -Title::Title(SDL_Renderer *renderer, Screen *screen, Resource *resource, Asset *asset, options_t *options, section_t *section) +Title::Title(SDL_Renderer *renderer, Screen *screen, Resource *resource, Asset *asset, Input *input, options_t *options, section_t *section) { // Copia la dirección de los objetos this->resource = resource; this->renderer = renderer; this->screen = screen; this->asset = asset; + this->input = input; this->options = options; this->section = section; diff --git a/source/title.h b/source/title.h index 3395207..923c803 100644 --- a/source/title.h +++ b/source/title.h @@ -2,6 +2,7 @@ #include #include "common/asset.h" +#include "common/input.h" #include "common/jail_audio.h" #include "common/resource.h" #include "common/screen.h" @@ -29,6 +30,7 @@ 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 SDL_Event *eventHandler; // Manejador de eventos Texture *texture; // Textura con los graficos Sprite *sprite; // Sprite para manejar la textura @@ -69,7 +71,7 @@ private: public: // Constructor - Title(SDL_Renderer *renderer, Screen *screen, Resource *resource, Asset *asset, options_t *options, section_t *section); + Title(SDL_Renderer *renderer, Screen *screen, Resource *resource, Asset *asset, Input *input, options_t *options, section_t *section); // Destructor ~Title();