From 77eb83c2c38a88d8a4428c4aa03793a5c0f68449 Mon Sep 17 00:00:00 2001 From: Kuba Date: Mon, 9 Dec 2024 23:36:50 +0100 Subject: [PATCH] enemy kolizja rakiet --- headers/Rocket.h | 1 + sources/Plansza.cpp | 21 +++++++++++++++++++++ sources/Rocket.cpp | 3 ++- 3 files changed, 24 insertions(+), 1 deletion(-) diff --git a/headers/Rocket.h b/headers/Rocket.h index 37503f7..1707559 100644 --- a/headers/Rocket.h +++ b/headers/Rocket.h @@ -7,6 +7,7 @@ class Rocket : public Projectile{ public: Rocket(float x, float y, sf::Texture &texture) : Projectile(x,y, texture) {}; void update() override; + }; diff --git a/sources/Plansza.cpp b/sources/Plansza.cpp index 2a9d147..18dd01b 100644 --- a/sources/Plansza.cpp +++ b/sources/Plansza.cpp @@ -262,6 +262,26 @@ void Plansza::update() { ++enemyIt; } } + //oblsuga dla rakiety + for (auto enemyIt = enemies.begin(); enemyIt != enemies.end();) { + bool hit = false; + for (auto rocketIt = ship.getRockets().begin(); rocketIt != ship.getRockets().end();) { + if (enemyIt->getSprite().getGlobalBounds().intersects(rocketIt->getSprite().getGlobalBounds())) { + rocketIt = ship.getRockets().erase(rocketIt); + enemyIt->takeDamage(); + hit = true; + break; + } else { + ++rocketIt; + } + } + if (hit && !enemyIt->isAlive()) { + enemyIt = enemies.erase(enemyIt); + } else { + ++enemyIt; + } + } + } // Meteor-related niżej @@ -293,6 +313,7 @@ void Plansza::spawn_enemy() { int spawnX = RandomNumberGenerator::getRandomNumber(50, size.width - 50); enemies.emplace_back(spawnX, -50, "../assets/img/enemy/enemy.png"); enemySpawnClock.restart(); + } } diff --git a/sources/Rocket.cpp b/sources/Rocket.cpp index a5ae223..39af7af 100644 --- a/sources/Rocket.cpp +++ b/sources/Rocket.cpp @@ -6,4 +6,5 @@ void Rocket::update() { if(position.y < -100) { outOfBounds = true; } -} \ No newline at end of file +} +