#include "PluieFlamme.h" PluieFlamme::PluieFlamme(DoubleAxe origine,int nbPop,int power, float graviteY,int rayon, Uint32 couleur, float resistance) :m_graviteY(0,graviteY),m_rayon(rayon),m_couleur(couleur),m_resist(resistance) { //Créations des particules Vecteur depart(origine.x,origine.y); Vecteur direction(1.0,0.0); for (int i(0); i<nbPop; i++) { //Positions m_position.push_back(depart);//Position de pop std::cout << "Rotate result ("<<direction.getX()<<";"<<direction.getY()<<")"<<std::endl;//Debug direction.rotateD(360.0/nbPop); m_force.push_back(direction*power); } }///PluieFlamme void PluieFlamme::deplacement() { for (Uint32 i(0); i<m_position.size(); i++) { m_position[i]+=m_force[i]; m_force[i]+=m_graviteY; m_force[i]*=m_resist; } }///PluieFlamme void PluieFlamme::dessiner(SDL_Surface* support) { if (!m_position.empty()) for (Uint32 i(0); i<m_position.size(); i++) blitFeuFollet(support, m_position[i].getX(), m_position[i].getY(), m_rayon, m_couleur, 128); }///PluieFlamme bool PluieFlamme::estFini(SDL_Surface* support) { //Combien de billes sont en dehors ? Uint32 inventaire(0); for (Uint32 i(0); i<m_position.size(); i++) { if( (m_position[i].getX()>support->w || m_position[i].getX()<0 || m_position[i].getY()>support->h || m_position[i].getY()<0) && !m_position.empty()) inventaire++; } //Sont elles toutes en dehors ? if (inventaire==m_position.size()) return true; else return false; }///PluieFlamme