trabajando los items

This commit is contained in:
2022-10-03 11:45:09 +02:00
parent 9c35fadd55
commit 91b868572e
22 changed files with 266 additions and 194 deletions

View File

@@ -2086,7 +2086,7 @@ LTexture *Game::balloonTexture(int kind)
else if (kind == 3 || kind == 7)
{
return balloon4Texture;
return balloon3Texture;
}
else if (kind == 4 || kind == 8 || kind == 9)
@@ -2214,7 +2214,7 @@ void Game::checkPlayerItemCollision(Player *player)
default:
break;
}
item->erase();
item->disable();
}
}
}
@@ -2255,12 +2255,12 @@ void Game::checkBulletBalloonCollision()
{
if (droppeditem != ITEM_COFFEE_MACHINE)
{
createItem(mTextureItems, mRenderer, balloon->getPosX(), balloon->getPosY(), droppeditem);
createItem(balloon->getPosX(), balloon->getPosY(), droppeditem);
JA_PlaySound(mSoundItemDrop);
}
else
{
createItem(mTextureItems, mRenderer, players[index]->getPosX(), 0, droppeditem);
createItem(players.at(index)->getPosX(), 0, droppeditem);
mCoffeeMachineEnabled = true;
}
}
@@ -2327,7 +2327,7 @@ void Game::updateItems()
for (auto item : items)
{
item->update();
if (item->floorCollision())
if (item->isOnFloor())
{
JA_PlaySound(mSoundCollision);
mEffect.shake = true;
@@ -2413,12 +2413,28 @@ Uint8 Game::dropItem()
}
// Crea un objeto item
void Game::createItem(LTexture *texture, SDL_Renderer *renderer, Uint8 type, float x, float y)
void Game::createItem(Uint8 type, float x, float y)
{
Item *i = new Item(texture, renderer, type, x, y);
Item *i = new Item(mRenderer, mAsset, type, x, y);
items.push_back(i);
}
// Vacia el vector de items
void Game::freeItems()
{
if (items.empty() == false)
{
for (int i = items.size() - 1; i >= 0; --i)
{
if (items.at(i)->isEnabled() == false)
{
delete items.at(i);
items.erase(items.begin() + i);
}
}
}
}
// Crea un objeto SmartSprite para mostrar la puntuación al coger un objeto
void Game::createItemScoreSprite(int x, int y, SmartSprite *sprite)
{
@@ -2691,6 +2707,7 @@ void Game::updatePlayField()
// Vacia los vectores
freeBullets();
freeBalloons();
freeItems();
}
// Actualiza el fondo
@@ -2787,6 +2804,8 @@ void Game::renderPlayField()
}
renderFlashEffect();
mText->write(0, 0, std::to_string(balloons.size()));
}
// Gestiona el nivel de amenaza
@@ -2825,45 +2844,45 @@ void Game::checkGameInput()
const int index = 0;
if (mDemo.dataFile[mDemo.counter].left == 1)
{
players[index]->setInput(INPUT_LEFT);
players.at(index)->setInput(INPUT_LEFT);
}
if (mDemo.dataFile[mDemo.counter].right == 1)
{
players[index]->setInput(INPUT_RIGHT);
players.at(index)->setInput(INPUT_RIGHT);
}
if (mDemo.dataFile[mDemo.counter].noInput == 1)
{
players[index]->setInput(INPUT_NULL);
players.at(index)->setInput(INPUT_NULL);
}
if (mDemo.dataFile[mDemo.counter].fire == 1)
{
if (players[index]->canFire())
if (players.at(index)->canFire())
{
players[index]->setInput(INPUT_BUTTON_2);
createBullet(players[index]->getPosX() + (players[index]->getWidth() / 2) - 4, players[index]->getPosY() + (players[index]->getHeight() / 2), BULLET_UP, players[index]->isPowerUp(), index);
players[index]->setFireCooldown(10);
players.at(index)->setInput(INPUT_BUTTON_2);
createBullet(players.at(index)->getPosX() + (players.at(index)->getWidth() / 2) - 4, players.at(index)->getPosY() + (players.at(index)->getHeight() / 2), BULLET_UP, players.at(index)->isPowerUp(), index);
players.at(index)->setFireCooldown(10);
}
}
if (mDemo.dataFile[mDemo.counter].fireLeft == 1)
{
if (players[index]->canFire())
if (players.at(index)->canFire())
{
players[index]->setInput(INPUT_BUTTON_1);
createBullet(players[index]->getPosX() + (players[index]->getWidth() / 2) - 4, players[index]->getPosY() + (players[index]->getHeight() / 2), BULLET_UP, players[index]->isPowerUp(), index);
players[index]->setFireCooldown(10);
players.at(index)->setInput(INPUT_BUTTON_1);
createBullet(players.at(index)->getPosX() + (players.at(index)->getWidth() / 2) - 4, players.at(index)->getPosY() + (players.at(index)->getHeight() / 2), BULLET_UP, players.at(index)->isPowerUp(), index);
players.at(index)->setFireCooldown(10);
}
}
if (mDemo.dataFile[mDemo.counter].fireRight == 1)
{
if (players[index]->canFire())
if (players.at(index)->canFire())
{
players[index]->setInput(INPUT_BUTTON_3);
createBullet(players[index]->getPosX() + (players[index]->getWidth() / 2) - 4, players[index]->getPosY() + (players[index]->getHeight() / 2), BULLET_UP, players[index]->isPowerUp(), index);
players[index]->setFireCooldown(10);
players.at(index)->setInput(INPUT_BUTTON_3);
createBullet(players.at(index)->getPosX() + (players.at(index)->getWidth() / 2) - 4, players.at(index)->getPosY() + (players.at(index)->getHeight() / 2), BULLET_UP, players.at(index)->isPowerUp(), index);
players.at(index)->setFireCooldown(10);
}
}