diff --git a/src/TerrainsXML.c b/src/TerrainsXML.c index 75e11d42b6dce4cfbaaecba187940bc42a42eee4..acbc9aec48757b5ab9da1526049c9a8a4e1d44f3 100644 --- a/src/TerrainsXML.c +++ b/src/TerrainsXML.c @@ -4,6 +4,7 @@ #include "structures.h" #include "terrain.h" #include "TerrainsXML.h" +#include "structures.h" /*! * \file classesXML.c @@ -126,3 +127,72 @@ Terrain* Remplir_Terrains(FILE* Terrains_XML_log, char *filename) /* Remplit le +/*! + * \fn Skins_Charac* Load_Skins_Terrain(char *filename) + * \brief Fonction qui extrait les noms des fichiers images des terrains. + * + * \return Un tableau de noms de fichiers. + */ +char * Load_Skins_Terrain(char *filename) +{ + + FILE* Skins_log = NULL; + Skins_log = fopen("Skin_XML_log", "w"); + if (Skins_log != NULL) + { + node_t *rootXML, *Skins, *Terrains; + unsigned int i=0, nb_terrains=0; + + rootXML = roxml_load_doc(filename); /* Ouvre le doc XML et créé le noeud de base */ + Skins = roxml_get_chld(rootXML, NULL, 0); + Terrains = roxml_get_chld(Skins, NULL, 1); + nb_terrains = roxml_get_chld_nb(Terrains); + + Skins_Terrain* Liste_Skins_Terrains = NULL; + Liste_Skins_Terrains = malloc(nb_terrains * sizeof(Skins_Terrain)); /* Allocation de la mémoire nécéssaire et test*/ + if (Liste_Skins_Terrains == NULL) + { + printf("Allocation impossible \n"); + exit(EXIT_FAILURE); + } + + /* -----------------------------------------------------------------------------------------------------------------------*/ + + for(i=0; i<nb_terrains; i++) + { + Skins_Terrain Skins_Terrain_en_cours; + + node_t* Skin; + char *id_text, *default_text; + + Skin = roxml_get_chld(Terrains, NULL, i); + id_text = roxml_get_content(roxml_get_attr(Skin, "id", 0), NULL, 0, NULL); + default_text = roxml_get_content(roxml_get_attr(Skin, "f_default", 0), NULL, 0, NULL); + + //Tests + /*printf("TEST ID : %s\n\n",id_text); + printf("TEST default : %s\n\n",default_text); + */ + + strcpy(Skins_Terrain_en_cours.terrain_id, id_text); + strcpy(Skins_Terrain_en_cours.terrain_default, default_text); + + Liste_Skins_Terrains[i] = Skins_Terrain_en_cours; + + //Tests + /*printf("ID : %s\n\n", Skins_Terrain_en_cours.terrain_id); + printf("Default : %s\n\n", Skins_Terrain_en_cours.terrain_default); + */ + } + fclose(Skins_log); + return Liste_Skins_Terrains; + } + else + { + fprintf(stderr,"Impossible d'ouvrir le fichier Skins_XML_log"); + + } +} + + + diff --git a/src/TerrainsXML.h b/src/TerrainsXML.h index c915eef4f6719ff4f099077c0f583ea934365858..33d36af1bd18002f3ebe2ee8cd96aa249aa6fa3f 100644 --- a/src/TerrainsXML.h +++ b/src/TerrainsXML.h @@ -5,8 +5,16 @@ #ifndef TERRAINS_XML_H_INCLUDED #define TERRAINS_XML_H_INCLUDED +#include <roxml.h> +#include "structures.h" + typedef struct Skins_Terrain{ + char terrain_id[15]; + char terrain_default[50]; +}Skins_Terrain; Terrain* Remplir_Terrains(FILE* Terrains_XML_log, char *filename); +char * Load_Skins_Terrain(char *filename); + #endif // TERRAINS_XML_H_INCLUDED diff --git a/src/main.c b/src/main.c index d01b2114ade49e9c00feddbe62bcdc260ac1d472..c88ac9cc7caa833fdbcd1ad24cbf221d9fc0aa0d 100644 --- a/src/main.c +++ b/src/main.c @@ -87,9 +87,11 @@ printf("Map en version texte : %s\n", Map_A); Terrains_A = Librairie_Terrains("../resources/Terrains.XML"); printf("info Terrain: %d\n", Terrains_A[1].franchissable); -Skins_Charac *Images = Remplir_Skin_Charac("../resources/Skins.xml"); -printf("Adresse du skin mage damaged : %s\n", Images[0].charac_damaged); +Skins_Charac *Images_persos = Load_Skin_Charac("../resources/Skins.xml"); +printf("Adresse du skin mage damaged : %s\n", Images_persos[0].charac_id); +Skins_Terrain *Images_terrains = Load_Skins_Terrain("../resources/Skins.xml"); +printf("Adresse du skin montagne : %s\n", Images_terrains[2].terrain_default); main_SDL(Map_A); diff --git a/src/skinsXML.c b/src/skinsXML.c index 1b319cc530add3aac0cb734fbf6be8c96c41aaaa..c980e7106b4229560edb1261d5ae8460966945ac 100644 --- a/src/skinsXML.c +++ b/src/skinsXML.c @@ -17,7 +17,7 @@ * * \return un pointeur sur une collection de noms de fichiers. */ -Skins_Charac* Remplir_Skin_Charac(char *filename) +Skins_Charac* Load_Skin_Charac(char *filename) { FILE* Skins_log = NULL; diff --git a/src/skinsXML.h b/src/skinsXML.h index 7a559d3eed1968bbf5ee7716f3d1eb4f68004745..0ad023bb8f9e10401c19b4db8d500538c7ba1b6b 100644 --- a/src/skinsXML.h +++ b/src/skinsXML.h @@ -17,7 +17,7 @@ }Skins_Charac; -Skins_Charac* Remplir_Skin_Charac(char *filename); +Skins_Charac* Load_Skin_Charac(char *filename); diff --git a/src/structures.h b/src/structures.h index b0574370103b95afd277c6a742e0aaa7db33c76b..9623b2edd0826dd0d83d705e67f2315bd7411040 100644 --- a/src/structures.h +++ b/src/structures.h @@ -166,6 +166,10 @@ typedef struct Effet_Competence{ NodeJoueur * lastNodeJoueur; /*!<Dernier noeud*/ }ListJoueur; + + + + /*! \struct Partie structures.h * \brief Definition de la structure Partie *