From be92ae144f3f055e399b9db82a6a84f1d93a0b0e Mon Sep 17 00:00:00 2001
From: Hauerch71498 <Hauerch71498@th-nuernberg.de>
Date: Sun, 17 Jan 2021 11:49:13 +0100
Subject: [PATCH] Lots of Bug Fixes
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

Schießen Enemy Player, Scoreboard wierder da, Bomber spawnen und Dir waren ein paar kleinigkeiten. pls review
---
 Bomber.cpp | 10 +++++-----
 Enemy.cpp  | 12 ++++++------
 Scoreb.cpp | 30 +++++++++++++++---------------
 Scoreb.hpp |  4 +++-
 main.cpp   | 20 ++++++++++++++------
 player.cpp | 10 +++++-----
 6 files changed, 48 insertions(+), 38 deletions(-)

diff --git a/Bomber.cpp b/Bomber.cpp
index 5dcbf5c..5ff99b9 100644
--- a/Bomber.cpp
+++ b/Bomber.cpp
@@ -120,8 +120,8 @@ const PixelBuffer& Bomber::getSprite()
 {
     switch (dir) {
 
-    case direction::BACK:
-        return back[animationstep];
+    case direction::FRONT:
+        return front[animationstep];
         break;
     case direction::LEFT:
         return left[animationstep];
@@ -131,7 +131,7 @@ const PixelBuffer& Bomber::getSprite()
         break;
 
     default:
-        return front[animationstep];
+        return back[animationstep];
     }
 };
 
