diff --git a/assets/img/ultimate/ultimate_0.png b/assets/img/ultimate/ultimate_0.png new file mode 100644 index 0000000..add8904 Binary files /dev/null and b/assets/img/ultimate/ultimate_0.png differ diff --git a/assets/img/ultimate/ultimate_100.png b/assets/img/ultimate/ultimate_100.png new file mode 100644 index 0000000..513f14d Binary files /dev/null and b/assets/img/ultimate/ultimate_100.png differ diff --git a/assets/img/ultimate/ultimate_20.png b/assets/img/ultimate/ultimate_20.png new file mode 100644 index 0000000..ef308de Binary files /dev/null and b/assets/img/ultimate/ultimate_20.png differ diff --git a/assets/img/ultimate/ultimate_40.png b/assets/img/ultimate/ultimate_40.png new file mode 100644 index 0000000..3653ef4 Binary files /dev/null and b/assets/img/ultimate/ultimate_40.png differ diff --git a/assets/img/ultimate/ultimate_60.png b/assets/img/ultimate/ultimate_60.png new file mode 100644 index 0000000..1e99ac9 Binary files /dev/null and b/assets/img/ultimate/ultimate_60.png differ diff --git a/assets/img/ultimate/ultimate_80.png b/assets/img/ultimate/ultimate_80.png new file mode 100644 index 0000000..b2bcdc1 Binary files /dev/null and b/assets/img/ultimate/ultimate_80.png differ diff --git a/headers/Plansza.h b/headers/Plansza.h index ea9271e..3210ba0 100644 --- a/headers/Plansza.h +++ b/headers/Plansza.h @@ -120,6 +120,7 @@ private: sf::Texture movingSpeedDebuffTexture; sf::Texture firerateDebuffTexture; sf::Texture bulletSpeedDebuffTexture; + sf::Texture ultimateIndicatorTextures[6]; // Tablice std::vector enemies; @@ -132,6 +133,9 @@ private: std::vector heartStats; std::vector powerUps; std::vector debuffs; + std::vector ultimateIndicators; + + void loadUltimateIndicators(); // Zmienne prymitywne Boss* boss = nullptr; // Wskaźnik na bossa diff --git a/sources/Plansza.cpp b/sources/Plansza.cpp index 48cfe8e..e6fff6f 100644 --- a/sources/Plansza.cpp +++ b/sources/Plansza.cpp @@ -47,6 +47,8 @@ Plansza::Plansza(unsigned int windowHeight, unsigned int windowWidth, sf::Render exit(-500); } + loadUltimateIndicators(); + score = 0; // Wczytywanie czcionki dla licznika punktów @@ -77,6 +79,29 @@ Plansza::Plansza(unsigned int windowHeight, unsigned int windowWidth, sf::Render // spawnClock.restart(); } +void Plansza::loadUltimateIndicators() { + const std::string texturePaths[6] = { + "../assets/img/ultimate/ultimate_0.png", + "../assets/img/ultimate/ultimate_20.png", + "../assets/img/ultimate/ultimate_40.png", + "../assets/img/ultimate/ultimate_60.png", + "../assets/img/ultimate/ultimate_80.png", + "../assets/img/ultimate/ultimate_100.png" + }; + + for (int i = 0; i < 6; ++i) { + if (!ultimateIndicatorTextures[i].loadFromFile(texturePaths[i])) { + std::cerr << "Failed to load ultimate indicator texture: " << texturePaths[i] << std::endl; + exit(-1); + } + sf::Sprite sprite; + sprite.setTexture(ultimateIndicatorTextures[i]); + sprite.setPosition(10, window->getSize().y - 60); // Lewy dolny róg + sprite.setScale(0.7f, 0.7f); // Skalowanie + ultimateIndicators.push_back(sprite); + } +} + // TODO: Refactor tej metody bo rozrosła się za bardzo już void Plansza::update() { srand(time(0)); // generacja innego ziarna na podstawie zegara systemowego @@ -111,6 +136,10 @@ void Plansza::update() { ship->ultimate_shoot(); } + int indicatorIndex = ultimateCounter / 40; + indicatorIndex = std::min(indicatorIndex, 5); // Zapobiegaj przekroczeniu zakresu + window->draw(ultimateIndicators[indicatorIndex]); + // TODO: Przenieść obiekt dźwięku wewnątrz klasy Bullet if (sf::Mouse::isButtonPressed(sf::Mouse::Left)) { ship->shoot();