Trabajando en la pantalla de game over

This commit is contained in:
2022-11-06 19:28:12 +01:00
parent 6dfc7e135c
commit 6fe596bf48
4 changed files with 52 additions and 19 deletions

View File

@@ -9,7 +9,7 @@ Director::Director(int argc, char *argv[])
section.name = SECTION_PROG_LOGO; section.name = SECTION_PROG_LOGO;
section.subsection = SUBSECTION_LOGO_TO_INTRO; section.subsection = SUBSECTION_LOGO_TO_INTRO;
//section.name = SECTION_PROG_GAME; section.name = SECTION_PROG_GAME;
// Crea e inicializa las opciones del programa // Crea e inicializa las opciones del programa
iniOptions(); iniOptions();

View File

@@ -40,7 +40,7 @@ Game::Game(SDL_Renderer *renderer, Screen *screen, Resource *resource, Asset *as
// Inicializa el resto de variables // Inicializa el resto de variables
ticks = 0; ticks = 0;
ticksSpeed = 15; ticksSpeed = 15;
board.lives = 9; board.lives = 0;
board.items = 0; board.items = 0;
board.rooms = 1; board.rooms = 1;
board.music = true; board.music = true;
@@ -370,7 +370,7 @@ void Game::checkIfPlayerIsAlive()
// Comprueba si ha terminado la partida // Comprueba si ha terminado la partida
void Game::checkGameOver() void Game::checkGameOver()
{ {
if (board.lives < 0) if (board.lives < 0 && blackScreenCounter > 17)
{ {
section.name = SECTION_PROG_GAME_OVER; section.name = SECTION_PROG_GAME_OVER;
} }

View File

@@ -20,6 +20,17 @@ GameOver::GameOver(SDL_Renderer *renderer, Screen *screen, Resource *resource, A
section.subsection = 0; section.subsection = 0;
ticks = 0; ticks = 0;
ticksSpeed = 15; ticksSpeed = 15;
endSection = 300;
iniFade = 210;
fadeLenght = 30;
// Inicializa el vector de colores
const std::vector<std::string> colorList = {"white", "yellow", "cyan", "green", "magenta", "red", "blue", "black"};
for (auto cl : colorList)
{
colors.push_back(stringToColor(options->palette, cl));
}
color = colors.at(0);
} }
// Destructor // Destructor
@@ -42,9 +53,12 @@ void GameOver::update()
// Comprueba el manejador de eventos // Comprueba el manejador de eventos
checkEventHandler(); checkEventHandler();
// Actualiza el color usado para renderizar los textos e imagenes
updateColor();
counter++; counter++;
if (counter == 400) if (counter == endSection)
{ {
section.name = SECTION_PROG_TITLE; section.name = SECTION_PROG_TITLE;
} }
@@ -60,7 +74,10 @@ void GameOver::render()
// Limpia la pantalla // Limpia la pantalla
screen->clean(); screen->clean();
text->writeCentered(GAMECANVAS_CENTER_X, GAMECANVAS_CENTER_Y, "G A M E O V E R"); // Escribe el texto de GAME OVER
text->writeDX(TXT_CENTER | TXT_COLOR, GAMECANVAS_CENTER_X, GAMECANVAS_CENTER_Y, "G A M E O V E R", 1, color);
text->write(0, 0, std::to_string(counter));
// Vuelca el contenido del renderizador en pantalla // Vuelca el contenido del renderizador en pantalla
screen->blit(); screen->blit();
@@ -124,8 +141,8 @@ void GameOver::checkEventHandler()
break; break;
default: default:
//section.name = SECTION_PROG_TITLE; // section.name = SECTION_PROG_TITLE;
//section.subsection = 0; // section.subsection = 0;
break; break;
} }
} }
@@ -143,3 +160,11 @@ section_t GameOver::run()
return section; return section;
} }
// Actualiza el color usado para renderizar los textos e imagenes
void GameOver::updateColor()
{
const float step = std::min(std::max(counter, iniFade) - iniFade, fadeLenght) / (float)fadeLenght;
const int index = (colors.size() - 1) * step;
color = colors.at(index);
}

View File

@@ -32,6 +32,11 @@ private:
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
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
std::vector<color_t> colors; // Vector con los colores para el fade
color_t color; // Color usado para el texto y los sprites
int endSection; // Contador: cuando acaba la sección
int iniFade; // Contador: cuando emiepza el fade
int fadeLenght; // Contador: duración del fade
// Actualiza el objeto // Actualiza el objeto
void update(); void update();
@@ -42,6 +47,9 @@ private:
// Comprueba el manejador de eventos // Comprueba el manejador de eventos
void checkEventHandler(); void checkEventHandler();
// Actualiza el color usado para renderizar los textos e imagenes
void updateColor();
public: public:
// Constructor // Constructor
GameOver(SDL_Renderer *renderer, Screen *screen, Resource *resource, Asset *asset, options_t *options); GameOver(SDL_Renderer *renderer, Screen *screen, Resource *resource, Asset *asset, options_t *options);