Rolle.cpp 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. #include "Rolle.h"
  2. #include "Spieler.h"
  3. RolleEffect::RolleEffect( ResourceRegistry *zResources, Spieler *zSpieler, Richtung r )
  4. : Effect( zSpieler, 2.f + ( 2.f / 100.f ) * zSpieler->getAbklingZeitVerringerung() )
  5. {
  6. this->r = r;
  7. annimation = 0;
  8. if( r == LINKS )
  9. annimation = zResources->getResource( R_ROLLE_LINKS, zSpieler->getFarbe() );
  10. if( r == RECHTS )
  11. annimation = zResources->getResource( R_ROLLE_RECHTS, zSpieler->getFarbe() );
  12. if( r == OBEN )
  13. annimation = zResources->getResource( R_ROLLE_OBEN, zSpieler->getFarbe() );
  14. if( r == UNTEN )
  15. annimation = zResources->getResource( R_ROLLE_UNTEN, zSpieler->getFarbe() );
  16. effectImage = zResources->zResource( R_ROLLE, 0 )->getImage( 0 );
  17. }
  18. RolleEffect::~RolleEffect()
  19. {
  20. if( annimation )
  21. annimation->release();
  22. }
  23. bool RolleEffect::istSpielerBeweglich( Richtung r ) const
  24. {
  25. return false;
  26. }
  27. bool RolleEffect::istSpielerVerwundbar( Richtung r ) const
  28. {
  29. return r == MITTE;
  30. }
  31. void RolleEffect::move( Richtung ri, double time )
  32. {
  33. if( r != ri )
  34. return;
  35. switch( r )
  36. {
  37. case OBEN:
  38. zSpieler->setY( zSpieler->getY() - ( 75 + zSpieler->getLaufTempo() ) * (float)time );
  39. break;
  40. case RECHTS:
  41. zSpieler->setX( zSpieler->getX() + ( 75 + zSpieler->getLaufTempo() ) * (float)time );
  42. break;
  43. case UNTEN:
  44. zSpieler->setY( zSpieler->getY() + ( 75 + zSpieler->getLaufTempo() ) * (float)time );
  45. break;
  46. case LINKS:
  47. zSpieler->setX( zSpieler->getX() - ( 75 + zSpieler->getLaufTempo() ) * (float)time );
  48. break;
  49. default:
  50. break;
  51. }
  52. }
  53. bool RolleEffect::istGegenstandErlaubt( GegenstandTyp typ ) const
  54. {
  55. return typ != STURM && typ != ENTERHAKEN;
  56. }
  57. Resource *RolleEffect::getCurrentResource()
  58. {
  59. return annimation ? dynamic_cast<Resource *>( annimation->getThis() ) : 0;
  60. }