123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263 |
- #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;
- }
|