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

@@ -2,7 +2,7 @@
#include "player.h"
// Constructor
Player::Player(float x, int y, SDL_Renderer *renderer, std::vector<LTexture *> texture, std::vector<std::vector<std::string>*> animations)
Player::Player(float x, int y, SDL_Renderer *renderer, std::vector<LTexture *> texture, std::vector<std::vector<std::string> *> animations)
{
// Copia los punteros
this->renderer = renderer;
@@ -131,7 +131,9 @@ void Player::move()
// Si el jugador abandona el area de juego por los laterales
if ((posX < PLAY_AREA_LEFT - 5) || (posX + width > PLAY_AREA_RIGHT + 5))
posX -= velX; // Restaura su posición
{ // Restaura su posición
posX -= velX;
}
// Actualiza la posición del sprite
legsSprite->setPosX(getPosX());
@@ -143,6 +145,20 @@ void Player::move()
headSprite->setPosX(getPosX());
headSprite->setPosY(posY);
}
else
{
deathSprite->update();
// Si el cadaver abandona el area de juego por los laterales
if ((deathSprite->getPosX() < PLAY_AREA_LEFT) || (deathSprite->getPosX() + width > PLAY_AREA_RIGHT))
{ // Restaura su posición
const float vx = deathSprite->getVelX();
deathSprite->setPosX(deathSprite->getPosX() - vx);
// Rebota
deathSprite->setVelX(-vx);
}
}
}
// Pinta el jugador en pantalla
@@ -166,6 +182,10 @@ void Player::render()
headSprite->render();
}
}
else
{
deathSprite->render();
}
}
// Establece el estado del jugador cuando camina
@@ -186,8 +206,6 @@ void Player::setFiringStatus(Uint8 status)
if (statusFiring != status)
{
statusFiring = status;
// bodySprite->setCurrentFrame(0);
// headSprite->setCurrentFrame(0);
}
}
@@ -217,7 +235,7 @@ void Player::setAnimation()
{ // No esta disparando
bodySprite->setCurrentAnimation(aWalking + aBodyCoffees);
bodySprite->setFlip(flipWalk);
headSprite->setCurrentAnimation(aWalking + aHeadCoffees+ aPowerUp);
headSprite->setCurrentAnimation(aWalking + aHeadCoffees + aPowerUp);
headSprite->setFlip(flipWalk);
}
else
@@ -336,6 +354,18 @@ bool Player::isAlive()
void Player::setAlive(bool value)
{
alive = value;
if (!value)
{
deathSprite->setPos(headSprite->getRect());
deathSprite->setAccelY(0.2f);
deathSprite->setVelY(-6.6f);
deathSprite->setVelX(3.3f);
if (rand() % 2 == 0)
{
deathSprite->setVelX(-3.3f);
}
}
}
// Obtiene el valor de la variable
@@ -533,7 +563,8 @@ void Player::shiftColliders()
// Obtiene el puntero a la textura con los gráficos de la animación de morir
LTexture *Player::getDeadTexture()
{
return deathSprite->getTexture();;
return deathSprite->getTexture();
;
}
// Obtiene el valor de la variable
@@ -547,20 +578,20 @@ void Player::updatePowerUpHeadOffset()
{
if (!powerUp)
{
//powerUpHeadOffset = 0;
// powerUpHeadOffset = 0;
}
else
{
//powerUpHeadOffset = 96;
// powerUpHeadOffset = 96;
if (powerUpCounter < 300)
{
if (powerUpCounter % 10 > 4)
{
//powerUpHeadOffset = 96;
// powerUpHeadOffset = 96;
}
else
{
//powerUpHeadOffset = 0;
// powerUpHeadOffset = 0;
}
}
}