diff --git a/source/const.h b/source/const.h index 4fe4f25..fd66d7e 100644 --- a/source/const.h +++ b/source/const.h @@ -11,8 +11,8 @@ #define HALF_BLOCK BLOCK / 2 // Resolución nativa del juego -#define GAMECANVAS_WIDTH 256 -#define GAMECANVAS_HEIGHT 192 +#define GAMECANVAS_WIDTH 320 +#define GAMECANVAS_HEIGHT 240 // Marcador const int SCOREBOARD_WIDTH = GAMECANVAS_WIDTH; diff --git a/source/director.cpp b/source/director.cpp index 6ee78d0..1d7aff5 100644 --- a/source/director.cpp +++ b/source/director.cpp @@ -16,7 +16,7 @@ Director::Director(int argc, char *argv[]) { // Inicializa variables section = new section_t(); - section->name = SECTION_PROG_TITLE; + section->name = SECTION_PROG_LOGO; // Inicializa las opciones del programa initOptions(); diff --git a/source/game.cpp b/source/game.cpp index 03bfbfb..2eb8244 100644 --- a/source/game.cpp +++ b/source/game.cpp @@ -2666,9 +2666,6 @@ void Game::fillCanvas() SDL_Texture *temp = SDL_GetRenderTarget(renderer); SDL_SetRenderTarget(renderer, canvas); - // SDL_SetRenderDrawColor(renderer, 255, 0, 0, 255); - // SDL_RenderClear(renderer); - // Dibuja los objetos background->render(); renderItems(); @@ -3152,25 +3149,16 @@ void Game::renderPausedGame() screen->clean(bgColor); // Pinta el escenario + fillCanvas(); + + if ((deathCounter <= 150) && !players[0]->isAlive()) { - background->render(); - renderBalloons(); - renderBullets(); - renderMessages(); - renderItems(); - renderSmartSprites(); - scoreboard->render(); - renderPlayers(); + renderDeathFade(150 - deathCounter); + } - if ((deathCounter <= 150) && !players[0]->isAlive()) - { - renderDeathFade(150 - deathCounter); - } - - if ((gameCompleted) && (gameCompletedCounter >= GAME_COMPLETED_START_FADE)) - { - renderDeathFade(gameCompletedCounter - GAME_COMPLETED_START_FADE); - } + if ((gameCompleted) && (gameCompletedCounter >= GAME_COMPLETED_START_FADE)) + { + renderDeathFade(gameCompletedCounter - GAME_COMPLETED_START_FADE); } if (leavingPauseMenu) diff --git a/source/logo.cpp b/source/logo.cpp index 8dcf969..e207f43 100644 --- a/source/logo.cpp +++ b/source/logo.cpp @@ -13,27 +13,11 @@ Logo::Logo(SDL_Renderer *renderer, Screen *screen, Asset *asset, Input *input, s // Reserva memoria para los punteros eventHandler = new SDL_Event(); - texture = new Texture(renderer, asset->get("logo_jailgames.png")); - texture2 = new Texture(renderer, asset->get("logo_since_1998.png")); - sprite2 = new Sprite((256 - texture2->getWidth()) / 2, 83 + texture->getHeight() + 5, texture2->getWidth(), texture2->getHeight(), texture2, renderer); - sprite2->setSpriteClip(0, 0, texture2->getWidth(), texture2->getHeight()); - texture2->setColor(0, 0, 0); - - // Crea los sprites de cada linea - for (int i = 0; i < texture->getHeight(); ++i) - { - sprite.push_back(new Sprite(0, i, texture->getWidth(), 1, texture, renderer)); - sprite.back()->setSpriteClip(0, i, texture->getWidth(), 1); - if (i % 2 == 0) - { - sprite[i]->setPosX(256 + (i * 3)); - } - else - { - sprite[i]->setPosX(-181 - (i * 3)); - } - sprite[i]->setPosY(83 + i); - } + jailTexture = new Texture(renderer, asset->get("logo_jailgames.png")); + sinceTexture = new Texture(renderer, asset->get("logo_since_1998.png")); + sinceSprite = new Sprite((GAMECANVAS_WIDTH - sinceTexture->getWidth()) / 2, 83 + jailTexture->getHeight() + 5, sinceTexture->getWidth(), sinceTexture->getHeight(), sinceTexture, renderer); + sinceSprite->setSpriteClip(0, 0, sinceTexture->getWidth(), sinceTexture->getHeight()); + sinceTexture->setColor(0, 0, 0); // Inicializa variables counter = 0; @@ -43,6 +27,21 @@ Logo::Logo(SDL_Renderer *renderer, Screen *screen, Asset *asset, Input *input, s initFade = 300; endLogo = 400; postLogo = 20; + speed = 8; + dest.x = GAMECANVAS_CENTER_X - jailTexture->getWidth() / 2; + dest.y = GAMECANVAS_CENTER_Y - jailTexture->getHeight() / 2; + sinceSprite->setPosY(dest.y + jailTexture->getHeight() + 5); + + // Crea los sprites de cada linea + for (int i = 0; i < jailTexture->getHeight(); ++i) + { + Sprite *temp = new Sprite(0, i, jailTexture->getWidth(), 1, jailTexture, renderer); + temp->setSpriteClip(0, i, jailTexture->getWidth(), 1); + const int posX = (i % 2 == 0) ? GAMECANVAS_WIDTH + (i * 3) : -jailTexture->getWidth() - (i * 3); + temp->setPosX(posX); + temp->setPosY(dest.y + i); + jailSprite.push_back(temp); + } // Inicializa el vector de colores color.push_back({0x00, 0x00, 0x00}); // Black @@ -58,12 +57,12 @@ Logo::Logo(SDL_Renderer *renderer, Screen *screen, Asset *asset, Input *input, s // Destructor Logo::~Logo() { - for (auto s : sprite) + for (auto s : jailSprite) { delete s; } - delete sprite2; + delete sinceSprite; delete eventHandler; } @@ -117,26 +116,24 @@ void Logo::updateJAILGAMES() { if (counter > 30) { - for (int i = 1; i < (int)sprite.size(); ++i) + for (int i = 0; i < (int)jailSprite.size(); ++i) { - const int speed = 8; - const int dest = 37; - if (sprite[i]->getPosX() != 37) + if (jailSprite[i]->getPosX() != dest.x) { if (i % 2 == 0) { - sprite[i]->incPosX(-speed); - if (sprite[i]->getPosX() < dest) + jailSprite[i]->incPosX(-speed); + if (jailSprite[i]->getPosX() < dest.x) { - sprite[i]->setPosX(dest); + jailSprite[i]->setPosX(dest.x); } } else { - sprite[i]->incPosX(speed); - if (sprite[i]->getPosX() > dest) + jailSprite[i]->incPosX(speed); + if (jailSprite[i]->getPosX() > dest.x) { - sprite[i]->setPosX(dest); + jailSprite[i]->setPosX(dest.x); } } } @@ -152,84 +149,84 @@ void Logo::updateTextureColors() if (counter == ini + inc * 0) { - texture2->setColor(color[0].r, color[0].g, color[0].b); + sinceTexture->setColor(color[0].r, color[0].g, color[0].b); } else if (counter == ini + inc * 1) { - texture2->setColor(color[1].r, color[1].g, color[1].b); + sinceTexture->setColor(color[1].r, color[1].g, color[1].b); } else if (counter == ini + inc * 2) { - texture2->setColor(color[2].r, color[2].g, color[2].b); + sinceTexture->setColor(color[2].r, color[2].g, color[2].b); } else if (counter == ini + inc * 3) { - texture2->setColor(color[3].r, color[3].g, color[3].b); + sinceTexture->setColor(color[3].r, color[3].g, color[3].b); } else if (counter == ini + inc * 4) { - texture2->setColor(color[4].r, color[4].g, color[4].b); + sinceTexture->setColor(color[4].r, color[4].g, color[4].b); } else if (counter == ini + inc * 5) { - texture2->setColor(color[5].r, color[5].g, color[5].b); + sinceTexture->setColor(color[5].r, color[5].g, color[5].b); } else if (counter == ini + inc * 6) { - texture2->setColor(color[6].r, color[6].g, color[6].b); + sinceTexture->setColor(color[6].r, color[6].g, color[6].b); } else if (counter == ini + inc * 7) { - texture2->setColor(color[7].r, color[7].g, color[7].b); + sinceTexture->setColor(color[7].r, color[7].g, color[7].b); } else if (counter == initFade + inc * 0) { - texture->setColor(color[6].r, color[6].g, color[6].b); - texture2->setColor(color[6].r, color[6].g, color[6].b); + jailTexture->setColor(color[6].r, color[6].g, color[6].b); + sinceTexture->setColor(color[6].r, color[6].g, color[6].b); } else if (counter == initFade + inc * 1) { - texture->setColor(color[5].r, color[5].g, color[5].b); - texture2->setColor(color[5].r, color[5].g, color[5].b); + jailTexture->setColor(color[5].r, color[5].g, color[5].b); + sinceTexture->setColor(color[5].r, color[5].g, color[5].b); } else if (counter == initFade + inc * 2) { - texture->setColor(color[4].r, color[4].g, color[4].b); - texture2->setColor(color[4].r, color[4].g, color[4].b); + jailTexture->setColor(color[4].r, color[4].g, color[4].b); + sinceTexture->setColor(color[4].r, color[4].g, color[4].b); } else if (counter == initFade + inc * 3) { - texture->setColor(color[3].r, color[3].g, color[3].b); - texture2->setColor(color[3].r, color[3].g, color[3].b); + jailTexture->setColor(color[3].r, color[3].g, color[3].b); + sinceTexture->setColor(color[3].r, color[3].g, color[3].b); } else if (counter == initFade + inc * 4) { - texture->setColor(color[2].r, color[2].g, color[2].b); - texture2->setColor(color[2].r, color[2].g, color[2].b); + jailTexture->setColor(color[2].r, color[2].g, color[2].b); + sinceTexture->setColor(color[2].r, color[2].g, color[2].b); } else if (counter == initFade + inc * 5) { - texture->setColor(color[1].r, color[1].g, color[1].b); - texture2->setColor(color[1].r, color[1].g, color[1].b); + jailTexture->setColor(color[1].r, color[1].g, color[1].b); + sinceTexture->setColor(color[1].r, color[1].g, color[1].b); } else if (counter == initFade + inc * 6) { - texture->setColor(color[0].r, color[0].g, color[0].b); - texture2->setColor(color[0].r, color[0].g, color[0].b); + jailTexture->setColor(color[0].r, color[0].g, color[0].b); + sinceTexture->setColor(color[0].r, color[0].g, color[0].b); } } @@ -271,12 +268,12 @@ void Logo::render() // Limpia la pantalla screen->clean(); - // Dibuja los objetos - for (auto s : sprite) + // Dibuja los sprites + for (auto s : jailSprite) { s->render(); } - sprite2->render(); + sinceSprite->render(); // Vuelca el contenido del renderizador en pantalla screen->blit(); diff --git a/source/logo.h b/source/logo.h index 5d3312a..e45daed 100644 --- a/source/logo.h +++ b/source/logo.h @@ -17,16 +17,16 @@ class Logo { private: // Objetos y punteros - SDL_Renderer *renderer; // El renderizador de la ventana - Screen *screen; // Objeto encargado de dibujar en pantalla - Asset *asset; // Objeto con los ficheros de recursos - Input *input; // Objeto pata gestionar la entrada - Texture *texture; // Textura con los graficos "JAILGAMES" - Texture *texture2; // Textura con los graficos "Since 1998" - SDL_Event *eventHandler; // Manejador de eventos - std::vector sprite; // Vector con los sprites de cada linea que forman el bitmap JAILGAMES - Sprite *sprite2; // Sprite para manejar la textura2 - section_t *section; // Estado del bucle principal para saber si continua o se sale + SDL_Renderer *renderer; // El renderizador de la ventana + Screen *screen; // Objeto encargado de dibujar en pantalla + Asset *asset; // Objeto con los ficheros de recursos + Input *input; // Objeto pata gestionar la entrada + Texture *jailTexture; // Textura con los graficos "JAILGAMES" + Texture *sinceTexture; // Textura con los graficos "Since 1998" + SDL_Event *eventHandler; // Manejador de eventos + std::vector jailSprite; // Vector con los sprites de cada linea que forman el bitmap JAILGAMES + Sprite *sinceSprite; // Sprite para manejar la sinceTexture + section_t *section; // Estado del bucle principal para saber si continua o se sale // Variables std::vector color; // Vector con los colores para el fade @@ -36,6 +36,8 @@ private: int initFade; // Tiempo del contador cuando inicia el fade a negro int endLogo; // Tiempo del contador para terminar el logo int postLogo; // Tiempo que dura el logo con el fade al maximo + int speed; // Velocidad de deslpazamiento de cada linea + SDL_Point dest; // Posición X donde dibujar el logo // Actualiza las variables void update(); diff --git a/todo.txt b/todo.txt index 4424c64..d29f309 100644 --- a/todo.txt +++ b/todo.txt @@ -8,4 +8,7 @@ [] Arreglar los anclajes en la pantalla de game over [] Al poner pausa, que se sigan moviendo las nubes [] Revisar la clase Fade -[] Quitar los static de title / crear clase para el logo de coffee crisis \ No newline at end of file +[x] Quitar los static de title / crear clase para el logo de coffee crisis +[] Añadir mini logo a pantalla de titulo +[] Estandarizar tipografias, dejar solo una (o dos) +[] Crear objeto encargado de los mensajes en pantalla (en vez de ser la clase game) \ No newline at end of file