añadidos fade-ins a las secciones
This commit is contained in:
@@ -43,6 +43,14 @@ void Fade::init()
|
|||||||
fadeRandomSquaresMult = param->fadeRandomSquaresMult;
|
fadeRandomSquaresMult = param->fadeRandomSquaresMult;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Resetea algunas variables para volver a hacer el fade sin perder ciertos parametros
|
||||||
|
void Fade::reset()
|
||||||
|
{
|
||||||
|
enabled = false;
|
||||||
|
finished = false;
|
||||||
|
counter = 0;
|
||||||
|
}
|
||||||
|
|
||||||
// Pinta una transición en pantalla
|
// Pinta una transición en pantalla
|
||||||
void Fade::render()
|
void Fade::render()
|
||||||
{
|
{
|
||||||
@@ -61,8 +69,12 @@ void Fade::update()
|
|||||||
{
|
{
|
||||||
case FADE_FULLSCREEN:
|
case FADE_FULLSCREEN:
|
||||||
{
|
{
|
||||||
// Modifica la transparencia de la textura
|
// Modifica la transparencia de la
|
||||||
|
if (mode == FADE_OUT)
|
||||||
a = std::min(counter * 4, 255);
|
a = std::min(counter * 4, 255);
|
||||||
|
else
|
||||||
|
a = 255 - std::min(counter * 4, 255);
|
||||||
|
|
||||||
SDL_SetTextureAlphaMod(backbuffer, a);
|
SDL_SetTextureAlphaMod(backbuffer, a);
|
||||||
|
|
||||||
// Comprueba si ha terminado
|
// Comprueba si ha terminado
|
||||||
|
|||||||
@@ -57,6 +57,9 @@ public:
|
|||||||
// Destructor
|
// Destructor
|
||||||
~Fade();
|
~Fade();
|
||||||
|
|
||||||
|
// Resetea algunas variables para volver a hacer el fade sin perder ciertos parametros
|
||||||
|
void reset();
|
||||||
|
|
||||||
// Pinta una transición en pantalla
|
// Pinta una transición en pantalla
|
||||||
void render();
|
void render();
|
||||||
|
|
||||||
|
|||||||
@@ -24,6 +24,15 @@ HiScoreTable::HiScoreTable(SDL_Renderer *renderer, Screen *screen, Asset *asset,
|
|||||||
backbuffer = SDL_CreateTexture(renderer, SDL_PIXELFORMAT_RGBA8888, SDL_TEXTUREACCESS_TARGET, param->gameWidth, param->gameHeight);
|
backbuffer = SDL_CreateTexture(renderer, SDL_PIXELFORMAT_RGBA8888, SDL_TEXTUREACCESS_TARGET, param->gameWidth, param->gameHeight);
|
||||||
SDL_SetTextureBlendMode(backbuffer, SDL_BLENDMODE_BLEND);
|
SDL_SetTextureBlendMode(backbuffer, SDL_BLENDMODE_BLEND);
|
||||||
|
|
||||||
|
// Inicializa variables
|
||||||
|
section->name = SECTION_PROG_HI_SCORE_TABLE;
|
||||||
|
ticks = 0;
|
||||||
|
ticksSpeed = 15;
|
||||||
|
counter = 0;
|
||||||
|
counterEnd = 800;
|
||||||
|
viewArea = {0, 0, param->gameWidth, param->gameHeight};
|
||||||
|
fadeMode = FADE_IN;
|
||||||
|
|
||||||
// Inicializa objetos
|
// Inicializa objetos
|
||||||
background->setSrcDest(windowArea);
|
background->setSrcDest(windowArea);
|
||||||
background->setDstDest(windowArea);
|
background->setDstDest(windowArea);
|
||||||
@@ -33,18 +42,9 @@ HiScoreTable::HiScoreTable(SDL_Renderer *renderer, Screen *screen, Asset *asset,
|
|||||||
fade->setColor(fadeColor.r, fadeColor.g, fadeColor.b);
|
fade->setColor(fadeColor.r, fadeColor.g, fadeColor.b);
|
||||||
fade->setType(FADE_RANDOM_SQUARE);
|
fade->setType(FADE_RANDOM_SQUARE);
|
||||||
fade->setPost(param->fadePostDuration);
|
fade->setPost(param->fadePostDuration);
|
||||||
fade->setMode(FADE_IN);
|
fade->setMode(fadeMode);
|
||||||
fade->activate();
|
fade->activate();
|
||||||
|
|
||||||
// Inicializa variables
|
|
||||||
section->name = SECTION_PROG_HI_SCORE_TABLE;
|
|
||||||
ticks = 0;
|
|
||||||
ticksSpeed = 15;
|
|
||||||
manualQuit = false;
|
|
||||||
counter = 0;
|
|
||||||
counterEnd = 800;
|
|
||||||
viewArea = {0, 0, param->gameWidth, param->gameHeight};
|
|
||||||
|
|
||||||
// Crea el contenido de la textura con la lista de puntuaciones
|
// Crea el contenido de la textura con la lista de puntuaciones
|
||||||
fillTexture();
|
fillTexture();
|
||||||
}
|
}
|
||||||
@@ -71,13 +71,14 @@ void HiScoreTable::update()
|
|||||||
// Actualiza el fondo
|
// Actualiza el fondo
|
||||||
background->update();
|
background->update();
|
||||||
|
|
||||||
fade->update();
|
// Gestiona el fade
|
||||||
|
updateFade();
|
||||||
|
|
||||||
counter++;
|
counter++;
|
||||||
|
|
||||||
if (counter == counterEnd)
|
if (counter == counterEnd)
|
||||||
{
|
{
|
||||||
section->name = SECTION_PROG_INSTRUCTIONS;
|
fade->activate();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -248,3 +249,21 @@ std::string HiScoreTable::scoreToString(Uint32 num)
|
|||||||
|
|
||||||
return (std::to_string(num));
|
return (std::to_string(num));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Gestiona el fade
|
||||||
|
void HiScoreTable::updateFade()
|
||||||
|
{
|
||||||
|
fade->update();
|
||||||
|
|
||||||
|
if (fade->hasEnded() && fadeMode == FADE_IN)
|
||||||
|
{
|
||||||
|
fade->reset();
|
||||||
|
fadeMode = FADE_OUT;
|
||||||
|
fade->setMode(fadeMode);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (fade->hasEnded() && fadeMode == FADE_OUT)
|
||||||
|
{
|
||||||
|
section->name = SECTION_PROG_INSTRUCTIONS;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -40,8 +40,8 @@ private:
|
|||||||
Uint16 counterEnd; // Valor final para el contador
|
Uint16 counterEnd; // Valor final para el contador
|
||||||
Uint32 ticks; // Contador de ticks para ajustar la velocidad del programa
|
Uint32 ticks; // Contador de ticks para ajustar la velocidad del programa
|
||||||
Uint32 ticksSpeed; // Velocidad a la que se repiten los bucles del programa
|
Uint32 ticksSpeed; // Velocidad a la que se repiten los bucles del programa
|
||||||
bool manualQuit; // Indica si se quiere salir del modo manual
|
|
||||||
SDL_Rect viewArea; // Parte de la textura que se muestra en pantalla
|
SDL_Rect viewArea; // Parte de la textura que se muestra en pantalla
|
||||||
|
int fadeMode; // Modo de fade a utilizar
|
||||||
|
|
||||||
// Actualiza las variables
|
// Actualiza las variables
|
||||||
void update();
|
void update();
|
||||||
@@ -64,6 +64,9 @@ private:
|
|||||||
// Recarga todas las texturas
|
// Recarga todas las texturas
|
||||||
void reloadTextures();
|
void reloadTextures();
|
||||||
|
|
||||||
|
// Gestiona el fade
|
||||||
|
void updateFade();
|
||||||
|
|
||||||
public:
|
public:
|
||||||
// Constructor
|
// Constructor
|
||||||
HiScoreTable(SDL_Renderer *renderer, Screen *screen, Asset *asset, Input *input, Lang *lang, param_t *param, options_t *options, section_t *section);
|
HiScoreTable(SDL_Renderer *renderer, Screen *screen, Asset *asset, Input *input, Lang *lang, param_t *param, options_t *options, section_t *section);
|
||||||
|
|||||||
@@ -13,10 +13,11 @@ Instructions::Instructions(SDL_Renderer *renderer, Screen *screen, Asset *asset,
|
|||||||
this->param = param;
|
this->param = param;
|
||||||
this->section = section;
|
this->section = section;
|
||||||
|
|
||||||
// Creao objetos
|
// Crea objetos
|
||||||
eventHandler = new SDL_Event();
|
eventHandler = new SDL_Event();
|
||||||
text = new Text(asset->get("smb2.png"), asset->get("smb2.txt"), renderer);
|
text = new Text(asset->get("smb2.png"), asset->get("smb2.txt"), renderer);
|
||||||
tiledbg = new Tiledbg(renderer, screen, asset, {0, 0, param->gameWidth, param->gameHeight}, TILED_MODE_STATIC);
|
tiledbg = new Tiledbg(renderer, screen, asset, {0, 0, param->gameWidth, param->gameHeight}, TILED_MODE_STATIC);
|
||||||
|
fade = new Fade(renderer, param);
|
||||||
|
|
||||||
// Crea un backbuffer para el renderizador
|
// Crea un backbuffer para el renderizador
|
||||||
backbuffer = SDL_CreateTexture(renderer, SDL_PIXELFORMAT_RGBA8888, SDL_TEXTUREACCESS_TARGET, param->gameWidth, param->gameHeight);
|
backbuffer = SDL_CreateTexture(renderer, SDL_PIXELFORMAT_RGBA8888, SDL_TEXTUREACCESS_TARGET, param->gameWidth, param->gameHeight);
|
||||||
@@ -35,6 +36,13 @@ Instructions::Instructions(SDL_Renderer *renderer, Screen *screen, Asset *asset,
|
|||||||
view = {0, 0, param->gameWidth, param->gameHeight};
|
view = {0, 0, param->gameWidth, param->gameHeight};
|
||||||
spritePos = {0, 0};
|
spritePos = {0, 0};
|
||||||
|
|
||||||
|
// Inicializa objetos
|
||||||
|
fade->setColor(fadeColor.r, fadeColor.g, fadeColor.b);
|
||||||
|
fade->setType(FADE_FULLSCREEN);
|
||||||
|
fade->setPost(param->fadePostDuration);
|
||||||
|
fade->setMode(FADE_IN);
|
||||||
|
fade->activate();
|
||||||
|
|
||||||
// Rellena la textura de texto
|
// Rellena la textura de texto
|
||||||
fillTexture();
|
fillTexture();
|
||||||
|
|
||||||
@@ -61,6 +69,7 @@ Instructions::~Instructions()
|
|||||||
delete eventHandler;
|
delete eventHandler;
|
||||||
delete text;
|
delete text;
|
||||||
delete tiledbg;
|
delete tiledbg;
|
||||||
|
delete fade;
|
||||||
|
|
||||||
SDL_DestroyTexture(backbuffer);
|
SDL_DestroyTexture(backbuffer);
|
||||||
SDL_DestroyTexture(texture);
|
SDL_DestroyTexture(texture);
|
||||||
@@ -233,6 +242,8 @@ void Instructions::update()
|
|||||||
// Actualiza el mosaico de fondo
|
// Actualiza el mosaico de fondo
|
||||||
tiledbg->update();
|
tiledbg->update();
|
||||||
|
|
||||||
|
fade->update();
|
||||||
|
|
||||||
if (counter == counterEnd)
|
if (counter == counterEnd)
|
||||||
{
|
{
|
||||||
section->name = SECTION_PROG_TITLE;
|
section->name = SECTION_PROG_TITLE;
|
||||||
@@ -262,6 +273,8 @@ void Instructions::render()
|
|||||||
// Copia la textura y el backbuffer al renderizador
|
// Copia la textura y el backbuffer al renderizador
|
||||||
SDL_RenderCopy(renderer, backbuffer, nullptr, &view);
|
SDL_RenderCopy(renderer, backbuffer, nullptr, &view);
|
||||||
|
|
||||||
|
fade->render();
|
||||||
|
|
||||||
// Vuelca el contenido del renderizador en pantalla
|
// Vuelca el contenido del renderizador en pantalla
|
||||||
screen->blit();
|
screen->blit();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -11,6 +11,7 @@
|
|||||||
#include "const.h"
|
#include "const.h"
|
||||||
#include "lang.h"
|
#include "lang.h"
|
||||||
#include "tiledbg.h"
|
#include "tiledbg.h"
|
||||||
|
#include "fade.h"
|
||||||
|
|
||||||
#ifndef INSTRUCTIONS_H
|
#ifndef INSTRUCTIONS_H
|
||||||
#define INSTRUCTIONS_H
|
#define INSTRUCTIONS_H
|
||||||
@@ -32,6 +33,7 @@ private:
|
|||||||
Lang *lang; // Objeto para gestionar los textos en diferentes idiomas
|
Lang *lang; // Objeto para gestionar los textos en diferentes idiomas
|
||||||
Text *text; // Objeto para escribir texto
|
Text *text; // Objeto para escribir texto
|
||||||
Tiledbg *tiledbg; // Objeto para dibujar el mosaico animado de fondo
|
Tiledbg *tiledbg; // Objeto para dibujar el mosaico animado de fondo
|
||||||
|
Fade *fade; // Objeto para renderizar fades
|
||||||
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
|
||||||
param_t *param; // Puntero con todos los parametros del programa
|
param_t *param; // Puntero con todos los parametros del programa
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user