123456789101112131415161718192021222324252627282930313233343536373839404142434445464748 |
- #include "Tir.h"
- Tir::Tir(SDL_Surface* img, Vec pos, Vec visee, int degats, bool allie)
- :Affichable(img), m_degats(degats), m_exist(true), m_vitesse(20.0f), m_allie(allie)
- {
- m_dir = visee;
- m_dir.normaliser();
- m_pos = pos + m_dir * 30.0f;
- }
- Tir::~Tir()
- {}
- void Tir::afficher(const Vec &lookAt, SDL_Surface* screen)
- {
- if ( m_exist ) Affichable::afficher(lookAt, screen);
- }
- void Tir::move()
- {
- m_pos += m_dir * m_vitesse;
- if (m_pos.getX() > 4500 || m_pos.getX() < -1500 || m_pos.getY() > 1500 || m_pos.getY() < -1500)
- m_exist = false;
- }
- int Tir::encaisser(const Vec &pos, bool allie)
- {
- // Si le tir ne collisionne pas
- if ( !m_exist ) return 0;// Déjà encaissé
- if ( m_allie==allie ) return 0;// On ne touche pas les amis
- // Mesure distance
- Vec distance = m_pos - pos;
- if (distance.norme() < 32.0f)
- {
- // Impact
- m_exist = false;
- return m_degats;
- }
- // Pas touché
- else return 0;
- }
- bool Tir::exist() const
- {
- return m_exist;
- }
|