From 0f6ba6c7c663583d38a9734161d7db9428ca875f Mon Sep 17 00:00:00 2001
From: Claudio Hoffmann <hoffmanncl72341@th-nuernberg.de>
Date: Sat, 16 Jan 2021 01:51:48 +0100
Subject: [PATCH] Level: Take collision widths and heights directly from a
 PixelBuffer

---
 Level.cpp | 20 ++++++++++----------
 Level.hpp |  2 +-
 2 files changed, 11 insertions(+), 11 deletions(-)

diff --git a/Level.cpp b/Level.cpp
index 4d99516..fa15d5c 100644
--- a/Level.cpp
+++ b/Level.cpp
@@ -190,10 +190,10 @@ void Level::doDoSteps(FloatSeconds const &frame_time)
     }
 }
 
-bool Level::collHelper(Position const& vecPos, int vecWidth, int vecHeigth, float buffPosX, float buffPosY, int buffWidth, int buffHeigth)
+bool Level::collHelper(Position const& vecPos, PixelBuffer const& vecBuf, float buffPosX, float buffPosY, int buffWidth, int buffHeigth)
 {
-    for(int x = static_cast<int>(vecPos.X); x <= static_cast<int>(vecPos.X) + vecWidth; ++x){
-        for(int y = static_cast<int>(vecPos.Y); y <= static_cast<int>(vecPos.Y) + vecHeigth; ++y){
+    for(int x = static_cast<int>(vecPos.X); x <= static_cast<int>(vecPos.X) + vecBuf.w(); ++x){
+        for(int y = static_cast<int>(vecPos.Y); y <= static_cast<int>(vecPos.Y) + vecBuf.h(); ++y){
             if((x >= buffPosX && x <= buffPosX + buffWidth)&&(y >= buffPosY && y <= buffPosY + buffHeigth)){
                 return true;
             }
@@ -205,13 +205,13 @@ bool Level::collHelper(Position const& vecPos, int vecWidth, int vecHeigth, floa
 bool Level::checkCollision(float posX, float posY, int bufferWidth, int bufferHeigth)
 {
     for(auto i = this->wallVector.begin(); i != this->wallVector.end(); i++ ){
-        if(collHelper(i->getTopLeft(), i->getWallBuffer().w(), i->getWallBuffer().h(), posX, posY, bufferWidth, bufferHeigth)) return true;
+        if(collHelper(i->getTopLeft(), i->getWallBuffer(), posX, posY, bufferWidth, bufferHeigth)) return true;
     }
     for(auto i = this->borders.begin(); i != this->borders.end(); i++ ){
-        if(collHelper(i->getTopLeft(), i->getWallBuffer().w(), i->getWallBuffer().h(), posX, posY, bufferWidth, bufferHeigth)) return true;
+        if(collHelper(i->getTopLeft(), i->getWallBuffer(), posX, posY, bufferWidth, bufferHeigth)) return true;
     }
     for(auto i = this->sceneryVector.begin(); i != this->sceneryVector.end(); i++ ){
-        if(collHelper(i->getTopLeft(), i->getSceneryBuffer(i->getSceneryType()).w(), i->getSceneryBuffer(i->getSceneryType()).h(), posX, posY, bufferWidth, bufferHeigth)) return true;
+        if(collHelper(i->getTopLeft(), i->getSceneryBuffer(i->getSceneryType()), posX, posY, bufferWidth, bufferHeigth)) return true;
     }
     return false;
 }
@@ -219,7 +219,7 @@ bool Level::checkCollision(float posX, float posY, int bufferWidth, int bufferHe
 /*Hauerch71498 Hitdetection*/
 bool Level::HitEnemy(float posX, float posY, int bufferWidth, int bufferHeigth)
 {
-    if(collHelper(player.getTopLeft(),player.getBuffer().w(),player.getBuffer().h(),posX,posY,bufferWidth,bufferHeigth))
+    if(collHelper(player.getTopLeft(),player.getBuffer(),posX,posY,bufferWidth,bufferHeigth))
     {
         player.takeDamage();
         return true;
@@ -230,7 +230,7 @@ bool Level::HitEnemy(float posX, float posY, int bufferWidth, int bufferHeigth)
 bool Level::HitPlayer(float posX, float posY, int bufferWidth, int bufferHeigth)
 {
     for(auto &i : this->enemyVector){
-        if(i != nullptr && collHelper(i->getTopLeft(), i->getCurrentSprite().w(), i->getCurrentSprite().h(), posX, posY, bufferWidth, bufferHeigth))
+        if(i != nullptr && collHelper(i->getTopLeft(), i->getCurrentSprite(), posX, posY, bufferWidth, bufferHeigth))
         {
             //HauerCh71498
             //{
@@ -250,14 +250,14 @@ bool Level::HitPlayer(float posX, float posY, int bufferWidth, int bufferHeigth)
 bool Level::HitObstacle(float posX, float posY, int bufferWidth, int bufferHeigth)
 {
     for(auto &i : wallVector){
-        if(collHelper(i.getTopLeft(), i.getWallBuffer().w(), i.getWallBuffer().h(), posX, posY, bufferWidth, bufferHeigth))
+        if(collHelper(i.getTopLeft(), i.getWallBuffer(), posX, posY, bufferWidth, bufferHeigth))
         {
             i.takeDamage();
             return true;
         }
     }
     for(auto &i : sceneryVector) {
-        if(collHelper(i.getTopLeft(), i.getSceneryBuffer(i.getSceneryType()).w(), i.getSceneryBuffer(i.getSceneryType()).h(), posX, posY, bufferWidth, bufferHeigth))
+        if(collHelper(i.getTopLeft(), i.getSceneryBuffer(i.getSceneryType()), posX, posY, bufferWidth, bufferHeigth))
         {
             i.takeDamage();
             return true;
diff --git a/Level.hpp b/Level.hpp
index 26c30aa..58f7f01 100644
--- a/Level.hpp
+++ b/Level.hpp
@@ -158,7 +158,7 @@ private:
     std::vector<std::unique_ptr<Enemy>> enemyVector;
     std::vector<std::unique_ptr<Projectile>> projectileVector;
     std::vector<std::unique_ptr<Enemy>> trooperSpawner;
-    bool collHelper(Position const& vecPos, int vecWidth, int vecHeigth, float buffPosX, float buffPosY, int buffWidth, int buffHeigth);
+    bool collHelper(Position const& vecPos, PixelBuffer const& vecBuf, float buffPosX, float buffPosY, int buffWidth, int buffHeigth);
 
     int score = 0; //hauerch71498
 };
-- 
GitLab