bugfix: player could fire and get items after death

This commit is contained in:
2021-02-20 19:04:13 +01:00
parent a8eff04d6a
commit 190f1e9a47

View File

@@ -1569,20 +1569,6 @@ void GameDirector::updateDeath()
// Renderiza el fade final cuando se acaba la partida // Renderiza el fade final cuando se acaba la partida
void GameDirector::renderDeathFade() void GameDirector::renderDeathFade()
{ {
/*if (!mPlayer->isAlive())
{
SDL_Rect rect = {0, 0, SCREEN_WIDTH, SCREEN_HEIGHT};
if (mGame.deathCounter < 256)
{
SDL_SetRenderDrawColor(mRenderer, 0x27, 0x27, 0x36, 255 - mGame.deathCounter);
}
else
{
SDL_SetRenderDrawColor(mRenderer, 0x27, 0x27, 0x36, 0); // alpha - 0 trans, 255 opaco
}
SDL_RenderFillRect(mRenderer, &rect);
}*/
if (!mPlayer->isAlive() && (mGame.deathCounter < 150)) if (!mPlayer->isAlive() && (mGame.deathCounter < 150))
{ {
// 192 / 6 = 32, 6 cuadrados de 32 pixeles // 192 / 6 = 32, 6 cuadrados de 32 pixeles
@@ -1798,56 +1784,57 @@ bool GameDirector::checkPlayerBallonCollision()
// Comprueba la colisión entre el jugador y los items // Comprueba la colisión entre el jugador y los items
void GameDirector::checkPlayerItemCollision() void GameDirector::checkPlayerItemCollision()
{ {
for (Uint8 i = 0; i < MAX_ITEMS; i++) if (mPlayer->isAlive())
{ for (Uint8 i = 0; i < MAX_ITEMS; i++)
if (mItem[i]->isEnabled())
{ {
if (checkCollision(mPlayer->getCollider(), mItem[i]->getCollider())) if (mItem[i]->isEnabled())
{ {
switch (mItem[i]->getClass()) if (checkCollision(mPlayer->getCollider(), mItem[i]->getCollider()))
{ {
case ITEM_POINTS_1_DISK: switch (mItem[i]->getClass())
mPlayer->addScore(1000); {
setScore(mPlayer->getScore()); case ITEM_POINTS_1_DISK:
updateHiScore(); mPlayer->addScore(1000);
createItemScoreSprite(mItem[i]->getPosX() + (mItem[i]->getWidth() / 2) - (m1000Bitmap->getWidth() / 2), mItem[i]->getPosY(), m1000Bitmap); setScore(mPlayer->getScore());
JA_PlaySound(mSound[SOUND_ITEM_PICKUP].sound); updateHiScore();
break; createItemScoreSprite(mItem[i]->getPosX() + (mItem[i]->getWidth() / 2) - (m1000Bitmap->getWidth() / 2), mItem[i]->getPosY(), m1000Bitmap);
case ITEM_POINTS_2_GAVINA: JA_PlaySound(mSound[SOUND_ITEM_PICKUP].sound);
mPlayer->addScore(2500); break;
setScore(mPlayer->getScore()); case ITEM_POINTS_2_GAVINA:
updateHiScore(); mPlayer->addScore(2500);
createItemScoreSprite(mItem[i]->getPosX() + (mItem[i]->getWidth() / 2) - (m2500Bitmap->getWidth() / 2), mItem[i]->getPosY(), m2500Bitmap); setScore(mPlayer->getScore());
JA_PlaySound(mSound[SOUND_ITEM_PICKUP].sound); updateHiScore();
break; createItemScoreSprite(mItem[i]->getPosX() + (mItem[i]->getWidth() / 2) - (m2500Bitmap->getWidth() / 2), mItem[i]->getPosY(), m2500Bitmap);
case ITEM_POINTS_3_PACMAR: JA_PlaySound(mSound[SOUND_ITEM_PICKUP].sound);
mPlayer->addScore(5000); break;
setScore(mPlayer->getScore()); case ITEM_POINTS_3_PACMAR:
updateHiScore(); mPlayer->addScore(5000);
createItemScoreSprite(mItem[i]->getPosX() + (mItem[i]->getWidth() / 2) - (m5000Bitmap->getWidth() / 2), mItem[i]->getPosY(), m5000Bitmap); setScore(mPlayer->getScore());
JA_PlaySound(mSound[SOUND_ITEM_PICKUP].sound); updateHiScore();
break; createItemScoreSprite(mItem[i]->getPosX() + (mItem[i]->getWidth() / 2) - (m5000Bitmap->getWidth() / 2), mItem[i]->getPosY(), m5000Bitmap);
case ITEM_CLOCK: JA_PlaySound(mSound[SOUND_ITEM_PICKUP].sound);
enableTimeStopItem(); break;
JA_PlaySound(mSound[SOUND_ITEM_PICKUP].sound); case ITEM_CLOCK:
break; enableTimeStopItem();
case ITEM_TNT: JA_PlaySound(mSound[SOUND_ITEM_PICKUP].sound);
popAllBallons(); break;
setExplosionTime(true); case ITEM_TNT:
JA_PlaySound(mSound[SOUND_TITLE].sound); popAllBallons();
break; setExplosionTime(true);
case ITEM_COFFEE: JA_PlaySound(mSound[SOUND_TITLE].sound);
mPlayer->giveExtraHit(); break;
JA_PlaySound(mSound[SOUND_ITEM_PICKUP].sound); case ITEM_COFFEE:
break; mPlayer->giveExtraHit();
JA_PlaySound(mSound[SOUND_ITEM_PICKUP].sound);
break;
default: default:
break; break;
}
mItem[i]->erase();
} }
mItem[i]->erase();
} }
} }
}
} }
// Comprueba y procesa la colisión entre las balas y los globos // Comprueba y procesa la colisión entre las balas y los globos
@@ -2557,7 +2544,7 @@ void GameDirector::checkGameInput()
} }
} }
// Modo Demo no activo // Modo Demo no activo
else else if (mPlayer->isAlive())
{ {
// Tecla izquierda o el mando hacia la izquierda // Tecla izquierda o el mando hacia la izquierda
if ((keystates[mKeyboard.left] != 0) || (checkGameController(INPUT_LEFT))) if ((keystates[mKeyboard.left] != 0) || (checkGameController(INPUT_LEFT)))