#include "Tirs_Gest.h" Tirs_Gest::Tirs_Gest(SDL_Surface* blueTir, SDL_Surface* redTir) :m_tirs(0), m_blueImg(blueTir), m_redImg(redTir) { SDL_SetColorKey(m_blueImg, SDL_SRCCOLORKEY, SDL_MapRGBA(m_blueImg->format, 0, 0, 0, 255)); SDL_SetColorKey(m_redImg, SDL_SRCCOLORKEY, SDL_MapRGBA(m_redImg->format, 0, 0, 0, 255)); } Tirs_Gest::~Tirs_Gest() { // Nettoyage while ( !m_tirs.empty() ) { delete m_tirs.front(); m_tirs.pop_front(); } } void Tirs_Gest::allDisplay(const Vec &lookAt, SDL_Surface* screen) { // Nettoyage while ( !m_tirs.empty() && !m_tirs.front()->exist() ) { delete m_tirs.front(); m_tirs.pop_front(); } // Affichage for (unsigned int i(0); i < m_tirs.size(); i++) m_tirs[i]->afficher(lookAt, screen); } void Tirs_Gest::allMove() const { for (unsigned int i(0); i < m_tirs.size(); i++) m_tirs[i]->move(); } void Tirs_Gest::addTir(Vec pos, Vec visee, int degats, bool allie) { SDL_Surface* tirImg(0x0); m_tirs.push_back(0x0); if ( allie ) tirImg = m_blueImg; else tirImg = m_redImg; m_tirs.back() = new Tir(tirImg, pos, visee, degats, allie); } int Tirs_Gest::encaisser(Vec pos, bool allie) const { int somme(0); for (unsigned int i(0); i < m_tirs.size(); i++) somme += m_tirs[i]->encaisser(pos, allie); return somme; }