#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; }