#include "Helico.h"

Helico::Helico(SDL_Surface* ecran) : Ennemy(0,ecran),m_vitesse(5+takeRand(5))
{
	m_helico = SDL_LoadBMP("Images/Helicopter.bmp");
	SDL_SetColorKey(m_helico,SDL_SRCCOLORKEY,SDL_MapRGB(m_helico->format,255,255,255));//On met le fond (blanc) en invisible !
	m_positionHelico.x=takeRand(620);
	m_positionHelico.y=40+takeRand(350);
}

Helico::Helico(SDL_Surface* ecran,int vie) : Ennemy(0,ecran,vie),m_vitesse(5+takeRand(5))
{
	m_helico=SDL_LoadBMP("Images/Helicopter.bmp");
	SDL_SetColorKey(m_helico,SDL_SRCCOLORKEY,SDL_MapRGB(m_helico->format,255,255,255));//On met le fond (blanc) en invisible !
}

Helico::Helico(SDL_Surface* ecran, int vie, int antiLatence) : Ennemy(0,ecran,vie),m_vitesse(5+takeRand(5,antiLatence))
{
	m_helico = SDL_LoadBMP("Images/Helicopter.bmp");
	SDL_SetColorKey(m_helico,SDL_SRCCOLORKEY,SDL_MapRGB(m_helico->format,255,255,255));//On met le fond (blanc) en invisible !
	m_positionHelico.x=takeRand(620,antiLatence);
	m_positionHelico.y=40+takeRand(350,antiLatence);
}

Helico::~Helico()
{
	SDL_FreeSurface(m_helico);
}

void Helico::afficher()
{
	if (m_positionHelico.x<640)
	{
		m_positionHelico.x=m_positionHelico.x+=m_vitesse;
	}
	else
	{
		m_positionHelico.x=0;
	}
	SDL_BlitSurface(m_helico,NULL,m_ecran,&m_positionHelico);

	if (m_tempsFire==0)
	{
		if (m_positionHelico.x+64>m_xFire&&m_xFire>m_positionHelico.x && m_positionHelico.y+32>m_yFire&&m_yFire>m_positionHelico.y)
		{
			switch(m_typeFire)
			{
				case 0:
					this->recevoirDegats(11);
					break;
				case 1:
					this->recevoirDegats(5);
					break;
				case 2:
					this->recevoirDegats(3);
					break;
			}//Switch
		}//Verification position
	}//Si tir
}

///////////////////////////////////////////////////////////////////////////////////////////////////

BossOne::BossOne(SDL_Surface* ecran,Joueur* cible) : Ennemy(cible,ecran,100)
{
	m_bossOne=SDL_LoadBMP("Images/HelicopterBossUn.bmp");
	m_tir=SDL_LoadBMP("Images/HelicopterBossUnTir.bmp");
	SDL_SetColorKey(m_bossOne,SDL_SRCCOLORKEY,SDL_MapRGB(m_bossOne->format,255,255,255));
	SDL_SetColorKey(m_tir,SDL_SRCCOLORKEY,SDL_MapRGB(m_tir->format,255,255,255));
	m_positionBoss.x=100;
	m_positionBoss.y=50;
	m_vaVersLeBas=true;
	m_vaVersLaDroite=true;
	m_armeCycle=100;
}

BossOne::~BossOne()
{
	SDL_FreeSurface(m_bossOne);
}

void BossOne::afficher()
{
	//Deplacement
	if (m_vaVersLeBas)
	{
		m_positionBoss.y++;
		if (m_positionBoss.y>324)//480-76-80
		{
			m_vaVersLeBas=false;
		}
	}
	else
	{
		m_positionBoss.y--;
		if (m_positionBoss.y<0)
		{
			m_vaVersLeBas=true;
		}
	}
	if (m_vaVersLaDroite)
	{
		m_positionBoss.x++;
		if (m_positionBoss.x>512)
		{
			m_vaVersLaDroite=false;
		}
	}
	else
	{
		m_positionBoss.x--;
		if (m_positionBoss.x<0)
		{
			m_vaVersLaDroite=true;
		}
	}
	//Collage
	SDL_BlitSurface(m_bossOne,NULL,m_ecran,&m_positionBoss);
	//Gestion des tirs du joueur
	if (m_tempsFire==0)
	{
		if (m_positionBoss.x+128>m_xFire&&m_xFire>m_positionBoss.x && m_positionBoss.y+80>m_yFire&&m_yFire>m_positionBoss.y)
		{
			this->recevoirDegats(10);
		}
	}
	//Gestion des tirs d'helico
	if (!takeRand(50,m_armeCycle))
	{
		m_armeCycle=0;
		m_cible->recevoirDegats(1);
	}
	if (m_armeCycle<5)
	{
		SDL_Rect positionTir;
		positionTir.x=m_positionBoss.x+m_bossOne->w/2-m_tir->w/2;
		positionTir.y=m_positionBoss.y+m_bossOne->h/2-m_tir->h/2;
		SDL_BlitSurface(m_tir,NULL,m_ecran,&positionTir);
	}
	m_armeCycle++;
}