From ad586bcf32a7a11a930a7b7773925a3acff1bc68 Mon Sep 17 00:00:00 2001 From: Claudio Hoffmann <hoffmanncl72341@th-nuernberg.de> Date: Sat, 16 Jan 2021 03:18:50 +0100 Subject: [PATCH] Move the Game Over screen to the GameLoop --- Level.cpp | 21 ++++++++------------- Level.hpp | 5 +++-- main.cpp | 15 +++++++++++++-- 3 files changed, 24 insertions(+), 17 deletions(-) diff --git a/Level.cpp b/Level.cpp index 6e379de..91893ea 100644 --- a/Level.cpp +++ b/Level.cpp @@ -2,7 +2,6 @@ #include "player.hpp" #include "Enemyprojectile.hpp" #include "playerprojectile.hpp" -#include "Scoreb.hpp" #include "PixelShaders.hpp" // <kruegerzo72182 @@ -144,10 +143,10 @@ void Level::enemyVector_PushBack(std::unique_ptr<Enemy> enemy_) this->enemyVector.push_back(std::move(enemy_)); } -void Level::doDoSteps(FloatSeconds const &frame_time) +bool Level::doDoSteps(FloatSeconds const &frame_time) { if(!player.step(player.getTopLeft(), frame_time, *this)) { - GameOverFlag = true; + return false; } for(auto it = enemyVector.begin(); it != enemyVector.end();) { @@ -188,6 +187,7 @@ void Level::doDoSteps(FloatSeconds const &frame_time) it++; } } + return true; } bool Level::collHelper(Position const& vecPos, PixelBuffer const& vecBuf, float buffPosX, float buffPosY, int buffWidth, int buffHeigth) @@ -266,6 +266,11 @@ bool Level::HitObstacle(float posX, float posY, Color hitColor, int bufferWidth, return false; } +int Level::getScore() const +{ + return score; +} + DynamicPixelBuffer const& Level::draw() { this->levelBuffer.clear(_t); @@ -291,16 +296,6 @@ DynamicPixelBuffer const& Level::draw() if(i != nullptr){ this->levelBuffer.blit_topleft({ static_cast<int>(i->getX()), static_cast<int>(i->getY()) }, i->getSprite());} } - - if(GameOverFlag) - { - Score Highscore; - Highscore.SetScoreSprite(score); - this->levelBuffer.blit_topleft(Highscore.GameOverPos,Highscore.getGameOverSprite()); - for(auto & i : Highscore.ScoreBoard){ - this->levelBuffer.blit_topleft(i.ScorePos,i.getScoreSprite()); - } - } /****/ return this->levelBuffer; } diff --git a/Level.hpp b/Level.hpp index 7c0524b..f15a313 100644 --- a/Level.hpp +++ b/Level.hpp @@ -141,10 +141,11 @@ public: bool HitPlayer(float posX, float posY, int bufferWidth, int bufferHeigth); bool HitObstacle(float posX, float posY, Color hitColor, int bufferWidth, int bufferHeigth); void enemyVector_PushBack(std::unique_ptr<Enemy> enemy_); - void doDoSteps(FloatSeconds const &frame_time); + // Returns false on game-over. + bool doDoSteps(FloatSeconds const &frame_time); + int getScore() const; std::vector<std::unique_ptr<Projectile>>& getProjectileVector(); DynamicPixelBuffer const& draw(); - bool GameOverFlag = false; //hauerch71498 private: int levelWidth; int levelHeigth; diff --git a/main.cpp b/main.cpp index dd52c95..ae981af 100644 --- a/main.cpp +++ b/main.cpp @@ -6,6 +6,7 @@ #include "Level.hpp" // kruegerzo72182 #include "Enemy.hpp" // hauerch71498 #include "Bomber.hpp" // hauerch71498 +#include "Scoreb.hpp" // hauerch71498 #include "Tank.hpp" // hauerch71498 #include "Trooper.hpp" // hauerch71498 #include "Enemyprojectile.hpp" // hauerch71498 @@ -34,6 +35,7 @@ void addBuilding(float x, float y, int size, Level &level_ptr) class GameLoop { int frame = 0; FloatSeconds time_elapsed{ 0.0f }; + bool GameOverFlag = false; //hauerch71498 DynamicPixelBuffer framebuffer = {screenWidth, screenHeigth}; @@ -105,18 +107,27 @@ public: } // kruegerzo72182> - if(!level.GameOverFlag) //Hauerch71498 + if(!GameOverFlag) //Hauerch71498 { // <kruegerzo72182 // player movement player_.move(platform, frame_time, level); // enemy movement - level.doDoSteps(frame_time); + GameOverFlag = (level.doDoSteps(frame_time) == false); } // Output to the console, Gamelogic should happen before this framebuffer.blit_topleft({ 0, 0 }, level.draw()); // kruegerzo72182> + + if(GameOverFlag) { + Score Highscore; + Highscore.SetScoreSprite(level.getScore()); + framebuffer.blit_topleft(Highscore.GameOverPos,Highscore.getGameOverSprite()); + for(auto & i : Highscore.ScoreBoard){ + framebuffer.blit_topleft(i.ScorePos,i.getScoreSprite()); + } + } // <hoffmanncl72341 platform.render(framebuffer); -- GitLab