#include "Sturm.h" #include "Spieler.h" #include "Spiel.h" SturmEffect::SturmEffect( Spieler *zSpieler, Richtung r ) : Effect( zSpieler, 2.f + ( 2.f / 100.f ) * zSpieler->getAbklingZeitVerringerung() ) { this->r = r; } SturmEffect::~SturmEffect() {} bool SturmEffect::istSpielerBeweglich( Richtung r ) const { return false; } bool SturmEffect::istSpielerVerwundbar( Richtung r ) const { return r != this->r; } void SturmEffect::move( Richtung ri, double time ) { if( r != ri ) return; switch( r ) { case OBEN: zSpieler->setY( zSpieler->getY() - (75 + zSpieler->getLaufTempo()) * (float)time ); break; case RECHTS: zSpieler->setX( zSpieler->getX() + ( 75 + zSpieler->getLaufTempo() ) * (float)time ); break; case UNTEN: zSpieler->setY( zSpieler->getY() + ( 75 + zSpieler->getLaufTempo() ) * (float)time ); break; case LINKS: zSpieler->setX( zSpieler->getX() - ( 75 + zSpieler->getLaufTempo() ) * (float)time ); break; default: break; } } bool SturmEffect::tick( double time, Spiel *zSpiel ) { for( auto s = zSpiel->getSpieler(); s; s++ ) { if( s->zTeam() != zSpieler->zTeam() ) { if( s->intersectsWith( zSpieler ) ) s->nimmSchaden( 100 * (float)time, zSpieler, r, zSpiel ); } } return Effect::tick( time, zSpiel ); } bool SturmEffect::istGegenstandErlaubt( GegenstandTyp typ ) const { return typ != ROLLE && typ != ENTERHAKEN; }