finished functionality
This commit is contained in:
parent
80c49e2f5f
commit
60d408a37c
7 changed files with 275 additions and 26 deletions
284
Game.h
284
Game.h
|
|
@ -1,3 +1,5 @@
|
||||||
|
#include <fstream>
|
||||||
|
|
||||||
class Game {
|
class Game {
|
||||||
public:
|
public:
|
||||||
int result, loop;
|
int result, loop;
|
||||||
|
|
@ -105,6 +107,10 @@ private:
|
||||||
monkirta.loadFromFile("data\\Fonts\\Monkirta Pursuit NC.ttf");
|
monkirta.loadFromFile("data\\Fonts\\Monkirta Pursuit NC.ttf");
|
||||||
updateLoader(window, "Loading fonts...");
|
updateLoader(window, "Loading fonts...");
|
||||||
|
|
||||||
|
sf::Font skME;
|
||||||
|
skME.loadFromFile("data/Fonts/SKoME.ttf");
|
||||||
|
updateLoader(window, "Loading fonts...");
|
||||||
|
|
||||||
//********************************************
|
//********************************************
|
||||||
// GRAPHICS
|
// GRAPHICS
|
||||||
//********************************************
|
//********************************************
|
||||||
|
|
@ -180,6 +186,18 @@ private:
|
||||||
turret.loadFromFile("data\\Gui\\turret.png");
|
turret.loadFromFile("data\\Gui\\turret.png");
|
||||||
updateLoader(window, "Loading textures...");
|
updateLoader(window, "Loading textures...");
|
||||||
|
|
||||||
|
Texture redFilter;
|
||||||
|
redFilter.loadFromFile("data\\Gui\\redFilter.png");
|
||||||
|
updateLoader(window, "Loading textures...");
|
||||||
|
|
||||||
|
Texture scoreBar;
|
||||||
|
scoreBar.loadFromFile("data\\Gui\\score_bar.png");
|
||||||
|
updateLoader(window, "Loading textures...");
|
||||||
|
|
||||||
|
Texture highBar;
|
||||||
|
highBar.loadFromFile("data\\Gui\\high_bar.png");
|
||||||
|
updateLoader(window, "Loading textures...");
|
||||||
|
|
||||||
vector < Texture > largeAsteroids;
|
vector < Texture > largeAsteroids;
|
||||||
for (int i = 1; i <= 7; i++) {
|
for (int i = 1; i <= 7; i++) {
|
||||||
largeAsteroids.emplace_back();
|
largeAsteroids.emplace_back();
|
||||||
|
|
@ -269,9 +287,8 @@ private:
|
||||||
|
|
||||||
Text score;
|
Text score;
|
||||||
score.setFillColor(Color::White);
|
score.setFillColor(Color::White);
|
||||||
score.setPosition(10, 10);
|
score.setPosition(12, 8);
|
||||||
score.setFont(oxan);
|
score.setFont(oxan);
|
||||||
score.setString("Score: 0");
|
|
||||||
score.setCharacterSize(20);
|
score.setCharacterSize(20);
|
||||||
|
|
||||||
Text destroyed;
|
Text destroyed;
|
||||||
|
|
@ -280,7 +297,7 @@ private:
|
||||||
destroyed.setCharacterSize(70);
|
destroyed.setCharacterSize(70);
|
||||||
destroyed.setString("Destroyed");
|
destroyed.setString("Destroyed");
|
||||||
destroyed.setOrigin(destroyed.getGlobalBounds().width/2.0, destroyed.getGlobalBounds().height/2.0);
|
destroyed.setOrigin(destroyed.getGlobalBounds().width/2.0, destroyed.getGlobalBounds().height/2.0);
|
||||||
destroyed.setPosition(window.getSize().x/2.0, window.getSize().y/3.0);
|
destroyed.setPosition(window.getSize().x/2.0, window.getSize().y/3);
|
||||||
|
|
||||||
Text pressEnter;
|
Text pressEnter;
|
||||||
pressEnter.setFillColor(Color::White);
|
pressEnter.setFillColor(Color::White);
|
||||||
|
|
@ -288,7 +305,31 @@ private:
|
||||||
pressEnter.setCharacterSize(20);
|
pressEnter.setCharacterSize(20);
|
||||||
pressEnter.setString("Press ENTER to return to the menu...");
|
pressEnter.setString("Press ENTER to return to the menu...");
|
||||||
pressEnter.setOrigin(pressEnter.getGlobalBounds().width/2.0, pressEnter.getGlobalBounds().height/2.0);
|
pressEnter.setOrigin(pressEnter.getGlobalBounds().width/2.0, pressEnter.getGlobalBounds().height/2.0);
|
||||||
pressEnter.setPosition(window.getSize().x/2.0, window.getSize().y/2.25);
|
pressEnter.setPosition(window.getSize().x/2.0, window.getSize().y/2.4);
|
||||||
|
|
||||||
|
Text highScoreLable;
|
||||||
|
highScoreLable.setFillColor(Color(0, 0, 0, 0));
|
||||||
|
highScoreLable.setOutlineColor(Color::White);
|
||||||
|
highScoreLable.setOutlineThickness(1);
|
||||||
|
highScoreLable.setFont(skME);
|
||||||
|
highScoreLable.setCharacterSize(30);
|
||||||
|
highScoreLable.setString("High Scores");
|
||||||
|
highScoreLable.setOrigin(highScoreLable.getGlobalBounds().width/2.0, highScoreLable.getGlobalBounds().height/2.0);
|
||||||
|
highScoreLable.setPosition(window.getSize().x/2.0, window.getSize().y/2.0);
|
||||||
|
|
||||||
|
Text highScoreEntriesDates[10];
|
||||||
|
Text highScoreEntries[10];
|
||||||
|
for (int i = 0; i < 10; i++) {
|
||||||
|
highScoreEntriesDates[i].setFillColor(Color::White);
|
||||||
|
highScoreEntriesDates[i].setFont(monkirta);
|
||||||
|
highScoreEntriesDates[i].setCharacterSize(20);
|
||||||
|
highScoreEntriesDates[i].setOrigin(0, highScoreEntriesDates[i].getGlobalBounds().height/2.0);
|
||||||
|
|
||||||
|
highScoreEntries[i].setFillColor(Color::White);
|
||||||
|
highScoreEntries[i].setFont(oxan);
|
||||||
|
highScoreEntries[i].setCharacterSize(20);
|
||||||
|
highScoreEntries[i].setOrigin(0, highScoreEntries[i].getGlobalBounds().height/2.0);
|
||||||
|
}
|
||||||
|
|
||||||
auto stop = std::chrono::high_resolution_clock::now();
|
auto stop = std::chrono::high_resolution_clock::now();
|
||||||
auto duration = std::chrono::duration_cast<std::chrono::milliseconds>(stop - start);
|
auto duration = std::chrono::duration_cast<std::chrono::milliseconds>(stop - start);
|
||||||
|
|
@ -310,6 +351,9 @@ private:
|
||||||
|
|
||||||
lost.push_back(&destroyed);
|
lost.push_back(&destroyed);
|
||||||
lost.push_back(&pressEnter);
|
lost.push_back(&pressEnter);
|
||||||
|
lost.push_back(&highScoreLable);
|
||||||
|
|
||||||
|
int lostEnd = lost.size() - 1;
|
||||||
|
|
||||||
MySprite backSprite(background, 100, window.getSize().x / 2,
|
MySprite backSprite(background, 100, window.getSize().x / 2,
|
||||||
window.getSize().y / 2, 0, 0);
|
window.getSize().y / 2, 0, 0);
|
||||||
|
|
@ -321,10 +365,59 @@ private:
|
||||||
player.setShield(true, &shield, 12, &shieldTimer);
|
player.setShield(true, &shield, 12, &shieldTimer);
|
||||||
|
|
||||||
MySprite fighter(wingmanShip, 10, -20, -20, 0, 0);
|
MySprite fighter(wingmanShip, 10, -20, -20, 0, 0);
|
||||||
fighter.setMaxVelocity(18);
|
fighter.setMaxVelocity(10);
|
||||||
fighter.setMinVelocity(0);
|
fighter.setMinVelocity(-2);
|
||||||
|
|
||||||
|
Mount rapidFireIcon(rapidFire, 20, window.getSize().x/2.0 - 25 - 150, 30, 0, 0);
|
||||||
|
Mount damageIcon(damage, 20, window.getSize().x/2.0 - 25 - 100, 30, 0, 0);
|
||||||
|
Mount sprayFireIcon(spray, 20, window.getSize().x/2.0 - 25 - 50, 30, 0, 0);
|
||||||
|
Mount backwardsFireIcon(backwards, 20, window.getSize().x/2.0 - 25, 30, 0, 0);
|
||||||
|
Mount shieldIcon(shieldUp, 20, window.getSize().x/2.0 + 25, 30, 0, 0);
|
||||||
|
Mount timeIcon(slowTime, 20, window.getSize().x/2.0 + 25 + 50, 30, 0, 0);
|
||||||
|
Mount turretIcon(turret, 20, window.getSize().x/2.0 + 25 + 100, 30, 0, 0);
|
||||||
|
Mount fighterIcon(wingman, 20, window.getSize().x/2.0 + 25 + 150, 30, 0, 0);
|
||||||
|
|
||||||
|
Rider redFilterTemp(redFilter, 100);
|
||||||
|
redFilterTemp.setColor(Color(redFilterTemp.getColor().r, redFilterTemp.getColor().g, redFilterTemp.getColor().b, 155));
|
||||||
|
auto filterRect = redFilterTemp.getLocalBounds();
|
||||||
|
|
||||||
|
rapidFireIcon.addRider(redFilterTemp);
|
||||||
|
damageIcon.addRider(redFilterTemp);
|
||||||
|
sprayFireIcon.addRider(redFilterTemp);
|
||||||
|
backwardsFireIcon.addRider(redFilterTemp);
|
||||||
|
shieldIcon.addRider(redFilterTemp);
|
||||||
|
timeIcon.addRider(redFilterTemp);
|
||||||
|
turretIcon.addRider(redFilterTemp);
|
||||||
|
fighterIcon.addRider(redFilterTemp);
|
||||||
|
|
||||||
|
vector<int> highScores;
|
||||||
|
vector<std::string> highScoresDates;
|
||||||
|
ifstream fin("scores");
|
||||||
|
|
||||||
|
if (fin.is_open()) {
|
||||||
|
string name;
|
||||||
|
int scoreHold;
|
||||||
|
while (!fin.eof()) {
|
||||||
|
fin >> name;
|
||||||
|
fin >> scoreHold;
|
||||||
|
highScores.push_back(scoreHold);
|
||||||
|
highScoresDates.push_back(name);
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
highScores.push_back(0);
|
||||||
|
highScoresDates.push_back("0");
|
||||||
|
}
|
||||||
|
|
||||||
|
fin.close();
|
||||||
|
|
||||||
|
score.setString("0");
|
||||||
|
|
||||||
|
MySprite scoreBox(scoreBar, 40);
|
||||||
|
scoreBox.setOrigin(0, 0);
|
||||||
|
scoreBox.setPosition(8, 8);
|
||||||
|
|
||||||
gui.push_back(&backSprite);
|
gui.push_back(&backSprite);
|
||||||
|
gui.push_back(&scoreBox);
|
||||||
gui.push_back(&score);
|
gui.push_back(&score);
|
||||||
|
|
||||||
for (int i = 0; i < player.getLives(); i++)
|
for (int i = 0; i < player.getLives(); i++)
|
||||||
|
|
@ -336,26 +429,65 @@ private:
|
||||||
window.clear(Color::Black); // clear the contents of the old frame
|
window.clear(Color::Black); // clear the contents of the old frame
|
||||||
// by setting the window to black
|
// by setting the window to black
|
||||||
|
|
||||||
if (shieldTimer.getElapsedTime().asSeconds() > 5) player.setShield(false);
|
int shortTime = 5, longTime = 12;
|
||||||
if (poweredUpRapid && rapidFireClock.getElapsedTime().asSeconds() > 12) poweredUpRapid = false;
|
|
||||||
if (poweredUpDamage && damageClock.getElapsedTime().asSeconds() > 12) poweredUpDamage = false;
|
if (shieldTimer.getElapsedTime().asSeconds() > shortTime) player.setShield(false);
|
||||||
if (poweredUpSpray && sprayFireClock.getElapsedTime().asSeconds() > 12) poweredUpSpray = false;
|
else if (player.hasShield()) {
|
||||||
if (poweredUpbackwards && backwardsClock.getElapsedTime().asSeconds() > 12) poweredUpbackwards = false;
|
double secs = shieldTimer.getElapsedTime().asSeconds();
|
||||||
if (poweredUpFighter && fighterClock.getElapsedTime().asSeconds() > 12) {
|
shieldIcon.getRidersForEdit()->at(0).setTextureRect(IntRect(filterRect.left, filterRect.top * secs/shortTime, filterRect.width, filterRect.height * secs/shortTime));
|
||||||
|
}
|
||||||
|
|
||||||
|
if (poweredUpRapid && rapidFireClock.getElapsedTime().asSeconds() > longTime) poweredUpRapid = false;
|
||||||
|
else if (poweredUpRapid) {
|
||||||
|
double secs = rapidFireClock.getElapsedTime().asSeconds();
|
||||||
|
rapidFireIcon.getRidersForEdit()->at(0).setTextureRect(IntRect(filterRect.left, filterRect.top * secs/longTime, filterRect.width, filterRect.height * secs/longTime));
|
||||||
|
}
|
||||||
|
|
||||||
|
if (poweredUpDamage && damageClock.getElapsedTime().asSeconds() > longTime) poweredUpDamage = false;
|
||||||
|
else if (poweredUpDamage) {
|
||||||
|
double secs = damageClock.getElapsedTime().asSeconds();
|
||||||
|
damageIcon.getRidersForEdit()->at(0).setTextureRect(IntRect(filterRect.left, filterRect.top * secs/longTime, filterRect.width, filterRect.height * secs/longTime));
|
||||||
|
}
|
||||||
|
|
||||||
|
if (poweredUpSpray && sprayFireClock.getElapsedTime().asSeconds() > longTime) poweredUpSpray = false;
|
||||||
|
else if (poweredUpSpray) {
|
||||||
|
double secs = sprayFireClock.getElapsedTime().asSeconds();
|
||||||
|
sprayFireIcon.getRidersForEdit()->at(0).setTextureRect(IntRect(filterRect.left, filterRect.top * secs/longTime, filterRect.width, filterRect.height * secs/longTime));
|
||||||
|
}
|
||||||
|
|
||||||
|
if (poweredUpbackwards && backwardsClock.getElapsedTime().asSeconds() > longTime) poweredUpbackwards = false;
|
||||||
|
else if (poweredUpbackwards) {
|
||||||
|
double secs = backwardsClock.getElapsedTime().asSeconds();
|
||||||
|
backwardsFireIcon.getRidersForEdit()->at(0).setTextureRect(IntRect(filterRect.left, filterRect.top * secs/longTime, filterRect.width, filterRect.height * secs/longTime));
|
||||||
|
}
|
||||||
|
|
||||||
|
if (poweredUpFighter && fighterClock.getElapsedTime().asSeconds() > longTime) {
|
||||||
poweredUpFighter = false;
|
poweredUpFighter = false;
|
||||||
fighter.setPosition(-20, -20);
|
fighter.setPosition(-20, -20);
|
||||||
fighter.setVelocity(0);
|
fighter.setVelocity(0);
|
||||||
fighter.setDirection(0);
|
fighter.setDirection(0);
|
||||||
|
} else if (poweredUpFighter) {
|
||||||
|
double secs = fighterClock.getElapsedTime().asSeconds();
|
||||||
|
fighterIcon.getRidersForEdit()->at(0).setTextureRect(IntRect(filterRect.left, filterRect.top * secs/longTime, filterRect.width, filterRect.height * secs/longTime));
|
||||||
}
|
}
|
||||||
if (poweredUpTurret && turretClock.getElapsedTime().asSeconds() > 12) {
|
|
||||||
|
if (poweredUpTurret && turretClock.getElapsedTime().asSeconds() > longTime) {
|
||||||
poweredUpTurret = false;
|
poweredUpTurret = false;
|
||||||
player.removeRider(0);
|
player.removeRider(0);
|
||||||
} if (poweredUpTime && timeClock.getElapsedTime().asSeconds() > 5) {
|
} else if (poweredUpTurret) {
|
||||||
|
double secs = turretClock.getElapsedTime().asSeconds();
|
||||||
|
turretIcon.getRidersForEdit()->at(0).setTextureRect(IntRect(filterRect.left, filterRect.top * secs/longTime, filterRect.width, filterRect.height * secs/longTime));
|
||||||
|
}
|
||||||
|
|
||||||
|
if (poweredUpTime && timeClock.getElapsedTime().asSeconds() > shortTime) {
|
||||||
for (auto e : enemies) {
|
for (auto e : enemies) {
|
||||||
e->setVelocity(e->getVelocity() * 8);
|
e->setVelocity(e->getVelocity() * 8);
|
||||||
}
|
}
|
||||||
|
|
||||||
poweredUpTime = false;
|
poweredUpTime = false;
|
||||||
|
} else if (poweredUpTime) {
|
||||||
|
double secs = timeClock.getElapsedTime().asSeconds();
|
||||||
|
timeIcon.getRidersForEdit()->at(0).setTextureRect(IntRect(filterRect.left, filterRect.top * secs/shortTime, filterRect.width, filterRect.height * secs/shortTime));
|
||||||
}
|
}
|
||||||
|
|
||||||
//****************************************
|
//****************************************
|
||||||
|
|
@ -440,7 +572,7 @@ private:
|
||||||
// Spawn cycle below here
|
// Spawn cycle below here
|
||||||
//****************************************
|
//****************************************
|
||||||
|
|
||||||
uniform_int_distribution<int> stroidChance(1, 32), powerUpChance(1, 50),
|
uniform_int_distribution<int> stroidChance(1, 32), powerUpChance(1, 35),
|
||||||
powerUp(1, 8), stroidSize(1, 3),
|
powerUp(1, 8), stroidSize(1, 3),
|
||||||
smallTexture(0, smallAsteroids.size() - 1),
|
smallTexture(0, smallAsteroids.size() - 1),
|
||||||
mediumTexture(0, mediumAsteroids.size() - 1),
|
mediumTexture(0, mediumAsteroids.size() - 1),
|
||||||
|
|
@ -735,7 +867,7 @@ private:
|
||||||
timeClock.restart();
|
timeClock.restart();
|
||||||
} else if (enemies[i]->getRiders()[0].getType() == "Shield") {
|
} else if (enemies[i]->getRiders()[0].getType() == "Shield") {
|
||||||
shieldTimer.restart();
|
shieldTimer.restart();
|
||||||
player.setShield(true, &shield, 12, &shieldTimer);
|
if (!player.hasShield()) player.setShield(true, &shield, 12, &shieldTimer);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -765,11 +897,75 @@ private:
|
||||||
enemies.erase(enemies.begin() + i);
|
enemies.erase(enemies.begin() + i);
|
||||||
}
|
}
|
||||||
} else if (!ended && Collision::CircleTest(*enemies[i], player)) {
|
} else if (!ended && Collision::CircleTest(*enemies[i], player)) {
|
||||||
if (player.hit(window, animations, explosion, gen, shield, 12, shieldTimer)) {
|
if (player.hit(window, animations, explosion, gen)) {
|
||||||
ended = true;
|
ended = true;
|
||||||
|
player.setShield(false);
|
||||||
playerLost.play();
|
playerLost.play();
|
||||||
} else playerBoom.play();
|
|
||||||
|
|
||||||
|
if (highScores[0] == 0) {
|
||||||
|
time_t now = time(0);
|
||||||
|
tm *ltm = localtime(&now);
|
||||||
|
|
||||||
|
highScores[0] = player.getScore();
|
||||||
|
highScoresDates[0] = to_string(ltm->tm_mday) + "/" + to_string(1 + ltm->tm_mon) + "/" + to_string(1900 + ltm->tm_year);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
bool inserted = false;
|
||||||
|
for (int j = 0; j < highScores.size(); j++) {
|
||||||
|
if (player.getScore() > highScores[j]) {
|
||||||
|
inserted = true;
|
||||||
|
|
||||||
|
highScores.insert(highScores.begin() + j, player.getScore());
|
||||||
|
|
||||||
|
time_t now = time(0);
|
||||||
|
tm *ltm = localtime(&now);
|
||||||
|
|
||||||
|
highScoresDates.insert(highScoresDates.begin() + j, to_string(ltm->tm_mday) + "/" + to_string(1 + ltm->tm_mon) + "/" + to_string(1900 + ltm->tm_year));
|
||||||
|
|
||||||
|
if (highScores.size() > 10) {
|
||||||
|
highScores.pop_back();
|
||||||
|
highScoresDates.pop_back();
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!inserted && highScores.size() < 10) {
|
||||||
|
highScores.push_back(player.getScore());
|
||||||
|
|
||||||
|
time_t now = time(0);
|
||||||
|
tm *ltm = localtime(&now);
|
||||||
|
highScoresDates.push_back(to_string(ltm->tm_mday) + "/" + to_string(1 + ltm->tm_mon) + "/" + to_string(1900 + ltm->tm_year));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
ofstream fout("scores");
|
||||||
|
for (int j = 0; j < highScores.size(); j++) {
|
||||||
|
fout << highScoresDates[j] << " " << highScores[j];
|
||||||
|
if (j != highScores.size() - 1) fout << endl;
|
||||||
|
|
||||||
|
highScoreEntries[j].setString(to_string(highScores[j]));
|
||||||
|
highScoreEntriesDates[j].setString(highScoresDates[j]);
|
||||||
|
|
||||||
|
int widthEntry = highScoreEntries[0].getGlobalBounds().width;
|
||||||
|
int widthEntryDate = highScoreEntriesDates[0].getGlobalBounds().width;
|
||||||
|
int spaceBetween = 150 - widthEntryDate;
|
||||||
|
int dateLoc = (window.getSize().x - (widthEntry + widthEntryDate + spaceBetween))/2;
|
||||||
|
|
||||||
|
cout << widthEntryDate << " " << widthEntry << " " << spaceBetween << endl;
|
||||||
|
|
||||||
|
highScoreEntriesDates[j].setPosition(dateLoc, window.getSize().y/1.8 + (25 * j));
|
||||||
|
highScoreEntries[j].setPosition(dateLoc + 150, window.getSize().y/1.8 + (25 * j));
|
||||||
|
}
|
||||||
|
|
||||||
|
fout.close();
|
||||||
|
} else {
|
||||||
|
playerBoom.play();
|
||||||
|
player.setShield(true, &shield, 12, &shieldTimer);
|
||||||
|
}
|
||||||
|
|
||||||
|
poweredUpDamage = false;
|
||||||
|
poweredUpSpray = false;
|
||||||
poweredUpRapid = false;
|
poweredUpRapid = false;
|
||||||
poweredUpbackwards = false;
|
poweredUpbackwards = false;
|
||||||
|
|
||||||
|
|
@ -778,13 +974,19 @@ private:
|
||||||
fighter.setVelocity(0);
|
fighter.setVelocity(0);
|
||||||
fighter.setDirection(0);
|
fighter.setDirection(0);
|
||||||
|
|
||||||
|
if (poweredUpTurret) player.removeRider(0);
|
||||||
poweredUpTurret = false;
|
poweredUpTurret = false;
|
||||||
player.removeRider(0);
|
|
||||||
|
|
||||||
for (auto e : enemies)
|
if (poweredUpTime) {
|
||||||
e->setVelocity(e->getVelocity() * 8);
|
for (auto e : enemies)
|
||||||
|
e->setVelocity(e->getVelocity() * 8);
|
||||||
|
}
|
||||||
poweredUpTime = false;
|
poweredUpTime = false;
|
||||||
|
|
||||||
|
for (int j = 0; j < projectiles.size(); j++) {
|
||||||
|
projectiles.erase(projectiles.begin() + j);
|
||||||
|
}
|
||||||
|
|
||||||
lives.erase(lives.begin() + player.getLives()); //remove player icon from top corner
|
lives.erase(lives.begin() + player.getLives()); //remove player icon from top corner
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -796,7 +998,7 @@ private:
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
score.setString("Score: " + to_string(player.getScore()));
|
score.setString(to_string(player.getScore()));
|
||||||
|
|
||||||
if (player.getScore() - (player.getNewLifeScore() * player.getNumLivesAdded()) >=
|
if (player.getScore() - (player.getNewLifeScore() * player.getNumLivesAdded()) >=
|
||||||
player.getNewLifeScore()) {
|
player.getNewLifeScore()) {
|
||||||
|
|
@ -841,6 +1043,11 @@ private:
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
for (auto & i : lost) window.draw(*i);
|
for (auto & i : lost) window.draw(*i);
|
||||||
|
|
||||||
|
for (int i = 0; i < highScores.size(); i++) {
|
||||||
|
window.draw(highScoreEntriesDates[i]);
|
||||||
|
window.draw(highScoreEntries[i]);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
for (int i = 1; i < gui.size(); i++) {
|
for (int i = 1; i < gui.size(); i++) {
|
||||||
|
|
@ -850,6 +1057,39 @@ private:
|
||||||
for (auto i: lives) {
|
for (auto i: lives) {
|
||||||
window.draw(i);
|
window.draw(i);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (poweredUpRapid) {
|
||||||
|
window.draw(rapidFireIcon);
|
||||||
|
window.draw(rapidFireIcon.getRiders()[0]);
|
||||||
|
}
|
||||||
|
if (poweredUpDamage) {
|
||||||
|
window.draw(damageIcon);
|
||||||
|
window.draw(damageIcon.getRiders()[0]);
|
||||||
|
}
|
||||||
|
if (poweredUpbackwards) {
|
||||||
|
window.draw(backwardsFireIcon);
|
||||||
|
window.draw(backwardsFireIcon.getRiders()[0]);
|
||||||
|
}
|
||||||
|
if (poweredUpSpray) {
|
||||||
|
window.draw(sprayFireIcon);
|
||||||
|
window.draw(sprayFireIcon.getRiders()[0]);
|
||||||
|
}
|
||||||
|
if (player.hasShield()) {
|
||||||
|
window.draw(shieldIcon);
|
||||||
|
window.draw(shieldIcon.getRiders()[0]);
|
||||||
|
}
|
||||||
|
if (poweredUpTime) {
|
||||||
|
window.draw(timeIcon);
|
||||||
|
window.draw(timeIcon.getRiders()[0]);
|
||||||
|
}
|
||||||
|
if (poweredUpTurret) {
|
||||||
|
window.draw(turretIcon);
|
||||||
|
window.draw(turretIcon.getRiders()[0]);
|
||||||
|
}
|
||||||
|
if (poweredUpFighter) {
|
||||||
|
window.draw(fighterIcon);
|
||||||
|
window.draw(fighterIcon.getRiders()[0]);
|
||||||
|
}
|
||||||
//****************************************
|
//****************************************
|
||||||
// ADD ALL OF OUR DRAWING ABOVE HERE
|
// ADD ALL OF OUR DRAWING ABOVE HERE
|
||||||
//****************************************
|
//****************************************
|
||||||
|
|
|
||||||
9
Mount.h
9
Mount.h
|
|
@ -25,8 +25,13 @@ public:
|
||||||
}
|
}
|
||||||
|
|
||||||
void addRider(Rider &sprite, int index = -1) {
|
void addRider(Rider &sprite, int index = -1) {
|
||||||
if (index == -1) riders.push_back(sprite);
|
if (index == -1) {
|
||||||
else riders.insert(riders.begin() + index, sprite);
|
riders.push_back(sprite);
|
||||||
|
riders[riders.size() - 1].setPosition(getPosition());
|
||||||
|
} else {
|
||||||
|
riders.insert(riders.begin() + index, sprite);
|
||||||
|
riders[index].setPosition(getPosition());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void removeRider(int index = -1) {
|
void removeRider(int index = -1) {
|
||||||
|
|
|
||||||
3
Ship.h
3
Ship.h
|
|
@ -15,7 +15,7 @@ public:
|
||||||
sound.play();
|
sound.play();
|
||||||
}
|
}
|
||||||
|
|
||||||
bool hit(RenderWindow &window, vector<MySprite> &animations, Texture &explosionTexture, default_random_engine &gen, Texture &shieldTexture, int scale, Clock &timer) {
|
bool hit(RenderWindow &window, vector<MySprite> &animations, Texture &explosionTexture, default_random_engine &gen) {
|
||||||
uniform_int_distribution<int> angle(0, 359);
|
uniform_int_distribution<int> angle(0, 359);
|
||||||
animations.emplace_back(explosionTexture, 100, getXPos(), getYPos(), 0, angle(gen));
|
animations.emplace_back(explosionTexture, 100, getXPos(), getYPos(), 0, angle(gen));
|
||||||
animations[animations.size() - 1].makeAnimated(5, 5, 0.01,23);
|
animations[animations.size() - 1].makeAnimated(5, 5, 0.01,23);
|
||||||
|
|
@ -24,7 +24,6 @@ public:
|
||||||
setDirection(0);
|
setDirection(0);
|
||||||
setVelocity(0);
|
setVelocity(0);
|
||||||
lives--;
|
lives--;
|
||||||
setShield(true, &shieldTexture, scale, &timer);
|
|
||||||
|
|
||||||
return lives <= 0;
|
return lives <= 0;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Binary file not shown.
|
Before Width: | Height: | Size: 9.8 KiB After Width: | Height: | Size: 9.8 KiB |
BIN
data/Gui/redFilter.png
Normal file
BIN
data/Gui/redFilter.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 5.8 KiB |
BIN
data/Gui/score_bar.png
Normal file
BIN
data/Gui/score_bar.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 9.9 KiB |
5
scores
Normal file
5
scores
Normal file
|
|
@ -0,0 +1,5 @@
|
||||||
|
19/10/2020 107800
|
||||||
|
19/10/2020 12100
|
||||||
|
19/10/2020 8700
|
||||||
|
19/10/2020 1300
|
||||||
|
19/10/2020 100
|
||||||
Loading…
Add table
Add a link
Reference in a new issue