Missile.cpp 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. #include "Missile.h"
  2. Missile::Missile(SDL_Surface *screen, Collisions *gestionnaireCollisons, Sounderer *mediaPlayer, SDL_Surface* apparence)
  3. : Power(screen, gestionnaireCollisons, mediaPlayer, apparence)
  4. {
  5. }///Constructeur
  6. Missile::~Missile()
  7. {
  8. }///Destructeur
  9. void Missile::usePower(int orientation, int &x, int &y, int const &ID)
  10. {
  11. //[0] Bruitage
  12. m_mediaPlayer->play("Missile");
  13. //[1] Orientation de la trajectoire du missile
  14. int posX(x);
  15. int posY(y);
  16. int ajoutX(0);
  17. int ajoutY(0);
  18. convertDir(orientation, ajoutX, ajoutY);
  19. //[2] Parcours du missile dans le vide
  20. while (m_gestionnaireCollisions->tester(posX,posY) == VIDE)
  21. {
  22. posX += ajoutX;
  23. posY += ajoutY;
  24. }
  25. //[3] Perforation de toute l'épaisseur
  26. while (m_gestionnaireCollisions->tester(posX,posY) != VIDE)
  27. {
  28. m_gestionnaireCollisions->enlever(posX,posY);
  29. posX += ajoutX;
  30. posY += ajoutY;
  31. }
  32. //[END]
  33. m_used = true;
  34. }///usePower
  35. void Missile::postMortemPower(int const &x, int const &y, int const &ID)
  36. {
  37. //[0] Bruitage
  38. m_mediaPlayer->play("Missile");
  39. //[1] Explosion
  40. for (int i(-1); i<=1; i++)
  41. for (int j(-1); j<=1; j++)
  42. if (i != 0 || j != 0) m_gestionnaireCollisions->enlever(x+i, y+j);
  43. //[end]
  44. m_used = true;
  45. }///postMortemPower