@@ -149,7 +149,7 @@ void Bomber::move(FloatSeconds const & Frametime, [[maybe_unused]] Level &level)
     /*replace with Pathfinding*/
     switch ( this->dir ) {
     case direction::FRONT: //front
-                this->topleft.Y -= 10*Frametime.count();
+                this->topleft.Y += 10*Frametime.count();
         break;
     case direction::LEFT: //left
                 this->topleft.X -= 10*Frametime.count();
@@ -158,7 +158,7 @@ void Bomber::move(FloatSeconds const & Frametime, [[maybe_unused]] Level &level)
                 this->topleft.X += 10*Frametime.count();
         break;
     default:
-        this->topleft.Y += 10*Frametime.count();
+        this->topleft.Y -= 10*Frametime.count();
         break;
         //exception
         break;
diff --git a/Enemy.cpp b/Enemy.cpp
index f3a4b28..fb3a026 100644
--- a/Enemy.cpp
+++ b/Enemy.cpp
@@ -17,17 +17,17 @@ void Enemy::shoot(Level &level)
         switch ( this->dir ) {
         case direction::FRONT: //Up
         {
-            level.addEnemyProjectile({this->topleft.X+sprite.w()/2-1,this->topleft.Y-sprite.h()/2,dir});
+            level.addEnemyProjectile({this->topleft.X+sprite.w()/2-1,this->topleft.Y+sprite.h()/2,dir});
             break;
         }
         case direction::LEFT: //left
-            level.addEnemyProjectile({this->topleft.X,this->topleft.Y+sprite.h()/2-1,dir});
+            level.addEnemyProjectile({this->topleft.X,this->topleft.Y+sprite.h()/2,dir});
             break;
         case direction::RIGHT: //right
-            level.addEnemyProjectile({this->topleft.X,this->topleft.Y+sprite.h()/2-1,dir});
+            level.addEnemyProjectile({this->topleft.X+sprite.w(),this->topleft.Y+sprite.h()/2,dir});
             break;
         default: //Down
-            level.addEnemyProjectile({this->topleft.X+sprite.w()/2-1,this->topleft.Y+(sprite.h()/2),dir});
+            level.addEnemyProjectile({this->topleft.X+sprite.w()/2-1,this->topleft.Y,dir});
             break;
         }
         timetillreload = 5;
@@ -148,12 +148,12 @@ bool Enemy::playerdetected(float PlayerX, float PlayerY, Level &level)
         {
             if(lookdown(PlayerY, level))
             {
-                dir = direction::BACK;
+                dir = direction::FRONT;
                 return true;
             }
             else if(lookup(PlayerY, level))
             {
-                dir = direction::FRONT;
+                dir = direction::BACK;
                 return true;
             }
             else
diff --git a/Scoreb.cpp b/Scoreb.cpp
index 6e2088e..ceedfee 100644
--- a/Scoreb.cpp
+++ b/Scoreb.cpp
@@ -1,21 +1,21 @@
 #include "Scoreb.hpp"
 
-Score::Score()
+Score::Score(int W,int H)
 {
-    GameOverPos.X = 110;
-    GameOverPos.Y = 110;
-    ScoreBoard[5].ScorePos.X = 95;
-    ScoreBoard[5].ScorePos.Y = 140;
-    ScoreBoard[4].ScorePos.X = 105;
-    ScoreBoard[4].ScorePos.Y = 140;
-    ScoreBoard[3].ScorePos.X = 115;
-    ScoreBoard[3].ScorePos.Y = 140;
-    ScoreBoard[2].ScorePos.X = 125;
-    ScoreBoard[2].ScorePos.Y = 140;
-    ScoreBoard[1].ScorePos.X = 135;
-    ScoreBoard[1].ScorePos.Y = 140;
-    ScoreBoard[0].ScorePos.X = 145;
-    ScoreBoard[0].ScorePos.Y = 140;
+    GameOverPos.X = W/2-16;
+    GameOverPos.Y = H/2-9;
+    ScoreBoard[5].ScorePos.X = W-70;
+    ScoreBoard[5].ScorePos.Y = 20;
+    ScoreBoard[4].ScorePos.X = W-60;
+    ScoreBoard[4].ScorePos.Y = 20;
+    ScoreBoard[3].ScorePos.X = W-50;
+    ScoreBoard[3].ScorePos.Y = 20;
+    ScoreBoard[2].ScorePos.X = W-40;
+    ScoreBoard[2].ScorePos.Y = 20;
+    ScoreBoard[1].ScorePos.X = W-30;
+    ScoreBoard[1].ScorePos.Y = 20;
+    ScoreBoard[0].ScorePos.X = W-20;
+    ScoreBoard[0].ScorePos.Y = 20;
 }
 ScoreB::ScoreB()
 {
diff --git a/Scoreb.hpp b/Scoreb.hpp
index d944613..43a4097 100644
--- a/Scoreb.hpp
+++ b/Scoreb.hpp
@@ -19,11 +19,13 @@ private:
 class Score
 {
 public:
-    Score();
+    Score(int screenwidth,int screenheight);
     Position GameOverPos;
     const PixelBuffer& getGameOverSprite();
     void SetScoreSprite(int Score);
     ScoreB ScoreBoard[6];
+    int screenwidth = 0;
+    int screenheight = 0;
 };
 
 
diff --git a/main.cpp b/main.cpp
index 15bff34..22ca2f6 100644
--- a/main.cpp
+++ b/main.cpp
@@ -32,6 +32,7 @@ int screenWidth = 320;
 int screenHeigth = 320;
 int difficulty = 0;
 
+
 // global helper funktion to add "buildings"
 void addBuilding(float x, float y, int size, Level &level_ptr)
 {
@@ -51,7 +52,7 @@ class GameLoop {
     float GameOverTime = 0.0f;
 
     DynamicPixelBuffer framebuffer = {screenWidth, screenHeigth};
-
+    Score Highscore = {screenWidth,screenHeigth};
 public:
     void run(Platform& platform, FloatSeconds const &frame_time, Level &level, Player &player_) {
         for(int y = 0; y < framebuffer.h(); ++y) {
@@ -110,15 +111,15 @@ public:
             float bombY;
             int offset = 20;
             switch (dir) {
-                case direction::FRONT: //Up
+                case direction::BACK: //Up
                     bombX = player_.getTopLeft().X;
                     bombY = static_cast<float>(screenHeigth + offset);
                     break;
-                case direction::LEFT: //left
+                case direction::RIGHT: //left
                     bombX = static_cast<float>(screenWidth + offset);
                     bombY = player_.getTopLeft().Y;
                     break;
-                case direction::RIGHT: //right
+                case direction::LEFT: //right
                     bombX = static_cast<float>(-offset);
                     bombY = player_.getTopLeft().Y;
                     break;
@@ -210,18 +211,25 @@ public:
 
         // Output to the console, Gamelogic should happen before this
         auto const &levelBuffer = level.draw();
+        Highscore.SetScoreSprite(level.getScore());
         if(GameOverFlag) {
             DiagonalFadeoutShader dfs = {levelBuffer, (GameOverTime / 2.0f)};
             framebuffer.blit_topleft({ 0, 0 }, dfs);
 
-            Score Highscore;
-            Highscore.SetScoreSprite(level.getScore());
             framebuffer.blit_topleft(Highscore.GameOverPos,Highscore.getGameOverSprite());
+            int c = 0;
             for(auto & i : Highscore.ScoreBoard){
+
+                i.ScorePos.X = screenWidth/2+25-c*10;
+                i.ScorePos.Y = screenHeigth/2+20;
+                c++;
                 framebuffer.blit_topleft(i.ScorePos,i.getScoreSprite());
             }
         } else {
             framebuffer.blit_topleft({ 0, 0 }, levelBuffer);
+            for(auto & i : Highscore.ScoreBoard){
+                framebuffer.blit_topleft(i.ScorePos,i.getScoreSprite());
+            }
         }
         // kruegerzo72182>
         // <hoffmanncl72341
diff --git a/player.cpp b/player.cpp
index ceb32c7..700dbbd 100644
--- a/player.cpp
+++ b/player.cpp
@@ -199,19 +199,19 @@ void Player::shoot(Level &level)
     {
         auto const &sprite = this->getSprite();
         switch ( this->dir ) {
-        case direction::FRONT: //front
+        case direction::FRONT: //Up
         {
             level.addPlayerProjectile({this->topleft.X+sprite.w()/2-1,this->topleft.Y+sprite.h()/2,dir});
             break;
         }
         case direction::LEFT: //left
-            level.addPlayerProjectile({this->topleft.X,this->topleft.Y+(sprite.h()/2-1),dir});
+            level.addPlayerProjectile({this->topleft.X,this->topleft.Y+sprite.h()/2,dir});
             break;
         case direction::RIGHT: //right
-            level.addPlayerProjectile({this->topleft.X,this->topleft.Y+(sprite.h()/2-1),dir});
+            level.addPlayerProjectile({this->topleft.X+sprite.w(),this->topleft.Y+sprite.h()/2,dir});
             break;
-        default: //back
-            level.addPlayerProjectile({this->topleft.X+sprite.w()/2-1,this->topleft.Y-(sprite.h()/2),dir});
+        default: //Down
+            level.addPlayerProjectile({this->topleft.X+sprite.w()/2-1,this->topleft.Y,dir});
             break;
         }
         timetillreload = 1;
-- 
GitLab