123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657 |
- #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
|