Powerup face blinking

This commit is contained in:
2021-08-29 16:22:19 +02:00
parent c373d10720
commit 4de3d69bb8
4 changed files with 133 additions and 73 deletions

View File

@@ -1617,7 +1617,7 @@ void Game::renderScoreBoard()
const int offset2 = offset1 + 7;
const int offset3 = offset2 + 7;
const int offset4 = offset3 + 7;
const int offsetLeft = PLAY_AREA_LEFT + 45;
const int offsetRight = PLAY_AREA_RIGHT - 45;
@@ -1731,10 +1731,47 @@ void Game::updateDeath()
// Comprueba si todos los jugadores estan muertos
bool allPlayersAreDead = true;
for (int i = 0; i < mNumPlayers; i++)
{
allPlayersAreDead &= (!mPlayer[i]->isAlive());
if (!mPlayer[i]->isAlive())
{
// Animación
if ((mPlayer[i]->getDeathCounter() / 5) % 4 == 0)
mSmartSprite[mPlayer[i]->mDeathIndex]->setSpriteClip(24 * 0, 24, 24, 24);
else if ((mPlayer[i]->getDeathCounter() / 5) % 4 == 1)
mSmartSprite[mPlayer[i]->mDeathIndex]->setSpriteClip(24 * 1, 24, 24, 24);
else if ((mPlayer[i]->getDeathCounter() / 5) % 4 == 2)
mSmartSprite[mPlayer[i]->mDeathIndex]->setSpriteClip(24 * 2, 24, 24, 24);
else if ((mPlayer[i]->getDeathCounter() / 5) % 4 == 3)
mSmartSprite[mPlayer[i]->mDeathIndex]->setSpriteClip(24 * 3, 24, 24, 24);
// Rebote en los laterales
if (mSmartSprite[mPlayer[i]->mDeathIndex]->getVelX() > 0)
{
if (mSmartSprite[mPlayer[i]->mDeathIndex]->getPosX() > (SCREEN_WIDTH - mSmartSprite[mPlayer[i]->mDeathIndex]->getWidth()))
{
mSmartSprite[mPlayer[i]->mDeathIndex]->setPosX(SCREEN_WIDTH - mSmartSprite[mPlayer[i]->mDeathIndex]->getWidth());
mSmartSprite[mPlayer[i]->mDeathIndex]->setVelX(mSmartSprite[mPlayer[i]->mDeathIndex]->getVelX() * (-1));
mSmartSprite[mPlayer[i]->mDeathIndex]->setDestX(mSmartSprite[mPlayer[i]->mDeathIndex]->getDestX() * (-1));
}
}
else
{
if (mSmartSprite[mPlayer[i]->mDeathIndex]->getPosX() < 0)
{
mSmartSprite[mPlayer[i]->mDeathIndex]->setPosX(0);
mSmartSprite[mPlayer[i]->mDeathIndex]->setVelX(mSmartSprite[mPlayer[i]->mDeathIndex]->getVelX() * (-1));
mSmartSprite[mPlayer[i]->mDeathIndex]->setDestX(mSmartSprite[mPlayer[i]->mDeathIndex]->getDestX() * (-1));
}
}
}
}
if (allPlayersAreDead)
{
JA_StopMusic();
if (mDeathCounter > 0)
{
mDeathCounter--;
@@ -1760,36 +1797,6 @@ void Game::updateDeath()
break;
}
}
// Animación
if ((mDeathCounter / 5) % 4 == 0)
mSmartSprite[mDeathIndex]->setSpriteClip(24 * 0, 24, 24, 24);
else if ((mDeathCounter / 5) % 4 == 1)
mSmartSprite[mDeathIndex]->setSpriteClip(24 * 1, 24, 24, 24);
else if ((mDeathCounter / 5) % 4 == 2)
mSmartSprite[mDeathIndex]->setSpriteClip(24 * 2, 24, 24, 24);
else if ((mDeathCounter / 5) % 4 == 3)
mSmartSprite[mDeathIndex]->setSpriteClip(24 * 3, 24, 24, 24);
// Rebote en los laterales
if (mSmartSprite[mDeathIndex]->getVelX() > 0)
{
if (mSmartSprite[mDeathIndex]->getPosX() > (SCREEN_WIDTH - mSmartSprite[mDeathIndex]->getWidth()))
{
mSmartSprite[mDeathIndex]->setPosX(SCREEN_WIDTH - mSmartSprite[mDeathIndex]->getWidth());
mSmartSprite[mDeathIndex]->setVelX(mSmartSprite[mDeathIndex]->getVelX() * (-1));
mSmartSprite[mDeathIndex]->setDestX(mSmartSprite[mDeathIndex]->getDestX() * (-1));
}
}
else
{
if (mSmartSprite[mDeathIndex]->getPosX() < 0)
{
mSmartSprite[mDeathIndex]->setPosX(0);
mSmartSprite[mDeathIndex]->setVelX(mSmartSprite[mDeathIndex]->getVelX() * (-1));
mSmartSprite[mDeathIndex]->setDestX(mSmartSprite[mDeathIndex]->getDestX() * (-1));
}
}
}
else
{
@@ -2050,7 +2057,7 @@ void Game::destroyBalloon(Uint8 index)
}
// Otorga los puntos correspondientes al globo
mPlayer[0]->addScore(Uint32(score * mPlayer[0]->getScoreMultiplier()*mDifficultyScoreMultiplier));
mPlayer[0]->addScore(Uint32(score * mPlayer[0]->getScoreMultiplier() * mDifficultyScoreMultiplier));
//setScore(mPlayer[0]->getScore());
updateHiScore();
@@ -2319,10 +2326,10 @@ void Game::resetItems()
// Devuelve un item en función del azar
Uint8 Game::dropItem()
{
//if (mPlayer[0]->isPowerUp() || (mCoffeeMachineEnabled))
// return NO_KIND;
//else
// return ITEM_COFFEE_MACHINE;
if (mPlayer[0]->isPowerUp() || (mCoffeeMachineEnabled))
return NO_KIND;
else
return ITEM_COFFEE_MACHINE;
const Uint8 luckyNumber = rand() % 100;
const Uint8 item = rand() % 6;
@@ -2454,21 +2461,21 @@ void Game::throwPlayer(int x, int y, int index)
{
const int sentit = ((rand() % 2) ? 1 : -1);
mDeathIndex = getSmartSpriteFreeIndex();
mSmartSprite[mDeathIndex]->init(mPlayer[index]->getDeadTexture(), mRenderer);
mSmartSprite[mDeathIndex]->setPosX(x);
mSmartSprite[mDeathIndex]->setPosY(y);
mSmartSprite[mDeathIndex]->setWidth(24);
mSmartSprite[mDeathIndex]->setHeight(24);
mSmartSprite[mDeathIndex]->setVelX(2.0f * sentit);
mSmartSprite[mDeathIndex]->setVelY(-5.0f);
mSmartSprite[mDeathIndex]->setAccelX(0.0f);
mSmartSprite[mDeathIndex]->setAccelY(0.2f);
mSmartSprite[mDeathIndex]->setDestX(SCREEN_WIDTH * sentit);
mSmartSprite[mDeathIndex]->setDestY(SCREEN_HEIGHT + 1);
mSmartSprite[mDeathIndex]->setEnabled(true);
mSmartSprite[mDeathIndex]->setEnabledTimer(1);
mSmartSprite[mDeathIndex]->setSpriteClip(0, 0, 24, 24);
mPlayer[index]->mDeathIndex = getSmartSpriteFreeIndex();
mSmartSprite[mPlayer[index]->mDeathIndex]->init(mPlayer[index]->getDeadTexture(), mRenderer);
mSmartSprite[mPlayer[index]->mDeathIndex]->setPosX(x);
mSmartSprite[mPlayer[index]->mDeathIndex]->setPosY(y);
mSmartSprite[mPlayer[index]->mDeathIndex]->setWidth(24);
mSmartSprite[mPlayer[index]->mDeathIndex]->setHeight(24);
mSmartSprite[mPlayer[index]->mDeathIndex]->setVelX(2.0f * sentit);
mSmartSprite[mPlayer[index]->mDeathIndex]->setVelY(-5.0f);
mSmartSprite[mPlayer[index]->mDeathIndex]->setAccelX(0.0f);
mSmartSprite[mPlayer[index]->mDeathIndex]->setAccelY(0.2f);
mSmartSprite[mPlayer[index]->mDeathIndex]->setDestX(SCREEN_WIDTH * sentit);
mSmartSprite[mPlayer[index]->mDeathIndex]->setDestY(SCREEN_HEIGHT + 1);
mSmartSprite[mPlayer[index]->mDeathIndex]->setEnabled(true);
mSmartSprite[mPlayer[index]->mDeathIndex]->setEnabledTimer(1);
mSmartSprite[mPlayer[index]->mDeathIndex]->setSpriteClip(0, 0, 24, 24);
}
// Actualiza los SmartSprites
@@ -2516,7 +2523,7 @@ void Game::killPlayer(int index)
else
{
stopAllBalloons(10);
JA_StopMusic();
//JA_StopMusic();
JA_PlaySound(mSoundPlayerCollision);
shakeScreen();
SDL_Delay(500);