added power up on the player

This commit is contained in:
2021-08-21 20:39:48 +02:00
parent 182631b2b7
commit 837306f16e
11 changed files with 203 additions and 27 deletions

View File

@@ -31,6 +31,7 @@ Game::Game(SDL_Renderer *renderer, std::string *filelist, std::string *textStrin
mTextureGameBG = new LTexture();
mTextureGameText = new LTexture();
mTextureItems = new LTexture();
mTexturePlayerHead = new LTexture();
mTexturePlayerBody = new LTexture();
mTexturePlayerDeath = new LTexture();
mTexturePlayerLegs = new LTexture();
@@ -123,6 +124,10 @@ Game::~Game()
delete mTextureItems;
mTextureItems = nullptr;
mTexturePlayerHead->unload();
delete mTexturePlayerHead;
mTexturePlayerHead = nullptr;
mTexturePlayerBody->unload();
delete mTexturePlayerBody;
mTexturePlayerBody = nullptr;
@@ -352,7 +357,7 @@ void Game::init()
mSpritePowerMeter->setSpriteClip(256, 192 - 8, 40, 8);
// Objeto jugador
mPlayer->init(PLAY_AREA_CENTER_X - 11, PLAY_AREA_BOTTOM - 24, mTexturePlayerLegs, mTexturePlayerBody, mRenderer);
mPlayer->init(PLAY_AREA_CENTER_X - 11, PLAY_AREA_BOTTOM - 24, mTexturePlayerLegs, mTexturePlayerBody, mTexturePlayerHead, mRenderer);
// Establece a cero todos los valores del vector de objetos globo
resetBalloons();
@@ -439,6 +444,7 @@ bool Game::loadMedia()
success &= loadTextureFromFile(mTextureText, mFileList[30], mRenderer);
success &= loadTextureFromFile(mTextureText2, mFileList[29], mRenderer);
success &= loadTextureFromFile(mTexturePlayerLegs, mFileList[39], mRenderer);
success &= loadTextureFromFile(mTexturePlayerHead, mFileList[41], mRenderer);
success &= loadTextureFromFile(mTexturePlayerBody, mFileList[37], mRenderer);
success &= loadTextureFromFile(mTexturePlayerDeath, mFileList[38], mRenderer);
success &= loadTextureFromFile(mTextureBalloon, mFileList[24], mRenderer);
@@ -2085,9 +2091,9 @@ void Game::resetBullets()
}
// Crea un objeto bala
void Game::createBullet(int x, int y, Uint8 kind)
void Game::createBullet(int x, int y, Uint8 kind, bool poweredUp)
{
mBullet[getBulletFreeIndex()]->init(x, y, kind, mTextureBullet, mRenderer);
mBullet[getBulletFreeIndex()]->init(x, y, kind, poweredUp, mTextureBullet, mRenderer);
}
// Actualiza los items
@@ -2582,7 +2588,7 @@ void Game::checkGameInput()
if (mPlayer->canFire())
{
mPlayer->setInput(INPUT_FIRE_UP);
createBullet(mPlayer->getPosX() + (mPlayer->getWidth() / 2) - 4, mPlayer->getPosY() + (mPlayer->getHeight() / 2), BULLET_UP);
createBullet(mPlayer->getPosX() + (mPlayer->getWidth() / 2) - 4, mPlayer->getPosY() + (mPlayer->getHeight() / 2), BULLET_UP, mPlayer->isPowerUp());
mPlayer->setFireCooldown(10);
}
@@ -2590,7 +2596,7 @@ void Game::checkGameInput()
if (mPlayer->canFire())
{
mPlayer->setInput(INPUT_FIRE_LEFT);
createBullet(mPlayer->getPosX() + (mPlayer->getWidth() / 2) - 4, mPlayer->getPosY() + (mPlayer->getHeight() / 2), BULLET_UP);
createBullet(mPlayer->getPosX() + (mPlayer->getWidth() / 2) - 4, mPlayer->getPosY() + (mPlayer->getHeight() / 2), BULLET_UP, mPlayer->isPowerUp());
mPlayer->setFireCooldown(10);
}
@@ -2598,7 +2604,7 @@ void Game::checkGameInput()
if (mPlayer->canFire())
{
mPlayer->setInput(INPUT_FIRE_RIGHT);
createBullet(mPlayer->getPosX() + (mPlayer->getWidth() / 2) - 4, mPlayer->getPosY() + (mPlayer->getHeight() / 2), BULLET_UP);
createBullet(mPlayer->getPosX() + (mPlayer->getWidth() / 2) - 4, mPlayer->getPosY() + (mPlayer->getHeight() / 2), BULLET_UP, mPlayer->isPowerUp());
mPlayer->setFireCooldown(10);
}
@@ -2642,7 +2648,7 @@ void Game::checkGameInput()
if (mPlayer->canFire())
{
mPlayer->setInput(INPUT_FIRE_UP);
createBullet(mPlayer->getPosX() + (mPlayer->getWidth() / 2) - 4, mPlayer->getPosY() + (mPlayer->getHeight() / 2), BULLET_UP);
createBullet(mPlayer->getPosX() + (mPlayer->getWidth() / 2) - 4, mPlayer->getPosY() + (mPlayer->getHeight() / 2), BULLET_UP, mPlayer->isPowerUp());
mPlayer->setFireCooldown(10);
// Reproduce el sonido de disparo
@@ -2652,13 +2658,13 @@ void Game::checkGameInput()
}
}
// Comprueba el input de desiparar a la izquierda
// Comprueba el input de disparar a la izquierda
if (mInput->checkInput(INPUT_BUTTON_1, REPEAT_TRUE))
{
if (mPlayer->canFire())
{
mPlayer->setInput(INPUT_FIRE_LEFT);
createBullet(mPlayer->getPosX() + (mPlayer->getWidth() / 2) - 4, mPlayer->getPosY() + (mPlayer->getHeight() / 2), BULLET_LEFT);
createBullet(mPlayer->getPosX() + (mPlayer->getWidth() / 2) - 4, mPlayer->getPosY() + (mPlayer->getHeight() / 2), BULLET_LEFT, mPlayer->isPowerUp());
mPlayer->setFireCooldown(10);
// Reproduce el sonido de disparo
@@ -2674,7 +2680,7 @@ void Game::checkGameInput()
if (mPlayer->canFire())
{
mPlayer->setInput(INPUT_FIRE_RIGHT);
createBullet(mPlayer->getPosX() + (mPlayer->getWidth() / 2) - 4, mPlayer->getPosY() + (mPlayer->getHeight() / 2), BULLET_RIGHT);
createBullet(mPlayer->getPosX() + (mPlayer->getWidth() / 2) - 4, mPlayer->getPosY() + (mPlayer->getHeight() / 2), BULLET_RIGHT, mPlayer->isPowerUp());
mPlayer->setFireCooldown(10);
// Reproduce el sonido de disparo