forked from jaildesigner-jailgames/jaildoctors_dilemma
Pantalla de game over completada (faltaria añadir un sonido o musica)
This commit is contained in:
@@ -448,11 +448,21 @@ void Director::loadResources(section_t section)
|
|||||||
|
|
||||||
else if (section.name == SECTION_PROG_GAME_OVER)
|
else if (section.name == SECTION_PROG_GAME_OVER)
|
||||||
{
|
{
|
||||||
|
// Texturas
|
||||||
std::vector<std::string> textureList;
|
std::vector<std::string> textureList;
|
||||||
textureList.push_back("smb2.png");
|
textureList.push_back("smb2.png");
|
||||||
|
textureList.push_back("player_game_over.png");
|
||||||
|
textureList.push_back("tv.png");
|
||||||
|
|
||||||
resource->loadTextures(textureList);
|
resource->loadTextures(textureList);
|
||||||
|
|
||||||
|
// Animaciones
|
||||||
|
std::vector<std::string> animationList;
|
||||||
|
animationList.push_back("player_game_over.ani");
|
||||||
|
animationList.push_back("tv.ani");
|
||||||
|
|
||||||
|
resource->loadAnimations(animationList);
|
||||||
|
|
||||||
// Offsets
|
// Offsets
|
||||||
std::vector<std::string> offsetsList;
|
std::vector<std::string> offsetsList;
|
||||||
offsetsList.push_back("smb2.txt");
|
offsetsList.push_back("smb2.txt");
|
||||||
|
|||||||
@@ -13,6 +13,8 @@ GameOver::GameOver(SDL_Renderer *renderer, Screen *screen, Resource *resource, A
|
|||||||
// Reserva memoria para los punteros a objetos
|
// Reserva memoria para los punteros a objetos
|
||||||
eventHandler = new SDL_Event();
|
eventHandler = new SDL_Event();
|
||||||
text = new Text(resource->getOffset("smb2.txt"), resource->getTexture("smb2.png"), renderer);
|
text = new Text(resource->getOffset("smb2.txt"), resource->getTexture("smb2.png"), renderer);
|
||||||
|
playerSprite = new AnimatedSprite(renderer, resource->getAnimation("player_game_over.ani"));
|
||||||
|
tvSprite = new AnimatedSprite(renderer, resource->getAnimation("tv.ani"));
|
||||||
|
|
||||||
// Inicializa variables
|
// Inicializa variables
|
||||||
counter = 0;
|
counter = 0;
|
||||||
@@ -20,9 +22,13 @@ 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;
|
endSection = 350;
|
||||||
iniFade = 210;
|
iniFade = 260;
|
||||||
fadeLenght = 30;
|
fadeLenght = 20;
|
||||||
|
playerSprite->setPosX(GAMECANVAS_CENTER_X + 10);
|
||||||
|
playerSprite->setPosY(GAMECANVAS_CENTER_Y + 10);
|
||||||
|
tvSprite->setPosX(GAMECANVAS_CENTER_X - tvSprite->getAnimationClip(0, 0).w - 10);
|
||||||
|
tvSprite->setPosY(GAMECANVAS_CENTER_Y + 10);
|
||||||
|
|
||||||
// Inicializa el vector de colores
|
// Inicializa el vector de colores
|
||||||
const std::vector<std::string> colorList = {"white", "yellow", "cyan", "green", "magenta", "red", "blue", "black"};
|
const std::vector<std::string> colorList = {"white", "yellow", "cyan", "green", "magenta", "red", "blue", "black"};
|
||||||
@@ -39,6 +45,8 @@ GameOver::~GameOver()
|
|||||||
// Libera la memoria de los objetos
|
// Libera la memoria de los objetos
|
||||||
delete eventHandler;
|
delete eventHandler;
|
||||||
delete text;
|
delete text;
|
||||||
|
delete playerSprite;
|
||||||
|
delete tvSprite;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Actualiza el objeto
|
// Actualiza el objeto
|
||||||
@@ -56,11 +64,18 @@ void GameOver::update()
|
|||||||
// Actualiza el color usado para renderizar los textos e imagenes
|
// Actualiza el color usado para renderizar los textos e imagenes
|
||||||
updateColor();
|
updateColor();
|
||||||
|
|
||||||
|
// Actualiza los dos sprites
|
||||||
|
playerSprite->update();
|
||||||
|
tvSprite->update();
|
||||||
|
|
||||||
|
// Actualiza el contador
|
||||||
counter++;
|
counter++;
|
||||||
|
|
||||||
|
// Comprueba si ha terminado la sección
|
||||||
if (counter == endSection)
|
if (counter == endSection)
|
||||||
{
|
{
|
||||||
section.name = SECTION_PROG_TITLE;
|
section.name = SECTION_PROG_LOGO;
|
||||||
|
section.subsection = SUBSECTION_LOGO_TO_TITLE;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -75,9 +90,12 @@ void GameOver::render()
|
|||||||
screen->clean();
|
screen->clean();
|
||||||
|
|
||||||
// Escribe el texto de GAME OVER
|
// 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->writeDX(TXT_CENTER | TXT_COLOR, GAMECANVAS_CENTER_X, GAMECANVAS_CENTER_Y - 20, "G A M E O V E R", 1, color);
|
||||||
|
|
||||||
text->write(0, 0, std::to_string(counter));
|
// Dibuja los sprites
|
||||||
|
renderSprites();
|
||||||
|
|
||||||
|
// 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();
|
||||||
@@ -167,4 +185,14 @@ void GameOver::updateColor()
|
|||||||
const float step = std::min(std::max(counter, iniFade) - iniFade, fadeLenght) / (float)fadeLenght;
|
const float step = std::min(std::max(counter, iniFade) - iniFade, fadeLenght) / (float)fadeLenght;
|
||||||
const int index = (colors.size() - 1) * step;
|
const int index = (colors.size() - 1) * step;
|
||||||
color = colors.at(index);
|
color = colors.at(index);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Dibuja los sprites
|
||||||
|
void GameOver::renderSprites()
|
||||||
|
{
|
||||||
|
playerSprite->getTexture()->setColor(color.r, color.g, color.b);
|
||||||
|
playerSprite->render();
|
||||||
|
|
||||||
|
tvSprite->getTexture()->setColor(color.r, color.g, color.b);
|
||||||
|
tvSprite->render();
|
||||||
}
|
}
|
||||||
@@ -19,13 +19,15 @@ class GameOver
|
|||||||
{
|
{
|
||||||
private:
|
private:
|
||||||
// Objetos y punteros
|
// Objetos y punteros
|
||||||
SDL_Renderer *renderer; // El renderizador de la ventana
|
SDL_Renderer *renderer; // El renderizador de la ventana
|
||||||
Screen *screen; // Objeto encargado de dibujar en pantalla
|
Screen *screen; // Objeto encargado de dibujar en pantalla
|
||||||
Resource *resource; // Objeto con los recursos
|
Resource *resource; // Objeto con los recursos
|
||||||
Asset *asset; // Objeto con los ficheros de recursos
|
Asset *asset; // Objeto con los ficheros de recursos
|
||||||
options_t *options; // Puntero a las opciones del juego
|
options_t *options; // Puntero a las opciones del juego
|
||||||
SDL_Event *eventHandler; // Manejador de eventos
|
SDL_Event *eventHandler; // Manejador de eventos
|
||||||
Text *text; // Objeto para escribir texto en pantalla
|
Text *text; // Objeto para escribir texto en pantalla
|
||||||
|
AnimatedSprite *playerSprite; // Sprite con el jugador
|
||||||
|
AnimatedSprite *tvSprite; // Sprite con el televisor
|
||||||
|
|
||||||
// Variables
|
// Variables
|
||||||
int counter; // Contador
|
int counter; // Contador
|
||||||
@@ -50,6 +52,9 @@ private:
|
|||||||
// Actualiza el color usado para renderizar los textos e imagenes
|
// Actualiza el color usado para renderizar los textos e imagenes
|
||||||
void updateColor();
|
void updateColor();
|
||||||
|
|
||||||
|
// Dibuja los sprites
|
||||||
|
void renderSprites();
|
||||||
|
|
||||||
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);
|
||||||
|
|||||||
Reference in New Issue
Block a user