diff --git a/src/case.c b/src/case.c index f45a8d0b848e9282f877dc9a4e883b264eb86974..6ec15070a554c931a7233582ccbd034a0086fcec 100644 --- a/src/case.c +++ b/src/case.c @@ -1,5 +1,6 @@ #include <stdio.h> #include <stdlib.h> +#include <string.h> #include "terrain.h" #include "structures.h" #include "personnage.h" @@ -25,6 +26,28 @@ int get_y(Case *c){ return c->coord_y; } + /*! + * \fn char * getID(Carte_Jeu * c) + * \brief La fonction retourne un pointeur vers l'ID de la Carte_Jeu. + * + * \param Un pointeur vers la Carte_Jeu à tester + * \return Le pointeur vers l'ID de la Carte_Jeu. + */ +char * getID(Carte_Jeu * c){ + return c->id; +} + + /*! + * \fn Case * getCase(Carte_Jeu * c, int x, int y) + * \brief La fonction retourne un pointeur vers la Case de la Carte_Jeu aux coordonnées x,y. + * + * \param Un pointeur vers la Carte_Jeu à tester et les coordonnées x et y en entier. + * \return un pointeur vers la Case aux coordonnées x, y. + */ +Case * getCase(Carte_Jeu * c, int x, int y){ + return &c->Tab_Cases[x][y]; +} + boolean est_occupee(Case *c){ return c->occupee; } @@ -54,8 +77,8 @@ Terrain* get_terrain(Case *c){ * * \return Le pointeur vers la Carte creee. */ -Carte * nouvelleCarte(){ - Carte * c = malloc(sizeof(Carte)); +Carte_Jeu * nouvelleCarte(){ + Carte_Jeu * c = malloc(sizeof(Carte_Jeu)); return c; } @@ -65,10 +88,43 @@ Carte * nouvelleCarte(){ * * \param le pointeur vers la Carte a supprimer. */ -void deleteCarte(Carte * c){ +void deleteCarte(Carte_Jeu * c){ free(c); } + /*! + * \fn int initCarte(Carte_A * sourceXML, Carte_Jeu * destination, Terrain * terrainPackage) + * \brief La fonction initialise la carte du jeu a partir de la Carte du Package passée en parametre. + * + * \param Un pointeur vers la Carte_A du package qui sera la source, un pointeur vers la Carte_Jeu a initialiser, un pointeur vers le Game_Package de l'univers du jeu + * \return 1 si l'initialisation est correcte, 0 sinon. + */ +int initCarte(Carte_A * sourceXML, Carte_Jeu * destination, Game_Package * pack){ + int i,j; + strncpy(getID(destination), sourceXML->id, TAILLE_ID); + for(i=0;i<LARG_MAX_CARTE;i++){ + for(j=0;j<HAUT_MAX_CARTE;j++){ + switch (sourceXML->lignes[i][j]){ + case 'P' : + init_case(getCase(destination,i,j),i,j,&pack->Terrains_Package[0]); + break; + case 'R' : + init_case(getCase(destination,i,j),i,j,&pack->Terrains_Package[1]); + break; + case 'F' : + init_case(getCase(destination,i,j),i,j,&pack->Terrains_Package[2]); + break; + case 'M' : + init_case(getCase(destination,i,j),i,j,&pack->Terrains_Package[3]); + break; + default : + return 0; + } + } + } + return 1; +} + /*! * \fn init_carte(Carte* c,unsigned short int largeur, unsigned short int hauteur) * \brief La fonction initialise la position des Case contenues dans la Carte et les definit comme libres. @@ -83,7 +139,6 @@ int init_carte(Carte * c){ for (i=0;i<LARG_MAX_CARTE;i++){ for (j=0;j<HAUT_MAX_CARTE;j++){ init_case(n,i,j,NULL); - printf("Adresse Case : %d, x=%d, y=%d\n\n",n,get_x(n),get_y(n)); n=n+sizeof(Case); } } diff --git a/src/case.h b/src/case.h index 009684164b50155add042f5e9bdcf892f5343f68..d6bf9125f355733d4586acee206599c4c8a952f5 100644 --- a/src/case.h +++ b/src/case.h @@ -20,6 +20,10 @@ int get_x(Case *c); int get_y(Case *c); +char * getID(Carte_Jeu * c); + +Case * getCase(Carte_Jeu * c, int x, int y); + boolean est_occupee(Case *c); Terrain * init_terrain(Terrain * t, char * n, boolean f, unsigned short int PD); @@ -34,12 +38,14 @@ void marquer_libre(Case *c); Terrain* get_terrain(Case *c); -Carte * nouvelleCarte(); +Carte_Jeu * nouvelleCarte(); -void deleteCarte(Carte * c); +void deleteCarte(Carte_Jeu * c); int init_carte(Carte* c); +int initCarte(Carte_A * sourceXML, Carte_Jeu * destination, Game_Package * pack); + /*Case * trouverCase(Carte * c, int x, int y);*/