Tir.cpp 1.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. #include "Tir.h"
  2. Tir::Tir(SDL_Surface* img, Vec pos, Vec visee, int degats, bool allie)
  3. :Affichable(img), m_degats(degats), m_exist(true), m_vitesse(20.0f), m_allie(allie)
  4. {
  5. m_dir = visee;
  6. m_dir.normaliser();
  7. m_pos = pos + m_dir * 30.0f;
  8. }
  9. Tir::~Tir()
  10. {}
  11. void Tir::afficher(const Vec &lookAt, SDL_Surface* screen)
  12. {
  13. if ( m_exist ) Affichable::afficher(lookAt, screen);
  14. }
  15. void Tir::move()
  16. {
  17. m_pos += m_dir * m_vitesse;
  18. if (m_pos.getX() > 4500 || m_pos.getX() < -1500 || m_pos.getY() > 1500 || m_pos.getY() < -1500)
  19. m_exist = false;
  20. }
  21. int Tir::encaisser(const Vec &pos, bool allie)
  22. {
  23. // Si le tir ne collisionne pas
  24. if ( !m_exist ) return 0;// Déjà encaissé
  25. if ( m_allie==allie ) return 0;// On ne touche pas les amis
  26. // Mesure distance
  27. Vec distance = m_pos - pos;
  28. if (distance.norme() < 32.0f)
  29. {
  30. // Impact
  31. m_exist = false;
  32. return m_degats;
  33. }
  34. // Pas touché
  35. else return 0;
  36. }
  37. bool Tir::exist() const
  38. {
  39. return m_exist;
  40. }