
#include <oslib/oslib.h>


//declaration
extern OSL_OBJECT *zelda, *zou ;
extern OSL_FONT *maFonte;


//define pour les annimations
#define ZELDA_HAUT 50*2
#define ZELDA_BAS 50*3
#define ZELDA_GAUCHE 50*1
#define ZELDA_DROITE 0

#define ZOU_HAUT 60*2
#define ZOU_BAS 60*3
#define ZOU_GAUCHE 60*1
#define ZOU_DROITE 0

void TouchecollisionSprites();


void collisionsprirtes()
{


	//declaration
	zelda = oslCreateSprite(oslLoadImageFile("media/zelda.png", OSL_IN_RAM, OSL_PF_5551),ZELDA_BAS, 3 ,50,50,12);
	zou = oslCreateSprite(oslLoadImageFile("media/zou.png", OSL_IN_RAM, OSL_PF_5551),ZOU_BAS, 3 ,56,60,15);

	oslAnimationPlay(zelda);
	oslAnimationStop(zou);


	zelda->sprite->x = 50;
	zelda->sprite->y = 50;

	zou->sprite->x =  200;
	zou->sprite->y =  50;

	//utilise une fonte
	oslSetFont(maFonte);


	while (!osl_quit)
	{
		//Debut du dessin
		oslStartDrawing();
		oslCls();

		TouchecollisionSprites();

		oslPrintColorShadow(2, 2,JAUNE,"UTILISE LES FLECHES", 0);

		oslDrawImageAnime(zelda);
		oslDrawImageAnime(zou);

		oslSynchronization();

		if (osl_keys->pressed.start)break;

	}

}




//verifie les collisions au momment du deplacement pour eviter de les tester tout le temps
void TouchecollisionSprites()
{
	oslReadKeys();

	if (osl_keys->held.up){

		oslChangePosition(zelda,ZELDA_HAUT);
		if (!oslCollImage(zelda->sprite,zelda->sprite->x, zelda->sprite->y - 1, zou->sprite, zou->sprite->x, zou->sprite->y ))// test collision - 2 pixel
		{//ok on bouge
		zelda->sprite->y -= 2;
		oslAnimationPlay(zelda);
		}
		
	}

	if (osl_keys->held.down){
		oslChangePosition(zelda,ZELDA_BAS);
		if (!oslCollImage(zelda->sprite,zelda->sprite->x, zelda->sprite->y + 1, zou->sprite, zou->sprite->x, zou->sprite->y ))// test collision - 2 pixel
		{//ok on bouge
		zelda->sprite->y += 2;
		oslAnimationPlay(zelda);
		}
	}

	if (osl_keys->held.left){
		oslChangePosition(zelda,ZELDA_GAUCHE);
		if (!oslCollImage(zelda->sprite,zelda->sprite->x -1, zelda->sprite->y, zou->sprite, zou->sprite->x, zou->sprite->y ))// test collision - 2 pixel
		{//ok on bouge
		zelda->sprite->x -= 2;
		oslAnimationPlay(zelda);
		}
		
	}

	if (osl_keys->held.right){
		oslChangePosition(zelda,ZELDA_DROITE);
		if (!oslCollImage(zelda->sprite,zelda->sprite->x +1, zelda->sprite->y, zou->sprite, zou->sprite->x, zou->sprite->y ))// test collision - 2 pixel
		{//ok on bouge
		zelda->sprite->x += 2;
		oslAnimationPlay(zelda);
		}

	}

	//si aucune touche alors on remet l'annimation dans lequel il ce trouve a 0 et on arrete l'annimation
	if (!osl_keys->held.value){
		oslAnimationStop(zelda);
		oslResetPosition(zelda);

	}

	
	
}

