Arreglada la animacion de morir. Ya no se usan smartsprites

This commit is contained in:
2022-10-06 13:13:27 +02:00
parent 50d2a5d1c7
commit 56c1a1d7f3
8 changed files with 53 additions and 116 deletions

View File

@@ -84,9 +84,6 @@ Game::~Game()
gameTextTexture->unload();
delete gameTextTexture;
itemTexture->unload();
delete itemTexture;
// Animaciones
for (auto animation : playerAnimations)
{
@@ -372,7 +369,6 @@ 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"));
itemTexture = new LTexture(renderer, asset->get("items.png"));
// Texturas - Globos
LTexture *balloon1Texture = new LTexture(renderer, asset->get("balloon1.png"));
@@ -1703,82 +1699,24 @@ void Game::updateStage()
void Game::updateDeath()
{
// Comprueba si todos los jugadores estan muertos
bool allAreDead = true;
bool allPlayersAreDead = true;
for (auto player : players)
{
allAreDead &= (!player->isAlive());
/*if (!player->isAlive())
{
// Animación
if ((player->getDeathCounter() / 5) % 4 == 0)
{
smartSprites[player->deathIndex]->setSpriteClip(24 * 0, 24, 24, 24);
}
else if ((player->getDeathCounter() / 5) % 4 == 1)
{
smartSprites[player->deathIndex]->setSpriteClip(24 * 1, 24, 24, 24);
}
else if ((player->getDeathCounter() / 5) % 4 == 2)
{
smartSprites[player->deathIndex]->setSpriteClip(24 * 2, 24, 24, 24);
}
else if ((player->getDeathCounter() / 5) % 4 == 3)
{
smartSprites[player->deathIndex]->setSpriteClip(24 * 3, 24, 24, 24);
}
// Rebote en los laterales
if (smartSprites[player->deathIndex]->getVelX() > 0)
{
if (smartSprites[player->deathIndex]->getPosX() > (GAME_WIDTH - smartSprites[player->deathIndex]->getWidth()))
{
smartSprites[player->deathIndex]->setPosX(GAME_WIDTH - smartSprites[player->deathIndex]->getWidth());
smartSprites[player->deathIndex]->setVelX(smartSprites[player->deathIndex]->getVelX() * (-1));
smartSprites[player->deathIndex]->setDestX(smartSprites[player->deathIndex]->getDestX() * (-1));
}
}
else
{
if (smartSprites[player->deathIndex]->getPosX() < 0)
{
smartSprites[player->deathIndex]->setPosX(0);
smartSprites[player->deathIndex]->setVelX(smartSprites[player->deathIndex]->getVelX() * (-1));
smartSprites[player->deathIndex]->setDestX(smartSprites[player->deathIndex]->getDestX() * (-1));
}
}
}*/
allPlayersAreDead &= (!player->isAlive());
}
if (allAreDead)
if (allPlayersAreDead)
{
if (deathCounter > 0)
{
deathCounter--;
if ((deathCounter == 250) || (deathCounter == 200) || (deathCounter == 180) || (deathCounter == 120) || (deathCounter == 60))
{
const Uint8 sound = rand() % 4;
switch (sound)
{
case 0:
JA_PlaySound(bubble1Sound, 0);
break;
case 1:
JA_PlaySound(bubble2Sound, 0);
break;
case 2:
JA_PlaySound(bubble3Sound, 0);
break;
case 3:
JA_PlaySound(bubble4Sound, 0);
break;
default:
break;
}
// Hace sonar aleatoriamente uno de los 4 sonidos de burbujas
const Uint8 index = rand() % 4;
const JA_Sound sound[4] = {bubble1Sound, bubble2Sound, bubble3Sound, bubble4Sound};
JA_PlaySound(sound[index], 0);
}
}
else
@@ -2556,7 +2494,7 @@ void Game::updateShakeEffect()
// Crea un SmartSprite para arrojar el item café al recibir un impacto
void Game::throwCoffee(int x, int y)
{
SmartSprite *ss = new SmartSprite(itemTexture, renderer);
SmartSprite *ss = new SmartSprite(itemTextures.at(4), renderer);
smartSprites.push_back(ss);
ss->setPosX(x - 8);
@@ -2571,36 +2509,12 @@ void Game::throwCoffee(int x, int y)
ss->setDestY(GAME_HEIGHT + 1);
ss->setEnabled(true);
ss->setEnabledCounter(1);
ss->setSpriteClip(80, 16, 16, 16);
ss->setSpriteClip(0, 0, 16, 16);
ss->setRotate(true);
ss->setRotateSpeed(10);
ss->setRotateAmount(90.0);
}
// Crea un SmartSprite para arrojar al jugador al morir
void Game::throwPlayer(int x, int y, Player *player)
{
const int sentit = ((rand() % 2) ? 1 : -1);
SmartSprite *ss = new SmartSprite(nullptr, renderer);
smartSprites.push_back(ss);
ss->setTexture(player->getDeadTexture());
ss->setPosX(x);
ss->setPosY(y);
ss->setWidth(24);
ss->setHeight(24);
ss->setVelX(2.0f * sentit);
ss->setVelY(-5.0f);
ss->setAccelX(0.0f);
ss->setAccelY(0.2f);
ss->setDestX(GAME_WIDTH * sentit);
ss->setDestY(GAME_HEIGHT + 1);
ss->setEnabled(true);
ss->setEnabledCounter(1);
ss->setSpriteClip(0, 0, 24, 24);
}
// Actualiza los SmartSprites
void Game::updateSmartSprites()
{
@@ -2638,7 +2552,6 @@ void Game::killPlayer(Player *player)
shakeScreen();
SDL_Delay(500);
JA_PlaySound(coffeeOutSound);
throwPlayer(player->getPosX(), player->getPosY(), player);
player->setAlive(false);
if (allPlayersAreDead())
{