Select Git revision
-
Uwe Wienkop authoredUwe Wienkop authored
Enemyprojectile.cpp 3.00 KiB
#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);
};