Renombradas las variables de bullet.cpp

This commit is contained in:
2022-10-04 18:11:42 +02:00
parent 33b7c6082e
commit adad58ccfa
5 changed files with 69 additions and 66 deletions

View File

@@ -328,7 +328,7 @@ void Balloon::render()
{
mSprite->render();
if (mKind == POWER_BALL)
if (mKind == POWER_BALL and !mPopping)
{
Sprite *sp = new Sprite(mSprite->getRect(), mSprite->getTexture(), mSprite->getRenderer());
sp->setSpriteClip(370, 148, 37, 37);

View File

@@ -4,70 +4,70 @@
// Constructor
Bullet::Bullet(int x, int y, int kind, bool poweredUp, int owner, LTexture *texture, SDL_Renderer *renderer)
{
mSprite = new Sprite({x, y, 10, 10}, texture, renderer);
sprite = new Sprite({x, y, 10, 10}, texture, renderer);
// Posición inicial del objeto
mPosX = x;
mPosY = y;
posX = x;
posY = y;
// Alto y ancho del objeto
mWidth = 10;
mHeight = 10;
width = 10;
height = 10;
// Velocidad inicial en el eje Y
mVelY = -3;
velY = -3;
// Tipo de bala
mKind = kind;
this->kind = kind;
// Identificador del dueño del objeto
mOwner = owner;
this->owner = owner;
// Valores especificos según el tipo
switch (kind)
{
case BULLET_UP:
// Establece la velocidad inicial
mVelX = 0;
velX = 0;
// Rectangulo con los gráficos del objeto
if (!poweredUp)
{
mSprite->setSpriteClip(0 * mWidth, 0, mSprite->getWidth(), mSprite->getHeight());
sprite->setSpriteClip(0 * width, 0, sprite->getWidth(), sprite->getHeight());
}
else
{
mSprite->setSpriteClip((0 + 3) * mWidth, 0, mSprite->getWidth(), mSprite->getHeight());
sprite->setSpriteClip((0 + 3) * width, 0, sprite->getWidth(), sprite->getHeight());
}
break;
case BULLET_LEFT:
// Establece la velocidad inicial
mVelX = -2;
velX = -2;
// Rectangulo con los gráficos del objeto
if (!poweredUp)
{
mSprite->setSpriteClip(1 * mWidth, 0, mSprite->getWidth(), mSprite->getHeight());
sprite->setSpriteClip(1 * width, 0, sprite->getWidth(), sprite->getHeight());
}
else
{
mSprite->setSpriteClip((1 + 3) * mWidth, 0, mSprite->getWidth(), mSprite->getHeight());
sprite->setSpriteClip((1 + 3) * width, 0, sprite->getWidth(), sprite->getHeight());
}
break;
case BULLET_RIGHT:
// Establece la velocidad inicial
mVelX = 2;
velX = 2;
// Rectangulo con los gráficos del objeto
if (!poweredUp)
{
mSprite->setSpriteClip(2 * mWidth, 0, mSprite->getWidth(), mSprite->getHeight());
sprite->setSpriteClip(2 * width, 0, sprite->getWidth(), sprite->getHeight());
}
else
{
mSprite->setSpriteClip((2 + 3) * mWidth, 0, mSprite->getWidth(), mSprite->getHeight());
sprite->setSpriteClip((2 + 3) * width, 0, sprite->getWidth(), sprite->getHeight());
}
break;
@@ -76,7 +76,7 @@ Bullet::Bullet(int x, int y, int kind, bool poweredUp, int owner, LTexture *text
}
// Establece el tamaño del circulo de colisión
mCollider.r = mWidth / 2;
collider.r = width / 2;
// Alinea el circulo de colisión con el objeto
shiftColliders();
@@ -85,13 +85,13 @@ Bullet::Bullet(int x, int y, int kind, bool poweredUp, int owner, LTexture *text
// Destructor
Bullet::~Bullet()
{
delete mSprite;
delete sprite;
}
// Pinta el objeto en pantalla
void Bullet::render()
{
mSprite->render();
sprite->render();
}
// Actualiza la posición y estado del objeto en horizontal
@@ -101,34 +101,34 @@ Uint8 Bullet::move()
Uint8 msg = BULLET_MOVE_OK;
// Mueve el objeto a su nueva posición
mPosX += mVelX;
posX += velX;
// Si el objeto se sale del area de juego por los laterales
if ((mPosX < PLAY_AREA_LEFT) || (mPosX + mWidth > PLAY_AREA_RIGHT))
if ((posX < PLAY_AREA_LEFT) || (posX + width > PLAY_AREA_RIGHT))
{
// Se deshabilita
mKind = NO_KIND;
kind = NO_KIND;
// Mensaje de salida
msg = BULLET_MOVE_OUT;
}
// Mueve el objeto a su nueva posición en vertical
mPosY += int(mVelY);
posY += int(velY);
// Si el objeto se sale del area de juego por la parte superior o inferior
if ((mPosY < PLAY_AREA_TOP) || (mPosY + mHeight > PLAY_AREA_BOTTOM))
if ((posY < PLAY_AREA_TOP) || (posY + height > PLAY_AREA_BOTTOM))
{
// Se deshabilita
mKind = NO_KIND;
kind = NO_KIND;
// Mensaje de salida
msg = BULLET_MOVE_OUT;
}
// Actualiza la posición del sprite
mSprite->setPosX(mPosX);
mSprite->setPosY(mPosY);
sprite->setPosX(posX);
sprite->setPosY(posY);
// Alinea el circulo de colisión con el objeto
shiftColliders();
@@ -136,10 +136,10 @@ Uint8 Bullet::move()
return msg;
}
// Comprueba si el objeto está activo
bool Bullet::isActive()
// Comprueba si el objeto está habilitado
bool Bullet::isEnabled()
{
if (mKind == NO_KIND)
if (kind == NO_KIND)
{
return false;
}
@@ -149,63 +149,63 @@ bool Bullet::isActive()
}
}
// Desactiva el objeto
void Bullet::deactivate()
// Deshabilita el objeto
void Bullet::disable()
{
mKind = NO_KIND;
kind = NO_KIND;
}
// Obtiene el valor de la variable
int Bullet::getPosX()
{
return mPosX;
return posX;
}
// Obtiene el valor de la variable
int Bullet::getPosY()
{
return mPosY;
return posY;
}
// Establece el valor de la variable
void Bullet::setPosX(int x)
{
mPosX = x;
posX = x;
}
// Establece el valor de la variable
void Bullet::setPosY(int y)
{
mPosY = y;
posY = y;
}
// Obtiene el valor de la variable
int Bullet::getVelY()
{
return mVelY;
return velY;
}
// Obtiene el valor de la variable
int Bullet::getKind()
{
return mKind;
return kind;
}
// Obtiene el valor de la variable
int Bullet::getOwner()
{
return mOwner;
return owner;
}
// Obtiene el circulo de colisión
circle_t &Bullet::getCollider()
{
return mCollider;
return collider;
}
// Alinea el circulo de colisión con el objeto
void Bullet::shiftColliders()
{
mCollider.x = mPosX + mCollider.r;
mCollider.y = mPosY + mCollider.r;
collider.x = posX + collider.r;
collider.y = posY + collider.r;
}

View File

@@ -20,16 +20,19 @@
class Bullet
{
private:
int mPosX; // Posición en el eje X
int mPosY; // Posición en el eje Y
Uint8 mWidth; // Ancho del objeto
Uint8 mHeight; // Alto del objeto
int mVelX; // Velocidad en el eje X
int mVelY; // Velocidad en el eje Y
int mKind; // Tipo de objeto
int mOwner; // Identificador del dueño del objeto
Sprite *mSprite; // Sprite con los graficos y métodos de pintado
circle_t mCollider; // Circulo de colisión del objeto
// Objetos
Sprite *sprite; // Sprite con los graficos y métodos de pintado
// Variables
int posX; // Posición en el eje X
int posY; // Posición en el eje Y
Uint8 width; // Ancho del objeto
Uint8 height; // Alto del objeto
int velX; // Velocidad en el eje X
int velY; // Velocidad en el eje Y
int kind; // Tipo de objeto
int owner; // Identificador del dueño del objeto
circle_t collider; // Circulo de colisión del objeto
// Alinea el circulo de colisión con el objeto
void shiftColliders();
@@ -47,11 +50,11 @@ public:
// Actualiza la posición y estado del objeto
Uint8 move();
// Comprueba si el objeto está activo
bool isActive();
// Comprueba si el objeto está habilitado
bool isEnabled();
// Desactiva el objeto
void deactivate();
// Deshabilita el objeto
void disable();
// Obtiene el valor de la variable
int getPosX();

View File

@@ -2187,7 +2187,7 @@ void Game::checkBulletBalloonCollision()
{
for (auto balloon : balloons)
{
if (balloon->isEnabled() && (!balloon->isInvulnerable()) && bullet->isActive())
if (balloon->isEnabled() && (!balloon->isInvulnerable()) && bullet->isEnabled())
{
if (checkCollision(balloon->getCollider(), bullet->getCollider()))
{
@@ -2206,8 +2206,8 @@ void Game::checkBulletBalloonCollision()
JA_PlaySound(mSoundBalloon);
}
// Desactiva la bala
bullet->deactivate();
// Deshabilita la bala
bullet->disable();
// Suelta el item en caso de que salga uno
const Uint8 droppeditem = dropItem();
@@ -2237,7 +2237,7 @@ void Game::moveBullets()
{
for (auto bullet : bullets)
{
if (bullet->isActive())
if (bullet->isEnabled())
{
if (bullet->move() == BULLET_MOVE_OUT)
{
@@ -2252,7 +2252,7 @@ void Game::renderBullets()
{
for (auto bullet : bullets)
{
if (bullet->isActive())
if (bullet->isEnabled())
{
bullet->render();
}
@@ -2273,7 +2273,7 @@ void Game::freeBullets()
{
for (int i = bullets.size() - 1; i >= 0; --i)
{
if (bullets.at(i)->isActive() == false)
if (bullets.at(i)->isEnabled() == false)
{
delete bullets.at(i);
bullets.erase(bullets.begin() + i);