|
@@ -0,0 +1,54 @@
|
|
|
+#include "Sturm.h"
|
|
|
+#include "Spieler.h"
|
|
|
+#include "Spiel.h"
|
|
|
+
|
|
|
+SturmEffect::SturmEffect( Spieler *zSpieler, Richtung r )
|
|
|
+ : Effect( zSpieler, (int)( 2.f + ( 2.f / 100.f ) * zSpieler->getAbklingZeitVerringerung() ) )
|
|
|
+{
|
|
|
+ this->r = r;
|
|
|
+}
|
|
|
+
|
|
|
+SturmEffect::~SturmEffect()
|
|
|
+{}
|
|
|
+
|
|
|
+bool SturmEffect::istSpielerBeweglich( Richtung r )
|
|
|
+{
|
|
|
+ return false;
|
|
|
+}
|
|
|
+
|
|
|
+bool SturmEffect::istSpielerVerwundbar( Richtung r )
|
|
|
+{
|
|
|
+ return r != this->r;
|
|
|
+}
|
|
|
+
|
|
|
+void SturmEffect::move( double time )
|
|
|
+{
|
|
|
+ switch( r )
|
|
|
+ {
|
|
|
+ case OBEN:
|
|
|
+ zSpieler->setY( zSpieler->getY() - (75 + zSpieler->getLaufTempo()) * time );
|
|
|
+ break;
|
|
|
+ case RECHTS:
|
|
|
+ zSpieler->setX( zSpieler->getX() + ( 75 + zSpieler->getLaufTempo() ) * time );
|
|
|
+ break;
|
|
|
+ case UNTEN:
|
|
|
+ zSpieler->setY( zSpieler->getY() + ( 75 + zSpieler->getLaufTempo() ) * time );
|
|
|
+ break;
|
|
|
+ case LINKS:
|
|
|
+ zSpieler->setX( zSpieler->getX() - ( 75 + zSpieler->getLaufTempo() ) * time );
|
|
|
+ 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 * time, zSpieler, r, zSpiel );
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return Effect::tick( time, zSpiel );
|
|
|
+}
|