Rolle.cpp 1.7 KB

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