Rolle.cpp 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  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. }
  17. RolleEffect::~RolleEffect()
  18. {
  19. if( annimation )
  20. annimation->release();
  21. }
  22. bool RolleEffect::istSpielerBeweglich( Richtung r ) const
  23. {
  24. return false;
  25. }
  26. bool RolleEffect::istSpielerVerwundbar( Richtung r ) const
  27. {
  28. return r == MITTE;
  29. }
  30. void RolleEffect::move( Richtung ri, double time )
  31. {
  32. if( r != ri )
  33. return;
  34. switch( r )
  35. {
  36. case OBEN:
  37. zSpieler->setY( zSpieler->getY() - ( 75 + zSpieler->getLaufTempo() ) * (float)time );
  38. break;
  39. case RECHTS:
  40. zSpieler->setX( zSpieler->getX() + ( 75 + zSpieler->getLaufTempo() ) * (float)time );
  41. break;
  42. case UNTEN:
  43. zSpieler->setY( zSpieler->getY() + ( 75 + zSpieler->getLaufTempo() ) * (float)time );
  44. break;
  45. case LINKS:
  46. zSpieler->setX( zSpieler->getX() - ( 75 + zSpieler->getLaufTempo() ) * (float)time );
  47. break;
  48. default:
  49. break;
  50. }
  51. }
  52. bool RolleEffect::istGegenstandErlaubt( GegenstandTyp typ ) const
  53. {
  54. return typ != STURM && typ != ENTERHAKEN;
  55. }
  56. Resource *RolleEffect::getCurrentResource()
  57. {
  58. return annimation ? annimation->getThis() : 0;
  59. }