Movidos los efectos shake y flash de la clase game a la clase screen
This commit is contained in:
@@ -244,9 +244,6 @@ void Game::init()
|
||||
lastEnemyDeploy = 0;
|
||||
enemyDeployCounter = 0;
|
||||
enemySpeed = defaultEnemySpeed;
|
||||
effect.flash = false;
|
||||
effect.shake = false;
|
||||
effect.shakeCounter = SHAKE_COUNTER;
|
||||
helper.needCoffee = false;
|
||||
helper.needCoffeeMachine = false;
|
||||
helper.needPowerBall = false;
|
||||
@@ -1620,8 +1617,8 @@ void Game::updateStage()
|
||||
stageBitmapCounter = 0;
|
||||
enemySpeed = defaultEnemySpeed;
|
||||
setBalloonSpeed(enemySpeed);
|
||||
effect.flash = true;
|
||||
effect.shake = true;
|
||||
screen->flash(flashColor, 5);
|
||||
screen->shake();
|
||||
}
|
||||
|
||||
// Incrementa el contador del bitmap que aparece mostrando el cambio de fase
|
||||
@@ -1999,8 +1996,8 @@ void Game::destroyAllBalloons()
|
||||
|
||||
enemyDeployCounter = 255;
|
||||
JA_PlaySound(powerBallSound);
|
||||
effect.flash = true;
|
||||
effect.shake = true;
|
||||
screen->flash(flashColor, 5);
|
||||
screen->shake();
|
||||
}
|
||||
|
||||
// Detiene todos los globos
|
||||
@@ -2263,7 +2260,7 @@ void Game::updateItems()
|
||||
if (item->isOnFloor())
|
||||
{
|
||||
JA_PlaySound(coffeeMachineSound);
|
||||
effect.shake = true;
|
||||
screen->shake();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -2409,36 +2406,6 @@ void Game::freeSmartSprites()
|
||||
}
|
||||
}
|
||||
|
||||
// Dibuja el efecto de flash
|
||||
void Game::renderFlashEffect()
|
||||
{
|
||||
if (effect.flash)
|
||||
{
|
||||
// Pantallazo blanco
|
||||
SDL_SetRenderDrawColor(renderer, 0xFF, 0xFF, 0xFF, 0xFF);
|
||||
SDL_RenderClear(renderer);
|
||||
|
||||
effect.flash = false;
|
||||
}
|
||||
}
|
||||
|
||||
// Actualiza el efecto de agitar la pantalla
|
||||
void Game::updateShakeEffect()
|
||||
{
|
||||
if (effect.shake)
|
||||
{
|
||||
if (effect.shakeCounter > 0)
|
||||
{
|
||||
effect.shakeCounter--;
|
||||
}
|
||||
else
|
||||
{
|
||||
effect.shake = false;
|
||||
effect.shakeCounter = SHAKE_COUNTER;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Crea un SmartSprite para arrojar el item café al recibir un impacto
|
||||
void Game::throwCoffee(int x, int y)
|
||||
{
|
||||
@@ -2491,13 +2458,14 @@ void Game::killPlayer(Player *player)
|
||||
player->removeExtraHit();
|
||||
throwCoffee(player->getPosX() + (player->getWidth() / 2), player->getPosY() + (player->getHeight() / 2));
|
||||
JA_PlaySound(coffeeOutSound);
|
||||
screen->shake();
|
||||
}
|
||||
else
|
||||
{
|
||||
JA_PauseMusic();
|
||||
stopAllBalloons(10);
|
||||
JA_PlaySound(playerCollisionSound);
|
||||
shakeScreen();
|
||||
screen->shake();
|
||||
JA_PlaySound(coffeeOutSound);
|
||||
player->setAlive(false);
|
||||
if (allPlayersAreDead())
|
||||
@@ -2629,7 +2597,6 @@ void Game::update()
|
||||
// Actualiza los contadores de estado y efectos
|
||||
updateTimeStoppedCounter();
|
||||
updateEnemyDeployCounter();
|
||||
updateShakeEffect();
|
||||
|
||||
// Actualiza el ayudante
|
||||
updateHelper();
|
||||
@@ -2659,7 +2626,7 @@ void Game::updateBackground()
|
||||
{
|
||||
// Si el juego está completado, se reduce la velocidad de las nubes
|
||||
if (gameCompleted)
|
||||
{
|
||||
{
|
||||
if (balloonsPopped > 400)
|
||||
{
|
||||
balloonsPopped -= 25;
|
||||
@@ -2675,8 +2642,8 @@ void Game::updateBackground()
|
||||
|
||||
// Aplica la velocidad calculada para las nubes
|
||||
background->setCloudsSpeed(speed);
|
||||
const float gradientNumber = std::min(((float)balloonsPopped / 1250.0f), 3.0f);
|
||||
const float percent = gradientNumber - (int)gradientNumber;
|
||||
const float gradientNumber = std::min(((float)balloonsPopped / 1250.0f), 3.0f);
|
||||
const float percent = gradientNumber - (int)gradientNumber;
|
||||
background->setGradientNumber((int)gradientNumber);
|
||||
background->setTransition(percent);
|
||||
|
||||
@@ -2695,12 +2662,12 @@ void Game::renderSeparator()
|
||||
// Dibuja los elementos de la zona de juego en su textura
|
||||
void Game::fillCanvas()
|
||||
{
|
||||
//Dibujamos el contenido de la zona de juego en su textura
|
||||
// Dibujamos el contenido de la zona de juego en su textura
|
||||
SDL_Texture *temp = SDL_GetRenderTarget(renderer);
|
||||
SDL_SetRenderTarget(renderer, canvas);
|
||||
|
||||
//SDL_SetRenderDrawColor(renderer, 255, 0, 0, 255);
|
||||
//SDL_RenderClear(renderer);
|
||||
// SDL_SetRenderDrawColor(renderer, 255, 0, 0, 255);
|
||||
// SDL_RenderClear(renderer);
|
||||
|
||||
// Dibuja los objetos
|
||||
background->render();
|
||||
@@ -2718,31 +2685,33 @@ void Game::fillCanvas()
|
||||
// Dibuja el juego
|
||||
void Game::render()
|
||||
{
|
||||
// Dibuja la zona de juego y el marcador
|
||||
// Dibuja los graficos de la zona de juego en la textura
|
||||
fillCanvas();
|
||||
|
||||
|
||||
// Prepara para empezar a dibujar en la textura de juego
|
||||
screen->start();
|
||||
|
||||
// Limpia la pantalla
|
||||
screen->clean(bgColor);
|
||||
|
||||
// Copia la textura con la zona de juego a la pantalla
|
||||
SDL_RenderCopy(renderer, canvas, nullptr, &playArea);
|
||||
|
||||
// Dibuja el marcador
|
||||
scoreboard->render();
|
||||
|
||||
// Dibuja el separador del marcador de la zona de juego
|
||||
renderSeparator();
|
||||
|
||||
// Dibuja el sprite del jugador al morir
|
||||
if ((deathCounter <= 150) && !players[0]->isAlive())
|
||||
{
|
||||
renderDeathFade(150 - deathCounter);
|
||||
}
|
||||
|
||||
// Dibuja el fade de fin de juego
|
||||
if ((gameCompleted) && (gameCompletedCounter >= GAME_COMPLETED_START_FADE))
|
||||
{
|
||||
renderDeathFade(gameCompletedCounter - GAME_COMPLETED_START_FADE);
|
||||
}
|
||||
|
||||
renderFlashEffect();
|
||||
|
||||
// Vuelca el contenido del renderizador en pantalla
|
||||
screen->blit();
|
||||
}
|
||||
@@ -3060,12 +3029,6 @@ void Game::disableTimeStopItem()
|
||||
}
|
||||
}
|
||||
|
||||
// Agita la pantalla
|
||||
void Game::shakeScreen()
|
||||
{
|
||||
screen->setShake();
|
||||
}
|
||||
|
||||
// Bucle para el juego
|
||||
void Game::run()
|
||||
{
|
||||
@@ -3208,8 +3171,6 @@ void Game::renderPausedGame()
|
||||
{
|
||||
renderDeathFade(gameCompletedCounter - GAME_COMPLETED_START_FADE);
|
||||
}
|
||||
|
||||
renderFlashEffect();
|
||||
}
|
||||
|
||||
if (leavingPauseMenu)
|
||||
|
||||
Reference in New Issue
Block a user