añadidos fade-ins a las secciones
This commit is contained in:
@@ -43,6 +43,14 @@ void Fade::init()
|
||||
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
|
||||
void Fade::render()
|
||||
{
|
||||
@@ -61,8 +69,12 @@ void Fade::update()
|
||||
{
|
||||
case FADE_FULLSCREEN:
|
||||
{
|
||||
// Modifica la transparencia de la textura
|
||||
a = std::min(counter * 4, 255);
|
||||
// Modifica la transparencia de la
|
||||
if (mode == FADE_OUT)
|
||||
a = std::min(counter * 4, 255);
|
||||
else
|
||||
a = 255 - std::min(counter * 4, 255);
|
||||
|
||||
SDL_SetTextureAlphaMod(backbuffer, a);
|
||||
|
||||
// Comprueba si ha terminado
|
||||
|
||||
@@ -57,6 +57,9 @@ public:
|
||||
// Destructor
|
||||
~Fade();
|
||||
|
||||
// Resetea algunas variables para volver a hacer el fade sin perder ciertos parametros
|
||||
void reset();
|
||||
|
||||
// Pinta una transición en pantalla
|
||||
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);
|
||||
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
|
||||
background->setSrcDest(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->setType(FADE_RANDOM_SQUARE);
|
||||
fade->setPost(param->fadePostDuration);
|
||||
fade->setMode(FADE_IN);
|
||||
fade->setMode(fadeMode);
|
||||
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
|
||||
fillTexture();
|
||||
}
|
||||
@@ -71,13 +71,14 @@ void HiScoreTable::update()
|
||||
// Actualiza el fondo
|
||||
background->update();
|
||||
|
||||
fade->update();
|
||||
// Gestiona el fade
|
||||
updateFade();
|
||||
|
||||
counter++;
|
||||
|
||||
if (counter == counterEnd)
|
||||
{
|
||||
section->name = SECTION_PROG_INSTRUCTIONS;
|
||||
fade->activate();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -247,4 +248,22 @@ std::string HiScoreTable::scoreToString(Uint32 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;
|
||||
}
|
||||
}
|
||||
@@ -36,12 +36,12 @@ private:
|
||||
param_t *param; // Puntero con todos los parametros del programa
|
||||
|
||||
// Variables
|
||||
Uint16 counter; // Contador
|
||||
Uint16 counterEnd; // Valor final para el contador
|
||||
Uint32 ticks; // Contador de ticks para ajustar la velocidad 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
|
||||
Uint16 counter; // Contador
|
||||
Uint16 counterEnd; // Valor final para el contador
|
||||
Uint32 ticks; // Contador de ticks para ajustar la velocidad del programa
|
||||
Uint32 ticksSpeed; // Velocidad a la que se repiten los bucles del programa
|
||||
SDL_Rect viewArea; // Parte de la textura que se muestra en pantalla
|
||||
int fadeMode; // Modo de fade a utilizar
|
||||
|
||||
// Actualiza las variables
|
||||
void update();
|
||||
@@ -64,6 +64,9 @@ private:
|
||||
// Recarga todas las texturas
|
||||
void reloadTextures();
|
||||
|
||||
// Gestiona el fade
|
||||
void updateFade();
|
||||
|
||||
public:
|
||||
// Constructor
|
||||
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->section = section;
|
||||
|
||||
// Creao objetos
|
||||
// Crea objetos
|
||||
eventHandler = new SDL_Event();
|
||||
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);
|
||||
fade = new Fade(renderer, param);
|
||||
|
||||
// Crea un backbuffer para el renderizador
|
||||
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};
|
||||
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
|
||||
fillTexture();
|
||||
|
||||
@@ -61,6 +69,7 @@ Instructions::~Instructions()
|
||||
delete eventHandler;
|
||||
delete text;
|
||||
delete tiledbg;
|
||||
delete fade;
|
||||
|
||||
SDL_DestroyTexture(backbuffer);
|
||||
SDL_DestroyTexture(texture);
|
||||
@@ -233,6 +242,8 @@ void Instructions::update()
|
||||
// Actualiza el mosaico de fondo
|
||||
tiledbg->update();
|
||||
|
||||
fade->update();
|
||||
|
||||
if (counter == counterEnd)
|
||||
{
|
||||
section->name = SECTION_PROG_TITLE;
|
||||
@@ -262,6 +273,8 @@ void Instructions::render()
|
||||
// Copia la textura y el backbuffer al renderizador
|
||||
SDL_RenderCopy(renderer, backbuffer, nullptr, &view);
|
||||
|
||||
fade->render();
|
||||
|
||||
// Vuelca el contenido del renderizador en pantalla
|
||||
screen->blit();
|
||||
}
|
||||
|
||||
@@ -11,6 +11,7 @@
|
||||
#include "const.h"
|
||||
#include "lang.h"
|
||||
#include "tiledbg.h"
|
||||
#include "fade.h"
|
||||
|
||||
#ifndef INSTRUCTIONS_H
|
||||
#define INSTRUCTIONS_H
|
||||
@@ -32,6 +33,7 @@ private:
|
||||
Lang *lang; // Objeto para gestionar los textos en diferentes idiomas
|
||||
Text *text; // Objeto para escribir texto
|
||||
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
|
||||
param_t *param; // Puntero con todos los parametros del programa
|
||||
|
||||
|
||||
Reference in New Issue
Block a user