PluieFlamme.cpp 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. #include "PluieFlamme.h"
  2. PluieFlamme::PluieFlamme(DoubleAxe origine,int nbPop,int power,
  3. float graviteY,int rayon,
  4. Uint32 couleur, float resistance)
  5. :m_graviteY(0,graviteY),m_rayon(rayon),m_couleur(couleur),m_resist(resistance)
  6. {
  7. //Créations des particules
  8. Vecteur depart(origine.x,origine.y);
  9. Vecteur direction(1.0,0.0);
  10. for (int i(0); i<nbPop; i++)
  11. {
  12. //Positions
  13. m_position.push_back(depart);//Position de pop
  14. std::cout << "Rotate result ("<<direction.getX()<<";"<<direction.getY()<<")"<<std::endl;//Debug
  15. direction.rotateD(360.0/nbPop);
  16. m_force.push_back(direction*power);
  17. }
  18. }///PluieFlamme
  19. void PluieFlamme::deplacement()
  20. {
  21. for (Uint32 i(0); i<m_position.size(); i++)
  22. {
  23. m_position[i]+=m_force[i];
  24. m_force[i]+=m_graviteY;
  25. m_force[i]*=m_resist;
  26. }
  27. }///PluieFlamme
  28. void PluieFlamme::dessiner(SDL_Surface* support)
  29. {
  30. if (!m_position.empty())
  31. for (Uint32 i(0); i<m_position.size(); i++)
  32. blitFeuFollet(support, m_position[i].getX(), m_position[i].getY(), m_rayon, m_couleur, 128);
  33. }///PluieFlamme
  34. bool PluieFlamme::estFini(SDL_Surface* support)
  35. {
  36. //Combien de billes sont en dehors ?
  37. Uint32 inventaire(0);
  38. for (Uint32 i(0); i<m_position.size(); i++)
  39. {
  40. if( (m_position[i].getX()>support->w || m_position[i].getX()<0
  41. || m_position[i].getY()>support->h || m_position[i].getY()<0)
  42. && !m_position.empty())
  43. inventaire++;
  44. }
  45. //Sont elles toutes en dehors ?
  46. if (inventaire==m_position.size())
  47. return true;
  48. else
  49. return false;
  50. }///PluieFlamme