diff --git a/sources/Boss.cpp b/sources/Boss.cpp index 0096110..cf9982b 100644 --- a/sources/Boss.cpp +++ b/sources/Boss.cpp @@ -43,7 +43,7 @@ void Boss::dropBomb() { if (bombClock.getElapsedTime().asMilliseconds() >= 5000) { Bullet Bomb(position.x, position.y, BombaTexture); Bomb.setSpeed(0.5f); - bullets.emplace_back(std::move(Bomb)); // Można zmienić na bombę + bombs.emplace_back(std::move(Bomb)); // Można zmienić na bombę std::cout << "Bombka lezy" << std::endl; bombClock.restart(); } diff --git a/sources/Plansza.cpp b/sources/Plansza.cpp index 794d2a0..a42831a 100644 --- a/sources/Plansza.cpp +++ b/sources/Plansza.cpp @@ -393,9 +393,9 @@ void Plansza::update() { } // Kolizja bossa z graczem - if (ship->getSprite().getGlobalBounds().intersects(boss->getSprite().getGlobalBounds())) { - ship->takeDamage(); - } + // if (ship->getSprite().getGlobalBounds().intersects(boss->getSprite().getGlobalBounds())) { + // ship->takeDamage(); + // } } else if (bossSpawned && (!boss || !boss->isAlive())) { std::cout << "Boss defeated!" << std::endl; delete boss; @@ -431,6 +431,59 @@ void Plansza::update() { } } + // Sprawdzenie kolizji pocisków gracza z bombami Bossa + for (auto bombIt = boss->getBombs().begin(); bombIt != boss->getBombs().end();) { + bool bombHit = false; + for (auto bulletIt = ship->getBullets().begin(); bulletIt != ship->getBullets().end();) { + if (bombIt->getSprite().getGlobalBounds().intersects(bulletIt->getSprite().getGlobalBounds())) { + ship->getBullets().erase(bulletIt); + bombIt = boss->getBombs().erase(bombIt); + bombHit = true; + break; + } else { + ++bulletIt; + } + } + if (!bombHit) { + ++bombIt; + } + } + + // Sprawdzenie kolizji rakiet gracza z bombami Bossa + for (auto bombIt = boss->getBombs().begin(); bombIt != boss->getBombs().end();) { + bool bombHit = false; + for (auto rocketIt = ship->getBullets().begin(); rocketIt != ship->getBullets().end();) { + if (bombIt->getSprite().getGlobalBounds().intersects(rocketIt->getSprite().getGlobalBounds())) { + ship->getBullets().erase(rocketIt); + bombIt = boss->getBombs().erase(bombIt); + bombHit = true; + break; + } else { + ++rocketIt; + } + } + if (!bombHit) { + ++bombIt; + } + } + + // Sprawdzenie kolizji rakiet gracza z bombami Bossa + for (auto bombIt = boss->getBombs().begin(); bombIt != boss->getBombs().end();) { + bool bombHit = false; + for (auto rocketIt = ship->getRockets().begin(); rocketIt != ship->getRockets().end();) { + if (bombIt->getSprite().getGlobalBounds().intersects(rocketIt->getSprite().getGlobalBounds())) { + ship->getRockets().erase(rocketIt); + bombIt = boss->getBombs().erase(bombIt); + bombHit = true; + break; + } else { + ++rocketIt; + } + } + if (!bombHit) { + ++bombIt; + } + } }