diff --git a/Bomber.cpp b/Bomber.cpp index 3c053723a6461cb4d55032513297706705475e4e..4c3e5e9743620dbfe003ff2ffb447d88e4ddf895 100644 --- a/Bomber.cpp +++ b/Bomber.cpp @@ -116,7 +116,7 @@ static StaticPixelBuffer<23,11> constexpr left[2] = { }}} }; -const PixelBuffer& Bomber::getCurrentSprite() +const PixelBuffer& Bomber::getSprite() { switch ( direcion ) { diff --git a/Bomber.hpp b/Bomber.hpp index d370deb9a35f305888c82ace59bfbb86991c23d7..2e4fa6f079b24aa21e601b14dc37bbc33b85f0c6 100644 --- a/Bomber.hpp +++ b/Bomber.hpp @@ -12,7 +12,7 @@ public: void doStep(float PlayerX, float PlayerY, FloatSeconds const & Frametime, Level &level) override; int getScore() override; protected: - const PixelBuffer& getCurrentSprite() override; //Enemy braucht nur einer Darstellung + PixelBuffer const& getSprite() override; void move(FloatSeconds const & Frametime, Level &level) override; }; diff --git a/Enemy.cpp b/Enemy.cpp index c128a80471d011fbe5dc80e1a4525a2e53a0c697..c4529046ea240107f95320ddba8830e9a8084e06 100644 --- a/Enemy.cpp +++ b/Enemy.cpp @@ -11,7 +11,7 @@ Enemy::Enemy(int health,float x, float y, int direction, int animationstep) void Enemy::shoot(Level &level) { - const auto &sprite = this->getCurrentSprite(); + const auto &sprite = this->getSprite(); if(timetillreload<0) { switch ( this->direcion ) { @@ -46,9 +46,9 @@ bool Enemy::lookup(float PlayerY, Level &level) { if(this->topleft.Y > PlayerY) { - int i = static_cast<int>(this->topleft.Y-(this->getCurrentSprite().h()/2)); + int i = static_cast<int>(this->topleft.Y-(this->getSprite().h()/2)); i = i-static_cast<int>(PlayerY); - if(level.checkCollision(this->topleft.X, this->topleft.Y+(this->getCurrentSprite().h()/2)+i, i, 1)) + if(level.checkCollision(this->topleft.X, this->topleft.Y+(this->getSprite().h()/2)+i, i, 1)) { return false; } @@ -66,9 +66,9 @@ bool Enemy::lookdown(float PlayerY, Level &level) { if(this->topleft.Y < PlayerY) { - int i = static_cast<int>(this->topleft.Y+(this->getCurrentSprite().h()/2)); + int i = static_cast<int>(this->topleft.Y+(this->getSprite().h()/2)); i = static_cast<int>(PlayerY)-i; - if(level.checkCollision(this->topleft.X, this->topleft.Y+(this->getCurrentSprite().h()/2), i, 1)) + if(level.checkCollision(this->topleft.X, this->topleft.Y+(this->getSprite().h()/2), i, 1)) { return false; } @@ -86,9 +86,9 @@ bool Enemy::lookleft(float PlayerX, Level &level) { if(this->topleft.X > PlayerX) { - int i = static_cast<int>(this->topleft.X-(this->getCurrentSprite().w()/2)); + int i = static_cast<int>(this->topleft.X-(this->getSprite().w()/2)); i = i-static_cast<int>(PlayerX); - if(level.checkCollision(this->topleft.X-(this->getCurrentSprite().w()/2)-i, this->topleft.Y, i, 1)) + if(level.checkCollision(this->topleft.X-(this->getSprite().w()/2)-i, this->topleft.Y, i, 1)) { return false; } @@ -106,9 +106,9 @@ bool Enemy::lookright(float PlayerX, Level &level) { if(this->topleft.X < PlayerX) { - int i = static_cast<int>(this->topleft.X+(this->getCurrentSprite().w()/2)); + int i = static_cast<int>(this->topleft.X+(this->getSprite().w()/2)); i = static_cast<int>(PlayerX)-i; - if(level.checkCollision(this->topleft.X-(this->getCurrentSprite().w()/2), this->topleft.Y, i, 1)) + if(level.checkCollision(this->topleft.X-(this->getSprite().w()/2), this->topleft.Y, i, 1)) { return false; } diff --git a/Enemy.hpp b/Enemy.hpp index 3a671442976ce3e3e06d59a3bb2159e747b36ed9..cc21381c6647fbb3fcb0307901a3ada7266e3d0b 100644 --- a/Enemy.hpp +++ b/Enemy.hpp @@ -16,7 +16,6 @@ class Enemy : public Entity { public: Enemy(int Health, float x, float y, int direction, int animationstep); - virtual const PixelBuffer& getCurrentSprite() = 0; virtual int getScore() = 0; protected: diff --git a/Enemyprojectile.cpp b/Enemyprojectile.cpp index 7b62bee62746f4a5c263a1d05cb43e8d813e8ac0..8fc99db5597827a2ef0de30071725cb42cbc144d 100644 --- a/Enemyprojectile.cpp +++ b/Enemyprojectile.cpp @@ -12,14 +12,14 @@ static StaticPixelBuffer<3,3> constexpr Psprite= { {"222"}, {" 2 "} }}}; -const PixelBuffer& EnemyProjectile::getCurrentSprite() +const PixelBuffer& EnemyProjectile::getSprite() { return Psprite; }; bool EnemyProjectile::move(FloatSeconds const & Frametime, Level &level) { int speed = 15; - const auto &sprite = this->getCurrentSprite(); + const auto &sprite = this->getSprite(); switch (this->direction) { case 1: //down diff --git a/Enemyprojectile.hpp b/Enemyprojectile.hpp index 8e950ccebf2ccb73acac58429576fbc173c36258..da75429e03f589cfa9c01da5e5fa54408d4a730a 100644 --- a/Enemyprojectile.hpp +++ b/Enemyprojectile.hpp @@ -6,7 +6,7 @@ class EnemyProjectile: public Projectile public: EnemyProjectile(float x, float y, int direction); bool doStep(FloatSeconds const & Frametime, Level &level) override; - const PixelBuffer& getCurrentSprite() override; + PixelBuffer const& getSprite() override; protected: bool move(FloatSeconds const & Frametime, Level &level) override; diff --git a/Entity.hpp b/Entity.hpp index f782414ffe15599973b0179b2773f4a264e7e428..324ce9d0e61bcce55bb027ad3493f43acce5b9b7 100644 --- a/Entity.hpp +++ b/Entity.hpp @@ -52,6 +52,12 @@ public: // Removes a single hit point. Returns the new number of hit points. int takeDamage(); /// ------------- + + /// Rendering + /// --------- + + virtual PixelBuffer const& getSprite() = 0; + /// --------- }; #endif /* ENTITY_HPP */ diff --git a/Level.cpp b/Level.cpp index fa15d5cc0f700e176c19fc82b82f44a1fd5a00a3..3197d8d3797549e007f2d1877e37718c1513805d 100644 --- a/Level.cpp +++ b/Level.cpp @@ -27,7 +27,7 @@ Wall::Wall(int length, int thickness, Position const &pos, Orientation orientati this->wallBuffer.clear(this->wallColor); } -DynamicPixelBuffer const& Wall::getWallBuffer() +PixelBuffer const& Wall::getSprite() { return this->wallBuffer; } @@ -49,10 +49,10 @@ SceneryType Scenery::getSceneryType() return this->sType; } -PixelBuffer const &Scenery::getSceneryBuffer(SceneryType type) +PixelBuffer const &Scenery::getSprite() { // switch case returns depending on SceneryType here - switch(type) { + switch(sType) { case SceneryType::Dead_Tree: return this->DEAD_TREE; break; case SceneryType::Rock: return this->ROCK; break; case SceneryType::Rubble: return this->RUBBLE; break; @@ -205,13 +205,13 @@ bool Level::collHelper(Position const& vecPos, PixelBuffer const& vecBuf, float 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(), posX, posY, bufferWidth, bufferHeigth)) return true; + if(collHelper(i->getTopLeft(), i->getSprite(), posX, posY, bufferWidth, bufferHeigth)) return true; } for(auto i = this->borders.begin(); i != this->borders.end(); i++ ){ - if(collHelper(i->getTopLeft(), i->getWallBuffer(), posX, posY, bufferWidth, bufferHeigth)) return true; + if(collHelper(i->getTopLeft(), i->getSprite(), 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()), posX, posY, bufferWidth, bufferHeigth)) return true; + if(collHelper(i->getTopLeft(), i->getSprite(), 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(),posX,posY,bufferWidth,bufferHeigth)) + if(collHelper(player.getTopLeft(),player.getSprite(),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(), posX, posY, bufferWidth, bufferHeigth)) + if(i != nullptr && collHelper(i->getTopLeft(), i->getSprite(), 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(), posX, posY, bufferWidth, bufferHeigth)) + if(collHelper(i.getTopLeft(), i.getSprite(), posX, posY, bufferWidth, bufferHeigth)) { i.takeDamage(); return true; } } for(auto &i : sceneryVector) { - if(collHelper(i.getTopLeft(), i.getSceneryBuffer(i.getSceneryType()), posX, posY, bufferWidth, bufferHeigth)) + if(collHelper(i.getTopLeft(), i.getSprite(), posX, posY, bufferWidth, bufferHeigth)) { i.takeDamage(); return true; @@ -271,23 +271,23 @@ DynamicPixelBuffer const& Level::draw() this->levelBuffer.clear(_t); for(auto i : this->wallVector){ - this->levelBuffer.blit_topleft(i.getTopLeft(), i.getWallBuffer()); + this->levelBuffer.blit_topleft(i.getTopLeft(), i.getSprite()); } for(auto i : this->borders){ - this->levelBuffer.blit_topleft(i.getTopLeft(), i.getWallBuffer()); + this->levelBuffer.blit_topleft(i.getTopLeft(), i.getSprite()); } for(auto i : this->sceneryVector){ - this->levelBuffer.blit_topleft(i.getTopLeft(), i.getSceneryBuffer(i.getSceneryType())); + this->levelBuffer.blit_topleft(i.getTopLeft(), i.getSprite()); } - this->levelBuffer.blit_topleft(this->player.getTopLeft(), this->player.getBuffer()); + this->levelBuffer.blit_topleft(this->player.getTopLeft(), this->player.getSprite()); for(auto & i : this->enemyVector){ if(i != nullptr) { auto hitTime = i->getHitTime(); if(hitTime > 0.0f) { - HitShader hs = { i->getCurrentSprite(), hitTime, HIT_TIME }; + HitShader hs = { i->getSprite(), hitTime, HIT_TIME }; this->levelBuffer.blit_topleft(i->getTopLeft(), hs); } else { - this->levelBuffer.blit_topleft(i->getTopLeft(), i->getCurrentSprite()); + this->levelBuffer.blit_topleft(i->getTopLeft(), i->getSprite()); } } } @@ -295,7 +295,7 @@ DynamicPixelBuffer const& Level::draw() /**Hauerch71498**/ for(auto & i : this->projectileVector){ if(i != nullptr){ - this->levelBuffer.blit_topleft({ static_cast<int>(i->getX()), static_cast<int>(i->getY()) }, i->getCurrentSprite());} + this->levelBuffer.blit_topleft({ static_cast<int>(i->getX()), static_cast<int>(i->getY()) }, i->getSprite());} } if(GameOverFlag) diff --git a/Level.hpp b/Level.hpp index 58f7f0147a023cfe52a7c9a73e32c2d6566c1fdd..cf47afa70f334ef25b5c7b4fca5cb04c2a224c1a 100644 --- a/Level.hpp +++ b/Level.hpp @@ -29,7 +29,7 @@ class Wall : public Entity public: Wall(int length, int thickness, Position const &pos, Orientation orientation); DynamicPixelBuffer constructWallBuffer(Orientation orientation, int length, int thickness); - DynamicPixelBuffer const& getWallBuffer(); + PixelBuffer const& getSprite() override; void setWallColor(Color color); private: @@ -46,7 +46,7 @@ class Scenery : public Entity { public: Scenery(Position const &pos, SceneryType type); - PixelBuffer const &getSceneryBuffer(SceneryType type); + PixelBuffer const& getSprite() override; SceneryType getSceneryType(); private: diff --git a/Projectile.hpp b/Projectile.hpp index 038cd935526e225ce37fb7359690f813bb72d760..efc685deb92d8207a8077140105c9adb4aa33bfc 100644 --- a/Projectile.hpp +++ b/Projectile.hpp @@ -11,7 +11,7 @@ public: virtual ~Projectile(); float getX(); float getY(); - virtual const PixelBuffer& getCurrentSprite() = 0; + virtual const PixelBuffer& getSprite() = 0; virtual bool doStep(FloatSeconds const & Frametime, Level &level) = 0; protected: int direction; diff --git a/Tank.cpp b/Tank.cpp index 50b8201b87a88002d26fc1566889f2c40d842a22..3adaee8ed3451f737965e52ad6998c6e10501c57 100644 --- a/Tank.cpp +++ b/Tank.cpp @@ -124,7 +124,7 @@ static StaticPixelBuffer<17,11> constexpr left[2] = { {" 101010101010101 "} }}} }; -const PixelBuffer& Tank::getCurrentSprite() +const PixelBuffer& Tank::getSprite() { switch ( direcion ) { @@ -157,22 +157,22 @@ bool Tank::checkmove(FloatSeconds const & Frametime, Level &level) switch (this->direcion) { case 1: //down - if(!level.checkCollision(this->topleft.X, this->topleft.Y - 3*Frametime.count(), this->getCurrentSprite().w(), this->getCurrentSprite().h())) + if(!level.checkCollision(this->topleft.X, this->topleft.Y - 3*Frametime.count(), this->getSprite().w(), this->getSprite().h())) {this->topleft.Y -= 3*Frametime.count(); return false;} else return true; break; case 2: - if(!level.checkCollision(this->topleft.X - 3*Frametime.count(), this->topleft.Y, this->getCurrentSprite().w(), this->getCurrentSprite().h())) + if(!level.checkCollision(this->topleft.X - 3*Frametime.count(), this->topleft.Y, this->getSprite().w(), this->getSprite().h())) {this->topleft.X -= 3*Frametime.count(); return false;} else return true; break; case 3: - if(!level.checkCollision(this->topleft.X + 3*Frametime.count(),this->topleft.Y, this->getCurrentSprite().w(), this->getCurrentSprite().h())) + if(!level.checkCollision(this->topleft.X + 3*Frametime.count(),this->topleft.Y, this->getSprite().w(), this->getSprite().h())) {this->topleft.X += 3*Frametime.count(); return false;} else return true; break; default: - if(!level.checkCollision(this->topleft.X, this->topleft.Y + 3*Frametime.count(), this->getCurrentSprite().w(), this->getCurrentSprite().h())) + if(!level.checkCollision(this->topleft.X, this->topleft.Y + 3*Frametime.count(), this->getSprite().w(), this->getSprite().h())) {this->topleft.Y += 3*Frametime.count(); return false;} else return true; break; diff --git a/Tank.hpp b/Tank.hpp index ea6af0ec65f9d480791aebb46876c2e984165644..32e2267407873b2ff83e8304b93ab75cb17580bc 100644 --- a/Tank.hpp +++ b/Tank.hpp @@ -12,7 +12,7 @@ public: void doStep(float PlayerX, float PlayerY, FloatSeconds const & Frametime, Level &level) override; int getScore() override; protected: - const PixelBuffer& getCurrentSprite() override; //Enemy braucht nur einer Darstellung + PixelBuffer const& getSprite() override; //void shoot() override; void move(FloatSeconds const & Frametime, Level &level) override; void turnToPlayer(float PlayerX, float PlayerY); diff --git a/Trooper.cpp b/Trooper.cpp index 5db35929821c53130f177fb7fc37590d77cd41e9..a9e95b6059309ba68467c489baebb7fe469a827c 100644 --- a/Trooper.cpp +++ b/Trooper.cpp @@ -107,7 +107,7 @@ static StaticPixelBuffer<5,9> constexpr right[2] = { {"1 11 "} }}} }; -const PixelBuffer& Trooper::getCurrentSprite() +const PixelBuffer& Trooper::getSprite() { switch ( direcion ) { @@ -139,7 +139,7 @@ void Trooper::changeDirection() bool Trooper::checkmove(FloatSeconds const & Frametime, Level &level) { - const auto &sprite = this->getCurrentSprite(); + const auto &sprite = this->getSprite(); switch (this->direcion) { case 1: //down diff --git a/Trooper.hpp b/Trooper.hpp index 50cf5d903ccb35d77e577598d69bbd1d6b19d6eb..32b7048c061cedc03388a659e19b93e84995395c 100644 --- a/Trooper.hpp +++ b/Trooper.hpp @@ -18,7 +18,7 @@ public: int getScore() override; protected: - const PixelBuffer& getCurrentSprite() override; //Enemy braucht nur einer Darstellung + PixelBuffer const& getSprite() override; void move(FloatSeconds const & Frametime, Level &level) override; void turnToPlayer(float PlayerX, float PlayerY); //Temporarly diff --git a/player.cpp b/player.cpp index 39e53b2e16b4c808711d83dfa063a49d76b98f53..80d32599293c3f375f749b5f1f7b40ea32ce9988 100644 --- a/player.cpp +++ b/player.cpp @@ -125,7 +125,7 @@ static StaticPixelBuffer<PLAYER_W, PLAYER_H> constexpr left[2] = { }}} }; -const PixelBuffer & Player:: getBuffer() +PixelBuffer const& Player::getSprite() { switch ( direction ) { @@ -179,7 +179,8 @@ void Player::move(Platform &p, FloatSeconds const & Frametime, Level &level) } } } - if(!level.checkCollision(topleft.X + deltaX, topleft.Y + deltaY, getBuffer().w(), getBuffer().h())) { + auto const &sprite = this->getSprite(); + if(!level.checkCollision(topleft.X + deltaX, topleft.Y + deltaY, sprite.w(), sprite.h())) { topleft.X+=deltaX; topleft.Y+=deltaY; @@ -201,7 +202,7 @@ void Player::shoot(Level &level) { if(timetillreload<0) { - const auto &sprite=this->getBuffer(); + auto const &sprite = this->getSprite(); switch ( this->direction ) { case 1: //front { diff --git a/player.hpp b/player.hpp index d72120c8b055bf31ef2725db4ac4e239199f204f..3e4a81f4d86c5602be56d79fd20f404370052bb0 100644 --- a/player.hpp +++ b/player.hpp @@ -19,7 +19,7 @@ protected: float animationtimer=0.0f; public: Player(float x, float y); - const PixelBuffer &getBuffer(); + PixelBuffer const& getSprite() override; void move(Platform &p, FloatSeconds const & Frametime, Level &level); void shoot(Level &level); }; diff --git a/playerprojectile.cpp b/playerprojectile.cpp index c243828253c505ee746a69c12378db256027d6c6..6c56438808ae33dd2ab846b7cad80c61968a8ac6 100644 --- a/playerprojectile.cpp +++ b/playerprojectile.cpp @@ -12,14 +12,14 @@ static StaticPixelBuffer<3,3> constexpr Psprite= { {"666"}, {" 6 "} }}}; -const PixelBuffer& PlayerProjectile::getCurrentSprite() +const PixelBuffer& PlayerProjectile::getSprite() { return Psprite; }; bool PlayerProjectile::move(FloatSeconds const & Frametime, Level &level) { int speed = 15; - const auto &sprite = this->getCurrentSprite(); + const auto &sprite = this->getSprite(); switch (this->direction) { case 1: //down diff --git a/playerprojectile.hpp b/playerprojectile.hpp index 9b59750141ce339a3957679ef67f5d4ddebdf99c..425aaae0f3071f398115531a54240b73aa36079b 100644 --- a/playerprojectile.hpp +++ b/playerprojectile.hpp @@ -6,7 +6,7 @@ class PlayerProjectile: public Projectile public: PlayerProjectile(float x, float y, int direction); bool doStep(FloatSeconds const & Frametime, Level &level) override; - const PixelBuffer& getCurrentSprite() override; + PixelBuffer const& getSprite() override; protected: bool move(FloatSeconds const & Frametime, Level &level) override;