From 80af79fa0cd5c34f79a9488004e4f898550d360e Mon Sep 17 00:00:00 2001 From: Romain Jegat <romain.jegat@insa-rennes.fr> Date: Mon, 25 Apr 2016 22:13:17 +0200 Subject: [PATCH] Ajout de l'importation des adresses des images de cases - Exemple dans le main --- src/TerrainsXML.c | 70 +++++++++++++++++++++++++++++++++++++++++++++++ src/TerrainsXML.h | 8 ++++++ src/main.c | 6 ++-- src/skinsXML.c | 2 +- src/skinsXML.h | 2 +- src/structures.h | 4 +++ 6 files changed, 88 insertions(+), 4 deletions(-) diff --git a/src/TerrainsXML.c b/src/TerrainsXML.c index 75e11d4..acbc9ae 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 c915eef..33d36af 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 d01b211..c88ac9c 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 1b319cc..c980e71 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 7a559d3..0ad023b 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 b057437..9623b2e 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 * -- GitLab