#include "Enemyprojectile.hpp" #include "Platform.hpp" #include "Level.hpp" EnemyProjectile::EnemyProjectile(float x, float y, enum direction dir) : Projectile(x,y,dir) { }; static StaticPixelBuffer<3,3> constexpr Psprite= { {{ {" 2 "}, {"222"}, {" 2 "} }}}; const PixelBuffer& EnemyProjectile::getSprite() { return Psprite; }; bool EnemyProjectile::move(FloatSeconds const & Frametime, Level &level) { int speed = 15; const auto &sprite = this->getSprite(); switch (this->dir) { case direction::BACK: //down if(!level.checkCollision(this->x, this->y - 3*Frametime.count(), sprite.w(), sprite.h())) { this->y -= speed*Frametime.count(); if(level.HitEnemy(this->x, this->y, sprite.w(), sprite.h()) || level.HitObstacle(this->x, this->y, ENEMY_PROJECTILE_COLOR, sprite.w(), sprite.h())) { //Player hit return false; } } else { return false; } break; break; case direction::LEFT: if(!level.checkCollision(this->x - 3*Frametime.count(), this->y, sprite.w(), sprite.h())) { this->x -= speed*Frametime.count(); if(level.HitEnemy(this->x, this->y, sprite.w(), sprite.h()) || level.HitObstacle(this->x, this->y, ENEMY_PROJECTILE_COLOR, sprite.w(), sprite.h())) { //Player hit return false; } } else { return false; } break; break; case direction::RIGHT: if(!level.checkCollision(this->x + 3*Frametime.count(),this->y, sprite.w(), sprite.h())) { this->x += speed*Frametime.count(); if(level.HitEnemy(this->x, this->y, sprite.w(), sprite.h()) || level.HitObstacle(this->x, this->y, ENEMY_PROJECTILE_COLOR, sprite.w(), sprite.h())) { //Player hit return false; } } else { return false; } break; break; default: if(!level.checkCollision(this->x, this->y + 3*Frametime.count(), sprite.w(), sprite.h())) { this->y += speed*Frametime.count(); if(level.HitEnemy(this->x, this->y, sprite.w(), sprite.h()) || level.HitObstacle(this->x, this->y, ENEMY_PROJECTILE_COLOR, sprite.w(), sprite.h())) { //Player hit return false; } } else { return false; } break; } return true; }; bool EnemyProjectile::doStep(const FloatSeconds &Frametime, Level &level) { return move(Frametime,level); };