/*****************************/
/* Inside The Machine - MKS  */
/*****************************/

#include "eBall.h"
#include "../WorldManager.h"

eBall::eBall()
{
	real = true;
	stat = false;
	toDelete = false;
	sensH = true;

	//Parametrage des hitboxes
	rect.x1 = 0;
	rect.y1 = 0;
	rect.x2 = 64;
	rect.y2 = 64;
	angle = 0;
	timer = 0;
	isEnd = false;
}
   	
eBall::~eBall()
{
}

void eBall::Load()
{
   //Chargement du spritesheet
   ulSetTransparentColor(RGB15(31, 0, 31));
	spr.assign(worldMan->resMan->LoadImage("efs:/Boss2_Ball.png", UL_IN_VRAM, UL_PF_PAL4));
	ulDisableTransparentColor();
	spr.setRotCenter(8, 8);
	spr.scale(64, 64);
}
   
void eBall::Draw(int layer)
{
   //On le perso
   /*if(actif && layer == 0)
   {*/
      //On affiche le sprite
   	spr.setXY(x_screen, y_screen);
   	spr.rotate(angle);
   	spr.draw();
	/*}*/
}
   
void eBall::Update()
{
   //Calcul de la position écran de l'entité
   x_screen = UNFIX(x - FIX(worldMan->curLevel->map->scrollX));
	y_screen = UNFIX(y - FIX(worldMan->curLevel->map->scrollY));
	
	//On vérifie si ball est actif
   /*if(x_screen < -32 || x_screen > (256+32) || y_screen < -16 || y_screen > (192))
   	actif = false;
   else
   	actif = true;*/
   actif = true;
   
   /*if(actif)
   {}*/
   
   //On change l'angle de rotation
   if(!isEnd)
   	angle++;
   if(angle > 512)
   	angle = 0;
	
	//On se déplace selon un timer
	if(worldMan->hero->isCanMove)
	{
		timer++;
		if(timer < 240)
			x += 384;
		if(timer >= 240 && timer < 420)
		{
			x += 384;
			y += 384;  
		}
		if(timer >= 420 && timer < 490)
		{
			x -= 384;
			y += 384;  
		}
		if(timer >= 490 && timer < 720)
		{
			x -= 384;
		}
		if(timer >= 720 && timer < 960)
		{
			y += 256;
		}
		if(timer >= 970 && timer < 1230)
		{
			x += 384;
		}
		if(timer >= 1230 && timer < 1245)
		{
			y += 384;
			isEnd = true;
		}      
	}	
	
}

   
void eBall::CheckInteractions()
{
	//Collisions avec le personnage (on enlève de la vie)  if(worldMan->hero->dontMoveTime == -1)		  
	if(!isEnd && RectCollision(UNFIX(x)-32, UNFIX(y)-32, &rect, UNFIX(worldMan->hero->x), UNFIX(worldMan->hero->y), &worldMan->hero->rect) )
	{
	   if(worldMan->hero->dontHitTime == -1)
	   {
			worldMan->hero->dontHitTime = 30;
			worldMan->hero->dontMoveTime = 3;
			worldMan->hero->life -= 64;
		}			 
	}   
}   

void eBall::Destroy()
{

}
