Quitadas todas las variables globales y transformadas en punteros

This commit is contained in:
2022-10-20 18:24:12 +02:00
parent 596bf2c4a5
commit b4e76a4c7d
25 changed files with 848 additions and 781 deletions

View File

@@ -1,63 +1,79 @@
#include "bullet.h"
//Constructor
Bullet::Bullet()
// Constructor
Bullet::Bullet(SDL_Renderer *gRenderer)
{
this->gRenderer = gRenderer;
gBulletTexture = new LTexture(gRenderer);
// Carga los gráficos de las balas
if (!gBulletTexture->loadFromFile("media/gfx/bullet.png"))
{
printf("Failed to load bullet texture!\n");
}
init(0, 0, NO_KIND);
}
//Iniciador
// Destructor
Bullet::~Bullet()
{
gBulletTexture->free();
}
// Iniciador
void Bullet::init(int x, int y, int kind)
{
//Posición inicial del objeto
// Posición inicial del objeto
mPosX = x;
mPosY = y;
//Alto y ancho del objeto
// Alto y ancho del objeto
mWidth = 8;
mHeight = mWidth;
//Velocidad inicial en el eje Y
// Velocidad inicial en el eje Y
mVelY = -3;
//Tipo de bala
// Tipo de bala
mKind = kind;
//Textura con los gráficos del objeto
mSprite.setTexture(gBulletTexture);
// Textura con los gráficos del objeto
mSprite.setTexture(*gBulletTexture);
//Alto y ancho del sprite
// Alto y ancho del sprite
mSprite.setWidth(mWidth);
mSprite.setHeight(mHeight);
//Posición inicial del sprite
// Posición inicial del sprite
mSprite.setPosX(mPosX);
mSprite.setPosY(mPosY);
//Valores especificos según el tipo
// Valores especificos según el tipo
switch (kind)
{
case BULLET_UP:
//Establece la velocidad inicial
// Establece la velocidad inicial
mVelX = 0;
//Rectangulo con los gráficos del objeto
// Rectangulo con los gráficos del objeto
mSprite.setSpriteClip(0 * mWidth, 0, mSprite.getWidth(), mSprite.getHeight());
break;
case BULLET_LEFT:
//Establece la velocidad inicial
// Establece la velocidad inicial
mVelX = -2;
//Rectangulo con los gráficos del objeto
// Rectangulo con los gráficos del objeto
mSprite.setSpriteClip(1 * mWidth, 0, mSprite.getWidth(), mSprite.getHeight());
break;
case BULLET_RIGHT:
//Establece la velocidad inicial
// Establece la velocidad inicial
mVelX = 2;
//Rectangulo con los gráficos del objeto
// Rectangulo con los gráficos del objeto
mSprite.setSpriteClip(2 * mWidth, 0, mSprite.getWidth(), mSprite.getHeight());
break;
@@ -65,69 +81,69 @@ void Bullet::init(int x, int y, int kind)
break;
}
//Establece el tamaño del circulo de colisión
// Establece el tamaño del circulo de colisión
mCollider.r = mWidth / 2;
//Alinea el circulo de colisión con el objeto
// Alinea el circulo de colisión con el objeto
shiftColliders();
}
//Pinta el objeto en pantalla
// Pinta el objeto en pantalla
void Bullet::render()
{
mSprite.render();
}
//Actualiza la posición y estado del objeto en horizontal
// Actualiza la posición y estado del objeto en horizontal
void Bullet::move()
{
//Mueve el objeto a su nueva posición
// Mueve el objeto a su nueva posición
mPosX += mVelX;
//Si el objeto se sale del area de juego por los laterales
// Si el objeto se sale del area de juego por los laterales
if ((mPosX < PLAY_AREA_LEFT) || (mPosX + mWidth > PLAY_AREA_RIGHT))
{
//Se deshabilita
// Se deshabilita
mKind = NO_KIND;
}
//Mueve el objeto a su nueva posición en vertical
// Mueve el objeto a su nueva posición en vertical
mPosY += int(mVelY);
//Si el objeto se sale del area de juego por la parte superior o inferior
// 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))
{
//Se deshabilita
// Se deshabilita
mKind = NO_KIND;
}
//Actualiza la posición del sprite
// Actualiza la posición del sprite
mSprite.setPosX(mPosX);
mSprite.setPosY(mPosY);
//Alinea el circulo de colisión con el objeto
// Alinea el circulo de colisión con el objeto
shiftColliders();
}
#ifdef TEST
void Bullet::testMove()
{
//Update sprite position
// Update sprite position
mSprite.setPosX(mPosX);
mSprite.setPosY(mPosY);
//Update circle colliders
// Update circle colliders
shiftColliders();
}
#endif
//Deshabilita el objeto
// Deshabilita el objeto
void Bullet::erase()
{
mKind = NO_KIND;
}
//Comprueba si el objeto está activo
// Comprueba si el objeto está activo
bool Bullet::isActive()
{
if (mKind == NO_KIND)
@@ -140,49 +156,49 @@ bool Bullet::isActive()
}
}
//Obtiene el valor de la variable
// Obtiene el valor de la variable
int Bullet::getPosX()
{
return mPosX;
}
//Obtiene el valor de la variable
// Obtiene el valor de la variable
int Bullet::getPosY()
{
return mPosY;
}
//Establece el valor de la variable
// Establece el valor de la variable
void Bullet::setPosX(int x)
{
mPosX = x;
}
//Establece el valor de la variable
// Establece el valor de la variable
void Bullet::setPosY(int y)
{
mPosY = y;
}
//Obtiene el valor de la variable
// Obtiene el valor de la variable
float Bullet::getVelY()
{
return mVelY;
}
//Obtiene el valor de la variable
// Obtiene el valor de la variable
int Bullet::getKind()
{
return mKind;
}
//Obtiene el circulo de colisión
// Obtiene el circulo de colisión
Circle &Bullet::getCollider()
{
return mCollider;
}
//Alinea el circulo de colisión con el objeto
// Alinea el circulo de colisión con el objeto
void Bullet::shiftColliders()
{
mCollider.x = mPosX + mCollider.r;