diff --git a/headers/Plansza.h b/headers/Plansza.h index 1952ba3..aeb0739 100644 --- a/headers/Plansza.h +++ b/headers/Plansza.h @@ -128,6 +128,16 @@ private: // Zmienne prymitywne bool gameOver = false; + struct { + bool movingSpeed = false; + bool firerate = false; + bool tripleShot = false; + } powerUpCollected; + struct { + bool movingSpeed = false; + bool firerate = false; + bool bulletSpeed = false; + } debuffCollected; }; #endif //PLANSZA_H diff --git a/sources/Plansza.cpp b/sources/Plansza.cpp index e6d151b..2ff27ef 100644 --- a/sources/Plansza.cpp +++ b/sources/Plansza.cpp @@ -118,7 +118,7 @@ void Plansza::update() { // Sprawnowanie wszystkich rodzajów wrogów // spawn_meteor(); // spawn_hearts(); - // spawn_power_up(); + spawn_power_up(); spawn_debuff(); // spawn_enemy(); // spawn_advanced_enemy(); @@ -173,22 +173,28 @@ void Plansza::update() { // TODO: Dodać flagę aby warunek był sprawdzany nie tylko pod kątem Timeru ale również pod kątem ustawionej flagi - // if (movingSpeedPUTimer.getElapsedTime().asSeconds() >= 5.0f) { - // ship->setMovingSpeed(8.0f); - // } - // if (fireratePUTimer.getElapsedTime().asSeconds() >= 10.0f ) { - // ship->setFirerate(200); - // } - // if (tripleShotPUTimer.getElapsedTime().asSeconds() >= 5.0f) { - // ship->setTripleShot(false); - // } - if (movingSpeedDebuffTimer.getElapsedTime().asSeconds() >= 5.0f) { + if (movingSpeedPUTimer.getElapsedTime().asSeconds() >= 5.0f && powerUpCollected.movingSpeed) { + powerUpCollected.movingSpeed = false; ship->setMovingSpeed(8.0f); } - if (firerateDebuffTimer.getElapsedTime().asSeconds() >= 5.0f) { + if (fireratePUTimer.getElapsedTime().asSeconds() >= 10.0f && powerUpCollected.firerate) { + powerUpCollected.firerate = false; ship->setFirerate(200); } - if (bulletSpeedDebuffTimer.getElapsedTime().asSeconds() >= 5.0f) { + if (tripleShotPUTimer.getElapsedTime().asSeconds() >= 5.0f && powerUpCollected.tripleShot) { + powerUpCollected.tripleShot = false; + ship->setTripleShot(false); + } + if (movingSpeedDebuffTimer.getElapsedTime().asSeconds() >= 5.0f && debuffCollected.movingSpeed) { + debuffCollected.movingSpeed = false; + ship->setMovingSpeed(8.0f); + } + if (firerateDebuffTimer.getElapsedTime().asSeconds() >= 5.0f && debuffCollected.firerate) { + debuffCollected.firerate = false; + ship->setFirerate(200); + } + if (bulletSpeedDebuffTimer.getElapsedTime().asSeconds() >= 5.0f && debuffCollected.bulletSpeed) { + debuffCollected.bulletSpeed = false; ship->setBulletSpeed(10.0f); } @@ -907,14 +913,17 @@ void Plansza::check_PowerUp_collisions() { if (ship->getSprite().getGlobalBounds().intersects(powerUpIt->getSprite().getGlobalBounds())) { if (powerUpIt->getType() == PowerUp::movingSpeedUp) { ship->setMovingSpeed(15.0f); + powerUpCollected.movingSpeed = true; movingSpeedPUTimer.restart(); } if (powerUpIt->getType() == PowerUp::firerateUp) { ship->setFirerate(100); + powerUpCollected.firerate = true; fireratePUTimer.restart(); } if (powerUpIt->getType() == PowerUp::tripleShotUp) { ship->setTripleShot(true); + powerUpCollected.tripleShot = true; tripleShotPUTimer.restart(); } powerUpIt = powerUps.erase(powerUpIt); @@ -928,15 +937,18 @@ void Plansza::check_Debuff_collisions() { for (auto debuffIt = debuffs.begin(); debuffIt != debuffs.end();) { if (ship->getSprite().getGlobalBounds().intersects(debuffIt->getSprite().getGlobalBounds())) { if (debuffIt->getType() == Debuff::movingSpeedDbf) { - ship->setMovingSpeed(20.0f); + ship->setMovingSpeed(4.0f); + debuffCollected.movingSpeed = true; movingSpeedDebuffTimer.restart(); } if (debuffIt->getType() == Debuff::firerateDbf) { ship->setFirerate(500); + debuffCollected.firerate = true; firerateDebuffTimer.restart(); } if (debuffIt->getType() == Debuff::bulletSpeedDbf) { ship->setBulletSpeed(5.0f); + debuffCollected.bulletSpeed = true; bulletSpeedDebuffTimer.restart(); } debuffIt = debuffs.erase(debuffIt);