Sturm.cpp 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. #include "Sturm.h"
  2. #include "Spieler.h"
  3. #include "Spiel.h"
  4. SturmEffect::SturmEffect( Spieler *zSpieler, Richtung r )
  5. : Effect( zSpieler, 2.f + ( 2.f / 100.f ) * zSpieler->getAbklingZeitVerringerung() )
  6. {
  7. this->r = r;
  8. }
  9. SturmEffect::~SturmEffect()
  10. {}
  11. bool SturmEffect::istSpielerBeweglich( Richtung r ) const
  12. {
  13. return false;
  14. }
  15. bool SturmEffect::istSpielerVerwundbar( Richtung r ) const
  16. {
  17. return r != this->r;
  18. }
  19. void SturmEffect::move( Richtung ri, double time )
  20. {
  21. if( r != ri )
  22. return;
  23. switch( r )
  24. {
  25. case OBEN:
  26. zSpieler->setY( zSpieler->getY() - (75 + zSpieler->getLaufTempo()) * (float)time );
  27. break;
  28. case RECHTS:
  29. zSpieler->setX( zSpieler->getX() + ( 75 + zSpieler->getLaufTempo() ) * (float)time );
  30. break;
  31. case UNTEN:
  32. zSpieler->setY( zSpieler->getY() + ( 75 + zSpieler->getLaufTempo() ) * (float)time );
  33. break;
  34. case LINKS:
  35. zSpieler->setX( zSpieler->getX() - ( 75 + zSpieler->getLaufTempo() ) * (float)time );
  36. break;
  37. default:
  38. break;
  39. }
  40. }
  41. bool SturmEffect::tick( double time, Spiel *zSpiel )
  42. {
  43. for( auto s = zSpiel->getSpieler(); s; s++ )
  44. {
  45. if( s->zTeam() != zSpieler->zTeam() )
  46. {
  47. if( s->intersectsWith( zSpieler ) )
  48. s->nimmSchaden( 100 * (float)time, zSpieler, r, zSpiel );
  49. }
  50. }
  51. return Effect::tick( time, zSpiel );
  52. }
  53. bool SturmEffect::istGegenstandErlaubt( GegenstandTyp typ ) const
  54. {
  55. return typ != ROLLE && typ != ENTERHAKEN;
  56. }