shakeScreen ya no detiene la ejecución del programa

This commit is contained in:
2024-05-31 21:43:20 +02:00
parent 9ae49fcc40
commit b7cda085cc
7 changed files with 113 additions and 98 deletions

View File

@@ -215,7 +215,7 @@ void Game::init()
players.push_back(player2);
}
// Inicializa las variables
// Variables relacionadas con la dificultad
switch (difficulty)
{
case DIFFICULTY_EASY:
@@ -246,18 +246,18 @@ void Game::init()
break;
}
// Marcador
scoreboard->setPos({10, 10, 256-20, 32});
// Variables para el marcador
scoreboard->setPos({0, 160, 256, 32});
if (difficulty == DIFFICULTY_NORMAL)
{
scoreboard->setColor({46, 63, 71});
scoreboard->setColor({255, 63, 71});
}
else
{
scoreboard->setColor(difficultyColor);
}
// Resto de variables
gameCompleted = false;
gameCompletedCounter = 0;
section->name = SECTION_PROG_GAME;
@@ -2545,7 +2545,6 @@ void Game::killPlayer(Player *player)
stopAllBalloons(10);
JA_PlaySound(playerCollisionSound);
shakeScreen();
SDL_Delay(500);
JA_PlaySound(coffeeOutSound);
player->setAlive(false);
if (allPlayersAreDead())
@@ -2641,6 +2640,9 @@ void Game::update()
// Actualiza el contador de juego
counter++;
// Actualiza el objeto screen
screen->update();
// Comprueba el teclado/mando
checkGameInput();
@@ -2798,6 +2800,14 @@ void Game::renderBackground()
grassSprite->render();
}
// Dibuja la linea que separa la zona ade juego del marcador
void Game::renderSeparator()
{
// Dibuja la linea que separa el marcador de la zona de juego
SDL_SetRenderDrawColor(renderer, 13, 26, 43, 255);
SDL_RenderDrawLine(renderer, 0, 160, 255, 160);
}
// Dibuja el juego
void Game::render()
{
@@ -2815,6 +2825,7 @@ void Game::render()
renderItems();
renderSmartSprites();
scoreboard->render();
renderSeparator();
renderPlayers();
if ((deathCounter <= 150) && !players[0]->isAlive())
@@ -3149,41 +3160,7 @@ void Game::disableTimeStopItem()
// Agita la pantalla
void Game::shakeScreen()
{
const int v[] = {-1, 1, -1, 1, -1, 1, -1, 0};
for (int n = 0; n < 8; ++n)
{
// Prepara para empezar a dibujar en la textura de juego
screen->start();
// Limpia la pantalla
screen->clean(bgColor);
// Dibuja los objetos
buildingsSprite->setPosX(0);
buildingsSprite->setWidth(1);
buildingsSprite->setSpriteClip(0, 0, 1, 160);
renderBackground();
buildingsSprite->setPosX(255);
buildingsSprite->setSpriteClip(255, 0, 1, 160);
buildingsSprite->render();
buildingsSprite->setPosX(v[n]);
buildingsSprite->setWidth(256);
buildingsSprite->setSpriteClip(0, 0, 256, 160);
buildingsSprite->render();
grassSprite->render();
renderBalloons();
renderBullets();
renderItems();
renderPlayers();
scoreboard->render();
// Vuelca el contenido del renderizador en pantalla
screen->blit();
SDL_Delay(50);
}
screen->startShake();
}
// Bucle para el juego