From 698721ae03dfb9c7393c01613638f7c9b1fae1bc Mon Sep 17 00:00:00 2001 From: Sergio Valor Date: Fri, 7 Oct 2022 18:30:41 +0200 Subject: [PATCH] Trabajando en la pantalla de game over --- data/gfx/menu_game_over.png | Bin 0 -> 3693 bytes data/menu/gameover.men | 4 ++-- source/director.cpp | 1 + source/game.cpp | 18 +++++++++++++++--- source/game.h | 2 ++ 5 files changed, 20 insertions(+), 5 deletions(-) create mode 100644 data/gfx/menu_game_over.png diff --git a/data/gfx/menu_game_over.png b/data/gfx/menu_game_over.png new file mode 100644 index 0000000000000000000000000000000000000000..a69fb6f8ca7b915dc7aec98911a3b21b45fe50d0 GIT binary patch literal 3693 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"data/gfx/intro.png", t_bitmap); asset->add("data/gfx/logo.png", t_bitmap); + asset->add("data/gfx/menu_game_over.png", t_bitmap); asset->add("data/gfx/item_points1_disk.png", t_bitmap); asset->add("data/gfx/item_points1_disk.ani", t_data); diff --git a/source/game.cpp b/source/game.cpp index f188c6e..8c8c9b5 100644 --- a/source/game.cpp +++ b/source/game.cpp @@ -44,6 +44,7 @@ Game::Game(int numPlayers, int currentStage, SDL_Renderer *renderer, Screen *scr skyColorsSprite = new Sprite(0, 0, GAME_WIDTH, GAME_HEIGHT, gameSkyColorsTexture, renderer); grassSprite = new Sprite(0, 0, 256, 6, gameGrassTexture, renderer); powerMeterSprite = new Sprite(PLAY_AREA_CENTER_X - 20, 170, 40, 7, gamePowerMeterTexture, renderer); + gameOverSprite = new Sprite(16, 80, 128, 96, gameOverTexture, renderer); // Inicializa las variables necesarias para la sección 'Game' init(); @@ -84,6 +85,9 @@ Game::~Game() gameTextTexture->unload(); delete gameTextTexture; + gameOverTexture->unload(); + delete gameOverTexture; + // Animaciones for (auto animation : playerAnimations) { @@ -369,6 +373,7 @@ void Game::loadMedia() gamePowerMeterTexture = new LTexture(renderer, asset->get("game_power_meter.png")); gameSkyColorsTexture = new LTexture(renderer, asset->get("game_sky_colors.png")); gameTextTexture = new LTexture(renderer, asset->get("game_text.png")); + gameOverTexture = new LTexture(renderer, asset->get("menu_game_over.png")); // Texturas - Globos LTexture *balloon1Texture = new LTexture(renderer, asset->get("balloon1.png")); @@ -3355,11 +3360,17 @@ void Game::runGameOverScreen() // Limpia la pantalla screen->clean(bgColor); + // Dibujo + gameOverSprite->render(); + // Dibuja los objetos if (numPlayers == 1) { - textBig->writeCentered(PLAY_AREA_CENTER_X, PLAY_AREA_CENTER_Y - (BLOCK * 4), lang->getText(43)); - text->writeCentered(PLAY_AREA_CENTER_X, PLAY_AREA_CENTER_Y - (BLOCK * 1), lang->getText(44) + std::to_string(players.at(0)->getScore())); + // Game Over + textBig->writeCentered(PLAY_AREA_CENTER_X, PLAY_AREA_CENTER_Y - (BLOCK * 6), lang->getText(43)); + + // Your Score + text->writeCentered(PLAY_AREA_CENTER_X, PLAY_AREA_CENTER_Y - (BLOCK * 3), lang->getText(44) + std::to_string(players.at(0)->getScore())); } else { @@ -3367,7 +3378,8 @@ void Game::runGameOverScreen() text->writeCentered(PLAY_AREA_CENTER_X, PLAY_AREA_CENTER_Y - 12, lang->getText(77) + std::to_string(players.at(0)->getScore())); text->writeCentered(PLAY_AREA_CENTER_X, PLAY_AREA_CENTER_Y, lang->getText(78) + std::to_string(players.at(1)->getScore())); } - text->writeCentered(PLAY_AREA_CENTER_X, PLAY_AREA_CENTER_Y + BLOCK * 2, lang->getText(45)); + // Continue? + text->writeCentered(99, PLAY_AREA_CENTER_Y + BLOCK * 2, lang->getText(45)); gameOverMenu->render(); fade->render(); diff --git a/source/game.h b/source/game.h index 6d1558e..8a71b25 100644 --- a/source/game.h +++ b/source/game.h @@ -137,6 +137,7 @@ private: LTexture *gamePowerMeterTexture; // Textura con el marcador de poder de la fase LTexture *gameSkyColorsTexture; // Textura con los diferentes colores de fondo del juego LTexture *gameTextTexture; // Textura para los sprites con textos + LTexture *gameOverTexture; // Textura para la pantalla de game over std::vector *> itemAnimations; // Vector con las animaciones de los items std::vector *> playerAnimations; // Vector con las animaciones del jugador @@ -166,6 +167,7 @@ private: Sprite *skyColorsSprite; // Sprite con los graficos del degradado de color de fondo Sprite *grassSprite; // Sprite para la hierba Sprite *powerMeterSprite; // Sprite para el medidor de poder de la fase + Sprite *gameOverSprite; // Sprite para dibujar los graficos del game over JA_Sound balloonSound; // Sonido para la explosión del globo JA_Sound bulletSound; // Sonido para los disparos