Brand.cpp 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. #include "Brand.h"
  2. #include "Spieler.h"
  3. BrandEffekt::BrandEffekt( ResourceRegistry *zResources, Spieler *zVerursacher, Spieler *zOpfer )
  4. : Effect( zOpfer, B_DURATION )
  5. {
  6. this->zVerursacher = zVerursacher;
  7. laufTempoDecrease = B_MOVEMENT_DECREASE <= zSpieler->getLaufTempo() ? B_MOVEMENT_DECREASE : zSpieler->getLaufTempo();
  8. zSpieler->setLaufTempo( zSpieler->getLaufTempo() - laufTempoDecrease );
  9. annimation = zResources->getResource( R_BRAND, 0 );
  10. currentImage = 0;
  11. nextImage = 0.075;
  12. }
  13. BrandEffekt::~BrandEffekt()
  14. {
  15. zSpieler->setLaufTempo( zSpieler->getLaufTempo() + laufTempoDecrease );
  16. annimation->release();
  17. }
  18. bool BrandEffekt::tick( double time, Spiel *zSpiel )
  19. {
  20. float damage = B_MIN_DPS * (float)time;
  21. zSpieler->nimmSchaden( damage, zVerursacher, MITTE, zSpiel );
  22. nextImage -= time;
  23. if( nextImage <= 0 )
  24. {
  25. nextImage += 0.075;
  26. currentImage++;
  27. if( currentImage >= annimation->getImageCount() )
  28. currentImage = 0;
  29. }
  30. return Effect::tick( time, zSpiel );
  31. }
  32. void BrandEffekt::renderSpieler( Bild &rObj )
  33. {
  34. if( rObj.setDrawOptions( (int)zSpieler->getX(), (int)zSpieler->getY(), (int)zSpieler->getWidth(), (int)zSpieler->getHeight() ) )
  35. {
  36. rObj.alphaBildSkall( 0, 0, (int)zSpieler->getWidth(), (int)zSpieler->getHeight(), *annimation->zImage( currentImage ) );
  37. rObj.releaseDrawOptions();
  38. }
  39. }