Debuffs fully implemented

This commit is contained in:
2025-01-13 23:24:43 +01:00
parent 67f396ae84
commit 7a808d46a6
2 changed files with 36 additions and 14 deletions

View File

@@ -128,6 +128,16 @@ private:
// Zmienne prymitywne // Zmienne prymitywne
bool gameOver = false; 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 #endif //PLANSZA_H

View File

@@ -118,7 +118,7 @@ void Plansza::update() {
// Sprawnowanie wszystkich rodzajów wrogów // Sprawnowanie wszystkich rodzajów wrogów
// spawn_meteor(); // spawn_meteor();
// spawn_hearts(); // spawn_hearts();
// spawn_power_up(); spawn_power_up();
spawn_debuff(); spawn_debuff();
// spawn_enemy(); // spawn_enemy();
// spawn_advanced_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 // 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) { if (movingSpeedPUTimer.getElapsedTime().asSeconds() >= 5.0f && powerUpCollected.movingSpeed) {
// ship->setMovingSpeed(8.0f); powerUpCollected.movingSpeed = false;
// }
// if (fireratePUTimer.getElapsedTime().asSeconds() >= 10.0f ) {
// ship->setFirerate(200);
// }
// if (tripleShotPUTimer.getElapsedTime().asSeconds() >= 5.0f) {
// ship->setTripleShot(false);
// }
if (movingSpeedDebuffTimer.getElapsedTime().asSeconds() >= 5.0f) {
ship->setMovingSpeed(8.0f); ship->setMovingSpeed(8.0f);
} }
if (firerateDebuffTimer.getElapsedTime().asSeconds() >= 5.0f) { if (fireratePUTimer.getElapsedTime().asSeconds() >= 10.0f && powerUpCollected.firerate) {
powerUpCollected.firerate = false;
ship->setFirerate(200); 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); ship->setBulletSpeed(10.0f);
} }
@@ -907,14 +913,17 @@ void Plansza::check_PowerUp_collisions() {
if (ship->getSprite().getGlobalBounds().intersects(powerUpIt->getSprite().getGlobalBounds())) { if (ship->getSprite().getGlobalBounds().intersects(powerUpIt->getSprite().getGlobalBounds())) {
if (powerUpIt->getType() == PowerUp::movingSpeedUp) { if (powerUpIt->getType() == PowerUp::movingSpeedUp) {
ship->setMovingSpeed(15.0f); ship->setMovingSpeed(15.0f);
powerUpCollected.movingSpeed = true;
movingSpeedPUTimer.restart(); movingSpeedPUTimer.restart();
} }
if (powerUpIt->getType() == PowerUp::firerateUp) { if (powerUpIt->getType() == PowerUp::firerateUp) {
ship->setFirerate(100); ship->setFirerate(100);
powerUpCollected.firerate = true;
fireratePUTimer.restart(); fireratePUTimer.restart();
} }
if (powerUpIt->getType() == PowerUp::tripleShotUp) { if (powerUpIt->getType() == PowerUp::tripleShotUp) {
ship->setTripleShot(true); ship->setTripleShot(true);
powerUpCollected.tripleShot = true;
tripleShotPUTimer.restart(); tripleShotPUTimer.restart();
} }
powerUpIt = powerUps.erase(powerUpIt); powerUpIt = powerUps.erase(powerUpIt);
@@ -928,15 +937,18 @@ void Plansza::check_Debuff_collisions() {
for (auto debuffIt = debuffs.begin(); debuffIt != debuffs.end();) { for (auto debuffIt = debuffs.begin(); debuffIt != debuffs.end();) {
if (ship->getSprite().getGlobalBounds().intersects(debuffIt->getSprite().getGlobalBounds())) { if (ship->getSprite().getGlobalBounds().intersects(debuffIt->getSprite().getGlobalBounds())) {
if (debuffIt->getType() == Debuff::movingSpeedDbf) { if (debuffIt->getType() == Debuff::movingSpeedDbf) {
ship->setMovingSpeed(20.0f); ship->setMovingSpeed(4.0f);
debuffCollected.movingSpeed = true;
movingSpeedDebuffTimer.restart(); movingSpeedDebuffTimer.restart();
} }
if (debuffIt->getType() == Debuff::firerateDbf) { if (debuffIt->getType() == Debuff::firerateDbf) {
ship->setFirerate(500); ship->setFirerate(500);
debuffCollected.firerate = true;
firerateDebuffTimer.restart(); firerateDebuffTimer.restart();
} }
if (debuffIt->getType() == Debuff::bulletSpeedDbf) { if (debuffIt->getType() == Debuff::bulletSpeedDbf) {
ship->setBulletSpeed(5.0f); ship->setBulletSpeed(5.0f);
debuffCollected.bulletSpeed = true;
bulletSpeedDebuffTimer.restart(); bulletSpeedDebuffTimer.restart();
} }
debuffIt = debuffs.erase(debuffIt); debuffIt = debuffs.erase(debuffIt);