/**
* @file chien.c
* @author fatma & omar <3
* @version 1.0
* @date 20 mai 2013
* @brief Définit le personnage chien ainsi que toutes les actions possibles
*/
#include <stdio.h>
#include <stdlib.h>
#include <allegro.h>
#include "background.h"
#include "chien.h"
#include "collision.h"
#include "jennyfer.h"
#define GFX_W 642
#define GFX_H 450
// module chien
/**
* @fn void load_chien(chien *chien)
* @details chargement des images
* @param chien Un pointeur sur la structure chien
* @return void */
 void load_chien(chien *chien)
{ 
     int i;
     char buf[50];
 for (i = 0; i <3; i++) 
      {
      sprintf(buf, "/home/fatma/jenny/chien/droite%d.bmp", i);
      chien->right[i] = load_bitmap(buf, NULL);
      sprintf(buf, "/home/fatma/jenny/chien/gauche%d.bmp", i);
      chien->left[i] = load_bitmap(buf, NULL);
      }
}
		
/**
* @fn void destroy_chien(chien *chien)
* @details il ecrase ce qu'il y'a dans le Buffer
* @param chien Un pointeur sur la structure chien
* @return void */ 
void destroy_chien(chien *chien)
{
	int i;
	for (i = 0; i <3; i++)
         {
          destroy_bitmap(chien->right[i]);
	  destroy_bitmap(chien->left[i]);
	 }

}
/**
* @fn void init_chien(chien *chien)
* @details Les champs direction et position(x,y) sont initialisés avant
* que le programme entre dans la boucle de jeu
* @param chien Un pointeur sur la structure chien
* @return void */
void init_chien(chien *chien)
{
	chien->direction = 2;
	chien->x = 100;
	chien->y = 400;
}
/** 
* @fn void move_chien_right(chien *chien,int *CO)
*@details elle permet au perso de se dèplacer vers la droite
* @param chien Un pointeur sur la structure chien 
* CO son adresse aide pour le passage d'une image a une autre il est de type int 
* @return void */

void move_chien_right(chien *chien,int *CO)
{
  verifdirCH(chien);
if (chien->direction==0 )
{
   *CO+=1 ;
   (chien->x)+=1;
}
}

/** 
* @fn void move_chien_left(chien *chien,int *CO)
*@details elle permet au perso de se dèplacer vers la gauche
* @param chien Un pointeur sur la structure chien 
* CO son adresse aide pour le passage d'une image a une autre il est de type int 
* @return void */

void move_chien_left(chien *chien,int *CO)
{  verifdirCH(chien);
if (chien->direction==1 )
    {
     *CO+=1 ;
     (chien->x)-=1;
    }
}
/** 
* @fn void verifdir(chien *chien)
*@details verifie la direction
* @param chien Un pointeur sur la structure chien 
* @return void */

void verifdirCH(chien *chien  )
{
   if(chien->x>550)
      chien->direction=1 ; 
   else
	if (chien->x<200)
	   chien->direction=0 ;
}
/** 
* @fn void move_chien(chien *chien,int *CO)
*@details elle permet au perso de se dèplacer vers la gauche et vers la droite d'un mouvement continue
*@brief cettte fonction fait appel a 2 fonction move_chien_left et move_chien_right
* @param chien Un pointeur sur la structure chien 
* CO son adresse aide pour le passage d'une image a une autre il est de type int 
* @return void */
void move_chien(chien *chien,int *CO)
{
	 	move_chien_left(chien,CO);

      		move_chien_right(chien,CO);


}

/**
* @fn void draw_chien(chien chien,BITMAP * Buffer,int CO) 
* @details elle permet l'affichage du perso selon sa direction et son mouvement 
*@brief on utilise la fonction draw_sprite pour l'affichage des sprites 
* @param chien de type chien , Buffer qui est la memoire ou se charge les images 
* CO aide pour l'affichage et le passage d'une image a une autre il est de type int 
* @return void */
void draw_chien(chien chien,BITMAP *Buffer, int CO)
{


	if (chien.direction == 0)
         {

	  draw_sprite(Buffer, chien.right[CO % (2) ],chien.x, chien.y);

	 }

	if(chien.direction == 1)
         {

	draw_sprite(Buffer, chien.left[CO % (2)],chien.x,chien.y);


} }
