fix: la inmunitat del jugador no funcionava

This commit is contained in:
2024-07-25 18:13:34 +02:00
parent cff1df19c2
commit 18eab9fe0d
3 changed files with 24 additions and 32 deletions

View File

@@ -311,16 +311,16 @@ void Game::init(int playerID)
players[otherPlayer - 1]->enable(true); players[otherPlayer - 1]->enable(true);
} }
// Añade 0, 1 o 2 cafes al jugador 1 for (auto player : players)
for (int i = 0; i < rand() % 3; ++i)
{ {
players[0]->giveExtraHit(); // Añade 0, 1 o 2 cafes al jugador
} for (int i = 0; i < rand() % 3; ++i)
{
player->giveExtraHit();
}
// Añade 0, 1 o 2 cafes al jugador 2 // Empieza sin inmunidad
for (int i = 0; i < rand() % 3; ++i) player->setInvulnerable(false);
{
players[1]->giveExtraHit();
} }
// Deshabilita los sonidos // Deshabilita los sonidos
@@ -2453,7 +2453,7 @@ void Game::renderSmartSprites()
// Acciones a realizar cuando el jugador muere // Acciones a realizar cuando el jugador muere
void Game::killPlayer(Player *player) void Game::killPlayer(Player *player)
{ {
if (!player->isEnabled() && player->isInvulnerable()) if (!player->isEnabled() || player->isInvulnerable())
{ // Si no está habilitado o tiene inmunidad, no hace nada { // Si no está habilitado o tiene inmunidad, no hace nada
return; return;
} }

View File

@@ -281,11 +281,7 @@ void Player::update()
shiftColliders(); shiftColliders();
updateCooldown(); updateCooldown();
updatePowerUpCounter(); updatePowerUpCounter();
updateInvulnerableCounter(); updateInvulnerable();
if (invulnerable)
{
invulnerableCounter % 8 > 3 ? playerSprite->getTexture()->setPalette(coffees) : playerSprite->getTexture()->setPalette(3);
}
} }
// Obtiene la puntuación del jugador // Obtiene la puntuación del jugador
@@ -360,10 +356,11 @@ bool Player::isInvulnerable()
return invulnerable; return invulnerable;
} }
// Establece el valor de la variable // Establece el valor del estado
void Player::setInvulnerable(bool value) void Player::setInvulnerable(bool value)
{ {
invulnerable = value; invulnerable = value;
invulnerableCounter = invulnerable ? PLAYER_INVULNERABLE_COUNTER : 0;
} }
// Obtiene el valor de la variable // Obtiene el valor de la variable
@@ -378,20 +375,20 @@ void Player::setInvulnerableCounter(int value)
invulnerableCounter = value; invulnerableCounter = value;
} }
// Actualiza el valor de la variable // Monitoriza el estado
void Player::updateInvulnerableCounter() void Player::updateInvulnerable()
{ {
if (invulnerable) if (invulnerable)
{ {
if (invulnerableCounter > 0) if (invulnerableCounter > 0)
{ {
invulnerableCounter--; invulnerableCounter--;
invulnerableCounter % 8 > 3 ? playerSprite->getTexture()->setPalette(coffees) : playerSprite->getTexture()->setPalette(3);
} }
else else
{ {
invulnerable = false; setInvulnerable(false);
invulnerableCounter = PLAYER_INVULNERABLE_COUNTER; playerSprite->getTexture()->setPalette(coffees);
playerSprite->getTexture()->setPalette(0);
} }
} }
} }
@@ -448,8 +445,8 @@ void Player::giveExtraHit()
if (coffees < 2) if (coffees < 2)
{ {
coffees++; coffees++;
playerSprite->getTexture()->setPalette(coffees);
} }
playerSprite->getTexture()->setPalette(coffees);
} }
// Quita el toque extra al jugador // Quita el toque extra al jugador
@@ -458,16 +455,11 @@ void Player::removeExtraHit()
if (coffees > 0) if (coffees > 0)
{ {
coffees--; coffees--;
setInvulnerable(true);
playerSprite->getTexture()->setPalette(coffees);
} }
if (coffees == 0) extraHit = coffees == 0 ? false : true;
{
extraHit = false;
}
invulnerable = true;
invulnerableCounter = PLAYER_INVULNERABLE_COUNTER;
playerSprite->getTexture()->setPalette(coffees);
} }
// Habilita la entrada de ordenes // Habilita la entrada de ordenes

View File

@@ -69,8 +69,8 @@ private:
// Actualiza el circulo de colisión a la posición del jugador // Actualiza el circulo de colisión a la posición del jugador
void shiftColliders(); void shiftColliders();
// Actualiza el valor de la variable // Monitoriza el estado
void updateInvulnerableCounter(); void updateInvulnerable();
public: public:
@@ -158,7 +158,7 @@ public:
// Obtiene el valor de la variable // Obtiene el valor de la variable
bool isInvulnerable(); bool isInvulnerable();
// Establece el valor de la variable // Establece el valor del estado
void setInvulnerable(bool value); void setInvulnerable(bool value);
// Obtiene el valor de la variable // Obtiene el valor de la variable