diff --git a/source/background.cpp b/source/background.cpp index b7fc1a5..525121c 100644 --- a/source/background.cpp +++ b/source/background.cpp @@ -177,6 +177,8 @@ void Background::setGradientNumber(int value) // Ajusta el valor de la variable void Background::setTransition(float value) { + value = std::min(value, 1.0f); + value = std::max(value, 0.0f); transition = value; } @@ -191,13 +193,13 @@ void Background::setPos(SDL_Rect rect) } // Ajusta el valor de la variable -void Background::setSrcDest(SDL_Rect value) +void Background::setSrcRect(SDL_Rect value) { srcRect = value; } // Ajusta el valor de la variable -void Background::setDstDest(SDL_Rect value) +void Background::setDstRect(SDL_Rect value) { dstRect = value; } @@ -220,6 +222,10 @@ void Background::setColor(color_t color) // Establece la transparencia de la atenuación void Background::setAlpha(int alpha) { + // Evita que se asignen valores fuera de rango + alpha = std::min(alpha, 255); + alpha = std::max(alpha, 0); + // Guarda el valor actual alphaColorTextTemp = alphaColorText; diff --git a/source/background.h b/source/background.h index b14bf76..5931b8d 100644 --- a/source/background.h +++ b/source/background.h @@ -5,6 +5,41 @@ #include "common/asset.h" #include "common/movingsprite.h" +/* + Esta clase es la encargada de dibujar el fondo que aparece durante la sección + jugable. + + Utiliza una textura donde compone la imagen y luego tiene una textura superior + rellena de un color sólido cuya opacidad se puede modificar. + + El objeto tiene un tamaño total definido en la variable "rect". En principio este + tamaño coincide con el tamaño de la ventana o resolución del juego, pero se pinta + solo el rectangulo definido en srcRect en la posición de la pantalla definida en + dstRect. + + Utiliza varios métodos para definir su comportamiento: + - setCloudsSpeed(float value) + Velocidad a la que se desplazan las nubes cada frame + + - setGradientNumber(int value) + Escoge el índice de la textura de fondo a usar (el color del cielo) + + - setTransition(float value) + Porcentaje (entre 0.0f (textura actual) y 1.0f (textura siguiente)) para mostrar entre la textura de fondo actual y la siguiente + + - setSrcDest(SDL_Rect value) + Rectangulo de la textura de fondo que se desea mostrar + + - setDstDest(SDL_Rect value) + Rectangulo de destino donde se mostrará el rectángulo antrior + + - setColor(color_t color) + Establece el color de la textura de superposición + + - setAlpha(int alpha) + Establece la transparencia de la textura de superposición +*/ + // Clase Background class Background { @@ -87,10 +122,10 @@ public: void setTransition(float value); // Ajusta el valor de la variable - void setSrcDest(SDL_Rect value); + void setSrcRect(SDL_Rect value); // Ajusta el valor de la variable - void setDstDest(SDL_Rect value); + void setDstRect(SDL_Rect value); // Establece el color de atenuación void setColor(color_t color); diff --git a/source/hiscore_table.cpp b/source/hiscore_table.cpp index a8ae201..4cf8ad1 100644 --- a/source/hiscore_table.cpp +++ b/source/hiscore_table.cpp @@ -12,7 +12,7 @@ HiScoreTable::HiScoreTable(Screen *screen, Asset *asset, Input *input, Lang *lan this->section = section; this->options = options; this->param = param; - SDL_Renderer *renderer = screen->getRenderer(); + renderer = screen->getRenderer(); // Objetos eventHandler = new SDL_Event(); @@ -34,8 +34,8 @@ HiScoreTable::HiScoreTable(Screen *screen, Asset *asset, Input *input, Lang *lan fadeMode = FADE_IN; // Inicializa objetos - background->setSrcDest(windowArea); - background->setDstDest(windowArea); + background->setSrcRect(windowArea); + background->setDstRect(windowArea); background->setCloudsSpeed(-0.1f); background->setGradientNumber(1); background->setTransition(0.8f); diff --git a/source/hiscore_table.h b/source/hiscore_table.h index 34ea922..da271a5 100644 --- a/source/hiscore_table.h +++ b/source/hiscore_table.h @@ -28,6 +28,7 @@ class HiScoreTable { private: // Objetos y punteros + SDL_Renderer *renderer; // El renderizador de la ventana Screen *screen; // Objeto encargado de dibujar en pantalla SDL_Event *eventHandler; // Manejador de eventos SDL_Texture *backbuffer; // Textura para usar como backbuffer diff --git a/source/instructions.cpp b/source/instructions.cpp index 950238d..579ed20 100644 --- a/source/instructions.cpp +++ b/source/instructions.cpp @@ -11,7 +11,7 @@ Instructions::Instructions(Screen *screen, Asset *asset, Input *input, Lang *lan this->lang = lang; this->param = param; this->section = section; - SDL_Renderer *renderer = screen->getRenderer(); + renderer = screen->getRenderer(); // Crea objetos eventHandler = new SDL_Event(); diff --git a/source/instructions.h b/source/instructions.h index ae9905b..f58ceb3 100644 --- a/source/instructions.h +++ b/source/instructions.h @@ -31,6 +31,7 @@ class Instructions { private: // Objetos y punteros + SDL_Renderer *renderer; // El renderizador de la ventana Screen *screen; // Objeto encargado de dibujar en pantalla std::vector itemTextures; // Vector con las texturas de los items std::vector sprites; // Vector con los sprites de los items