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