diff --git a/resources/Maps.xml b/resources/Maps.xml new file mode 100644 index 0000000000000000000000000000000000000000..274d546ebdf4c1cd1483180d3380530293834fc6 --- /dev/null +++ b/resources/Maps.xml @@ -0,0 +1,37 @@ +<?xml version="1.0" encoding="UTF-8"?> +<Maps> + +<Map id="MAP_1" name="Comté de la sieste" desc="Cette map est so-mmeil" taille_lignes="10"> +<Line>FFMMMF</Line> +<Line>FFMMMF</Line> +<Line>FFMMMF</Line> +<Line>FFMMMF</Line> +<Line>FFMMMF</Line> +<Line>FFMMMF</Line> +<Line>FFMMMF</Line> +<Line>FFMMMF</Line> +</Map> + +<Map id="MAP_2" name="Chasse au trésor" desc="Une map pour 2 joueurs qui rend fou !! " taille_lignes="10"> +<Line>FFMMMF</Line> +<Line>FFMMMF</Line> +<Line>FFMMMF</Line> +<Line>FFMMMF</Line> +<Line>FFMMMF</Line> +<Line>FFMMMF</Line> +<Line>FFMMMF</Line> +<Line>FFMMMF</Line> +</Map> + +<Map id="MAP_3" name="Chasse au trésor" desc="Une map pour 2 joueurs qui rend fou !! " taille_lignes="10"> +<Line>FFMMMF</Line> +<Line>FFMMMF</Line> +<Line>FFMMMF</Line> +<Line>FFMMMF</Line> +<Line>FFMMMF</Line> +<Line>FFMMMF</Line> +<Line>FFMMMF</Line> +<Line>FFMMMF</Line> +</Map> + +</Maps> diff --git a/src/carte.c b/src/carte.c index b1d683dbff21cbac10aef173f053ec4852b4d192..89f02e7bebbc3336c2908dd1d24f614ee3e6af3c 100644 --- a/src/carte.c +++ b/src/carte.c @@ -2,6 +2,8 @@ #include <stdlib.h> #include <string.h> #include "carte.h" +#include "structures.h" +#include <roxml.h> /*! @@ -20,7 +22,7 @@ char* ExtraireCarte(int numero) * \fn Carte* LireCarte(int num) * \brief La fonction recupere la n-ieme carte dans un fichier et renvoie un pointeur sur la carte cree * - * \return Un pointeur sur une tableau de lettres. + * \return Un pointeur sur une tableau de cartes. */ char* LireCarte(const char *filename, int num) { @@ -64,17 +66,87 @@ char* LireCarte(const char *filename, int num) fgetc(file_map); } -/* Test Tableau + /* Test Tableau - for(j=0; j<nb_lignes*nb_colonnes; j++) - { - printf("La valeur %d du tableau vaut : %c\n",j,TableauCarte[j]); - } + for(j=0; j<nb_lignes*nb_colonnes; j++) + { + printf("La valeur %d du tableau vaut : %c\n",j,TableauCarte[j]); + } - fclose(file_map); -*/ + fclose(file_map); + */ return TableauCarte; } +Carte_A* ExtraireCartesXML(const char *filename) +{ + node_t *rootXML, *Maps; + int nb_Maps=0, i=0; + rootXML = roxml_load_doc(filename); + Maps = roxml_get_chld(rootXML, NULL, 0); + + nb_Maps = roxml_get_chld_nb(Maps); + printf("Il y a %d maps\n", nb_Maps); + + Carte_A* Tableau_Cartes = malloc(nb_Maps * sizeof(Carte_A)); + + /*-------------------------------------------------------------------------------------------------------------------*/ + /* Aquisition des cartes */ + /*-------------------------------------------------------------------------------------------------------------------*/ + + for(i=0; i<nb_Maps; i++) + { + int j=0, nb_lignes=0, taille_lignes; + char *id_text, *name_text, *desc_text, *lignes_text; + node_t *Map_Actuelle; + Map_Actuelle = roxml_get_chld(Maps,NULL,i); + + id_text = roxml_get_content(roxml_get_attr(Map_Actuelle, "id", 0), NULL, 0, NULL); + name_text = roxml_get_content(roxml_get_attr(Map_Actuelle, "name", 0), NULL, 0, NULL); + desc_text = roxml_get_content(roxml_get_attr(Map_Actuelle, "desc", 0), NULL, 0, NULL); + taille_lignes = atoi(roxml_get_content(roxml_get_attr(Map_Actuelle, "taille_lignes", 0), NULL, 0, NULL)); + + printf("Les lignes font %d de long\n", taille_lignes); + + + nb_lignes = roxml_get_chld_nb(Map_Actuelle); + + Carte_A Carte_Actuelle; + + strcpy(Carte_Actuelle.id, id_text); + strcpy(Carte_Actuelle.nom, name_text); + strcpy(Carte_Actuelle.desc, desc_text); + + printf("L'ID est :%s\n\n", Carte_Actuelle.id); + printf("Le nom est :%s\n\n", Carte_Actuelle.nom); + printf("La desc est :%s\n\n", Carte_Actuelle.desc); + + /*--------------------------------------------------------------------------------------------------------------*/ + /* Aquisition des lignes de la carte */ + /*--------------------------------------------------------------------------------------------------------------*/ + + for(j=0; j<nb_lignes; j++) + { + node_t* Ligne_Actuelle; + Ligne_Actuelle = roxml_get_chld(Map_Actuelle, NULL, j); + + char* sequence_ligne; + roxml_get_content(Ligne_Actuelle, sequence_ligne, 50, NULL); + + printf("Sequence_Ligne vaut : %s\n", sequence_ligne); + + // strcpy(Carte_Actuelle.lignes[j], sequence_ligne); + + //printf("La ligne %d vaut : %s\n",j+1, Carte_Actuelle.lignes[j]); + } + + Tableau_Cartes[i] = Carte_Actuelle; + + + } + + return Tableau_Cartes; +} + diff --git a/src/carte.h b/src/carte.h index abbe315a3df089a09fe7660b8c072a768175785d..46b24768fb8138f71ef3e539d04afe58e0357dcb 100644 --- a/src/carte.h +++ b/src/carte.h @@ -3,15 +3,17 @@ * \brief Fichier contenant les signatures des fonctions liees a la structure carte. */ -char* ExtraireCarte(int numero); - -char* LireCarte(const char *filename, int num); - #ifndef CARTE_H_INCLUDED #define CARTE_H_INCLUDED #include "structures.h" +char* ExtraireCarte(int numero); + +Carte_A* ExtraireCartesXML(const char *filename); + +char* LireCarte(const char *filename, int num); + #endif // CARTE_H_INCLUDED diff --git a/src/main.c b/src/main.c index 998074b93cebf6977ec82dc59cd1cf7a33f38b69..9ee7df7d356011bfe96e904871fd3ec4cd40c5d9 100644 --- a/src/main.c +++ b/src/main.c @@ -112,6 +112,7 @@ int main() char *Map_A = ExtraireCarte(4); printf("Map en version texte : %s\n", Map_A); + //ExtraireCartesXML("../resources/Maps.xml"); Game_Package Pack_A = Construire_Package(); @@ -119,7 +120,7 @@ int main() /* Comment utiliser le package : */ /* -------------------------------------*/ - printf("L'attaque 1 du mage est : %s\n",Pack_A.Classes_Package[0].attaques[0].nom); + printf("L'attaque 1 du mage est : %s\n",Pack_A.Classes_Package[1].attaques[2].nom); printf("Le nom du terrain 1 est : %s\n",Pack_A.Terrains_Package[0].nomTerrain); printf("L'adresse de la texture GUI 1 est : %s\n",Pack_A.GUI_Package[0].GUI_default); diff --git a/src/structures.h b/src/structures.h index 17e4dbd303e48fedd990158fea8e7fc83ed5a4b1..99953ce0e0cc579be53383586586f5ae9286b4d0 100644 --- a/src/structures.h +++ b/src/structures.h @@ -20,6 +20,8 @@ /*! \def TAILLE_MAX_CARTE */ #define TAILLE_MAX_CARTE 256 +/*! \def TAILLE_MAX_LIGNE */ +#define TAILLE_MAX_LIGNE 25 /*! \def TAILLE_ID */ #define TAILLE_ID 8 /*! \def TAILLE_NOMS */ @@ -166,6 +168,14 @@ typedef struct Effet_Competence{ } Effet_Competence; +typedef struct Carte_A{ + char id[TAILLE_ID]; + char nom[50]; + char desc[100]; + char* lignes; +} Carte_A; + + /*! \struct Classe structures.h * \brief Definition de la structure Game_Package * sizeof(Classe) = @@ -174,6 +184,7 @@ typedef struct Game_Package{ Classe* Classes_Package; Terrain* Terrains_Package; Skins_GUI* GUI_Package; + Carte_A* Cartes_Package; }Game_Package; @@ -223,7 +234,8 @@ typedef struct Game_Package{ * Peut eventuellement contenir l'information Carte si c'est utile. * sizeof(Partie) = 12 octets */ - typedef struct Partie{ + +typedef struct Partie{ ListJoueur * participants; /*!< La liste de joueurs prennant parts à la partie*/ int nbTours; /*!<Le nombre de tours actuel*/ Carte * c; /*!<La Carte associee a la Partie*/