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
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

View File

@@ -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);