Añadido delay final al fade

This commit is contained in:
2024-06-24 08:16:27 +02:00
parent 5b8ea728ca
commit 895955f122
7 changed files with 53 additions and 27 deletions

View File

@@ -1,6 +1,7 @@
gameWidth 320
gameHeight 240
numSquaresWidth 80
numSquaresHeight 60
numSquaresWidth 160
numSquaresHeight 120
fadeRandomSquaresDelay 1
fadeRandomSquaresMult 8
fadeRandomSquaresMult 500
fadePostDuration 50

View File

@@ -163,10 +163,11 @@ struct param_t
SDL_Rect scoreboard; // Posición y tamaño del marcador
int numSquaresWidth;
int numSquaresHeight;
int fadeRandomSquaresDelay;
int fadeRandomSquaresMult;
int numSquaresWidth; // Cantidad total de cuadraditos en horizontal para el FADE_RANDOM_SQUARE
int numSquaresHeight; // Cantidad total de cuadraditos en vertical para el FADE_RANDOM_SQUARE
int fadeRandomSquaresDelay; // Duración entre cada pintado de cuadrados
int fadeRandomSquaresMult; // Cantidad de cuadrados que se pintaran cada vez
int fadePostDuration; // Duración final del fade
};
// Calcula el cuadrado de la distancia entre dos puntos

View File

@@ -73,6 +73,6 @@ const color_t difficultyEasyColor = {75, 105, 47};
const color_t difficultyNormalColor = {255, 122, 0};
const color_t difficultyHardColor = {118, 66, 138};
const color_t flashColor = {0xFF, 0xFF, 0xFF};
const color_t fadeColor = {0x17, 0x17, 0x26};
const color_t fadeColor = {0x27, 0x27, 0x36};
#endif

View File

@@ -34,6 +34,8 @@ void Fade::init()
r = 0;
g = 0;
b = 0;
postDuration = 20;
postCounter = 0;
numSquaresWidth = param->numSquaresWidth;
numSquaresHeight = param->numSquaresHeight;
fadeRandomSquaresDelay = param->fadeRandomSquaresDelay;
@@ -148,9 +150,16 @@ void Fade::update()
}
if (finished)
{
if (postCounter == postDuration)
{
enabled = false;
}
else
{
postCounter++;
}
}
counter++;
}
@@ -162,6 +171,7 @@ void Fade::activate()
enabled = true;
finished = false;
counter = 0;
postCounter = 0;
switch (type)
{
@@ -204,15 +214,10 @@ void Fade::activate()
int num = numSquaresWidth * numSquaresHeight;
while (num > 1)
{
// agafa un nombre aleatòri entre 0 i num-1
int num_arreu = rand() % num;
// el element triat el swapechem amb l'ultim
SDL_Rect temp = square[num_arreu];
square[num_arreu] = square[num - 1];
square[num - 1] = temp;
// I ara queda un element menys per desordenar
num--;
}
break;
@@ -229,7 +234,8 @@ bool Fade::isEnabled()
// Comprueba si ha terminado la transicion
bool Fade::hasEnded()
{
return finished;
// Ha terminado cuando ha finalizado la transición y se ha deshabilitado
return !enabled && finished;
}
// Establece el tipo de fade
@@ -245,3 +251,9 @@ void Fade::setColor(Uint8 r, Uint8 g, Uint8 b)
this->g = g;
this->b = b;
}
// Establece la duración posterior
void Fade::setPost(int value)
{
postDuration = value;
}

View File

@@ -32,8 +32,10 @@ private:
int numSquaresHeight; // Cantidad total de cuadraditos en vertical para el FADE_RANDOM_SQUARE
param_t *param; // Puntero con todos los parametros del programa
std::vector<SDL_Rect> square; // Vector con los indices de los cuadrados para el FADE_RANDOM_SQUARE
int fadeRandomSquaresDelay;
int fadeRandomSquaresMult;
int fadeRandomSquaresDelay; // Duración entre cada pintado de cuadrados
int fadeRandomSquaresMult; // Cantidad de cuadrados que se pintaran cada vez
int postDuration; // Duración posterior del fade tras finalizar
int postCounter; // Contador para la duración posterior
// Inicializa las variables
void init();
@@ -65,6 +67,9 @@ public:
// Establece el color del fade
void setColor(Uint8 r, Uint8 g, Uint8 b);
// Establece la duración posterior
void setPost(int value);
};
#endif

View File

@@ -20,6 +20,7 @@ void initParam(param_t *param)
param->numSquaresHeight = 60;
param->fadeRandomSquaresDelay = 1;
param->fadeRandomSquaresMult = 8;
param->fadePostDuration = 20;
}
// Establece valores para los parametros a partir de un fichero de texto
@@ -97,6 +98,11 @@ bool setOptions(param_t *param, std::string var, std::string value)
param->fadeRandomSquaresMult = std::stoi(value);
}
else if (var == "fadePostDuration")
{
param->fadePostDuration = std::stoi(value);
}
else
{
success = false;

View File

@@ -75,6 +75,7 @@ void Title::init()
ticksSpeed = 15;
fade->setColor(fadeColor.r, fadeColor.g, fadeColor.b);
fade->setType(FADE_RANDOM_SQUARE);
fade->setPost(param->fadePostDuration);
demo = true;
// Pone valores por defecto a las opciones de control