#include <SDL/SDL.h>
#include <stdio.h>
#include <stdlib.h>
#include "Jugador.h"


Jugador::Jugador(char * path)
{
	//imagen=IMG_Load (path);
	//imagen=IMG_Load(path);
	int colorkey;
	
	imagen=SDL_LoadBMP(path);
	if (imagen == NULL)
	{
		printf ("La imagen no se ha podido cargar correctamente  /n");		
	}
	colorkey = SDL_MapRGB(imagen->format,255,255,255);
	SDL_SetColorKey(imagen,SDL_SRCCOLORKEY,colorkey);
	posX=posicion.x=20;
	posY=posicion.y=300;
	posicion.w=imagen->w;
    posicion.h=imagen->h;
	
	aba=arri=izq=der=false;
	
	speedX=SPEEDX;
	speedY=SPEEDY;
}

Jugador::~Jugador()
{
	SDL_FreeSurface(imagen);
}

void Jugador::Actualizar(float time)
{	
	anterior = posicion;
	if (der)
	{		
		posX += speedX*time;
		posicion.x= posX;		
		if (colisionX())
		{
			posX -= speedX*time;			
			posicion.x=posX;
		}
		
	}		
	if (izq)
	{
		posX -= speedX*time;
		posicion.x=posX;
		if (colisionX())
		{
			posX+=speedX*time;			
			posicion.x=posX;
		}		
	}
	if (aba)
	{
		posY += speedY*time;
		posicion.y=posY;
		if (colisionY())
		{
			posY-=speedY*time;			
			posicion.y=posY;
		}		
	}
	if (arri)
	{	
		posY -= speedY*time;
		posicion.y=posY;
		if (colisionY())
		{
			posY+=speedY*time;			
			posicion.y=posY;
		}		
	}	
}

void Jugador::setArri(bool cond)
{
	arri=cond;
}

void Jugador::setAba(bool cond)
{
	aba=cond;
}

void Jugador::setDer(bool cond)
{
	der=cond;
}

void Jugador::setIzq(bool cond)
{
	izq=cond;
}

bool Jugador::colisionX ()
//Mira a ver si hay colision en el eje X
{		
	if ((posicion.x<=1) || ((posicion.x) >= (640)-(posicion.w)))
		return true;		
	return false;
}
	
bool Jugador::colisionY ()
//Mira a ver si hay colision en el eje Y
{		
	if ((posicion.y<=1) || ((posicion.y) >= (480)-(posicion.h)))
		return true;		
	return false;
}
