diff --git a/source/balloon.cpp b/source/balloon.cpp index 6bdb26e..b25659c 100644 --- a/source/balloon.cpp +++ b/source/balloon.cpp @@ -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); diff --git a/source/bullet.cpp b/source/bullet.cpp index 6362fe6..3937a0a 100644 --- a/source/bullet.cpp +++ b/source/bullet.cpp @@ -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; } diff --git a/source/bullet.h b/source/bullet.h index 421978d..e9508ff 100644 --- a/source/bullet.h +++ b/source/bullet.h @@ -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(); diff --git a/source/game.cpp b/source/game.cpp index 515d4ca..ed53921 100644 --- a/source/game.cpp +++ b/source/game.cpp @@ -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); diff --git a/todo.txt b/todo.txt index 644e5d6..f59af29 100644 --- a/todo.txt +++ b/todo.txt @@ -2,7 +2,7 @@ los items se quedan pegados en el techo la maquina de cafe no toca el suelo las bolas verdes nacen naranja al explotarlas falta el aura de superguerrero al pillar la maquina de cafe -la powerball deja la mascara al explotarlas +x la powerball deja la mascara al explotarlas los menus de pausa y game over falta poner bien los textos cuando continuas la partida sigues muerto poder elegir el personaje para jugar