From c8d9c716ee723dd76c759140a41270fe974d6e26 Mon Sep 17 00:00:00 2001
From: Romain Jegat <romain.jegat@insa-rennes.fr>
Date: Thu, 28 Apr 2016 21:39:39 +0200
Subject: [PATCH] Lecture d'une liste de persos contenant skin, attaques,
 effets dans ClassesXML - Ne marche pas - Aide debug Mr Sanchez ?

---
 resources/Classes.xml |  26 ++++-
 src/ClassesXML.c      | 233 +++++++++++++++++++++++++++++++-----------
 src/ClassesXML.h      |   2 +-
 src/classe.h          |   3 +
 src/main.c            |   8 +-
 src/skinsXML.c        | 103 -------------------
 src/skinsXML.h        |  24 -----
 src/structures.h      |  39 +++++--
 8 files changed, 230 insertions(+), 208 deletions(-)
 delete mode 100644 src/skinsXML.c
 delete mode 100644 src/skinsXML.h

diff --git a/resources/Classes.xml b/resources/Classes.xml
index 5460cf3..3dd66a8 100644
--- a/resources/Classes.xml
+++ b/resources/Classes.xml
@@ -3,14 +3,18 @@
 	<Classe id="C_MAGE" name="Mage" PV="100" PM="150" MV="2" Desc="Le feu, ça brûle ">
 		<Skills>
 			<Skill id="S_FIREBALL" name="Boule du feu" RG="4" MN="30">
-				<Effect id="" name="" TURNS="" DM="" PARA="" />
-				<Effect id="" name="" TURNS="" DM="" PARA="" />
+				<Effect id="E_FB_1" name="" TURNS="" DM="" PARA="" />
+				</Effect>
+				<Effect id="E_FB_1" name="" TURNS="" DM="" PARA="" />
+				</Effect>
 			</Skill>
-			<Skill id="S_FREEZE" name="Gel" RG="" MN="">
+			<Skill id="S_FREEZE" name="Gel" RG="4" MN="30">
 				<Effect id="" name="" TURNS="" DM="" PARA="" />
+				</Effect>
 			</Skill>
-			<Skill id="S_MANA" name="Vol de mana" RG="" MN="">
+			<Skill id="S_MANA" name="Vol de mana" RG="4" MN="30">
 				<Effect id="" name="" TURNS="" DM="10" PARA="PARA_NO" />
+				</Effect>
 			</Skill>
 		</Skills>
 		<Skins id="SP_MAGE"  f_default="../resources/Skins/mage.bmp"  f_selected="../resources/Skins/mage_selected.bmp" f_healed="../resources/Skins/mage_healed.bmp" f_damaged="../resources/Skins/mage_damaged.bmp">
@@ -21,12 +25,15 @@
 		<Skills>
 			<Skill id="S_BASH" name="Coup d'épée" RG="" MN="">
 				<Effect id="" name="" TURNS="" DM="" PARA="" />
+				</Effect>
 			</Skill>
 			<Skill id="S_SHIELD" name="Renforcement" RG="" MN="">
 				<Effect id="" name="" TURNS="" DM="" PARA="" />
+				</Effect>
 			</Skill>
 			<Skill id="S_SKIN" name="Ecorchement" RG="" MN="">
 				<Effect id="" name="" TURNS="" DM="10" PARA="PARA_NO" />
+				</Effect>
 			</Skill>
 		</Skills>
 		<Skin id="SP_WAR"  f_default="../resources/Skins/guerrier.bmp"  f_selected="../resources/Skins/guerrier_selected.bmp" f_healed="../resources/Skins/guerrier_healed.bmp" f_damaged="../resources/Skins/guerrier_damaged.bmp">
@@ -37,12 +44,15 @@
 		<Skills>
 			<Skill id="S_HEAL" name="Soin" RG="" MN="">
 				<Effect id="" name="" TURNS="" DM="" PARA="" />
+				</Effect>
 			</Skill>
 			<Skill id="S_RECOV" name="Recouvrement" RG="" MN="">
 				<Effect id="" name="" TURNS="" DM="" PARA="" />
+				</Effect>
 			</Skill>
 			<Skill id="S_PURIFY" name="Purifier" RG="" MN="">
 				<Effect id="" name="" TURNS="" DM="10" PARA="PARA_NO" />
+				</Effect>
 			</Skill>
 		</Skills>
 		<Skin id="SP_HEAL"  f_default="../resources/Skins/guerisseur.bmp"  f_selected="../resources/Skins/guerisseur_selected.bmp" f_healed="../resources/Skins/guerisseur_healed.bmp" f_damaged="../resources/Skins/guerisseur_damaged.bmp">
@@ -53,12 +63,15 @@
 		<Skills>
 			<Skill id="S_EVIS" name="Eviscération" RG="" MN="">
 				<Effect id="" name="" TURNS="" DM="" PARA="" />
+				</Effect>
 			</Skill>
 			<Skill id="S_POISON" name="Lame empoisonnée" RG="" MN="">
 				<Effect id="" name="" TURNS="" DM="" PARA="" />
+				</Effect>
 			</Skill>
 			<Skill id="S_CONCEAL" name="Camouflage" RG="" MN="">
 				<Effect id="" name="" TURNS="" DM="10" PARA="PARA_NO" />
+				</Effect>
 			</Skill>
 		</Skills>
 		<Skin id="SP_ROGUE"  f_default="../resources/Skins/voleur.bmp"  f_selected="../resources/Skins/voleur_selected.bmp" f_healed="../resources/Skins/voleur_healed.bmp" f_damaged="../resources/Skins/voleur_damaged.bmp">
@@ -69,13 +82,18 @@
 		<Skills>
 			<Skill id="S_SHOT" name="Tir puissant" RG="" MN="">
 				<Effect id="" name="" TURNS="" DM="" PARA="" />
+				</Effect>
 			</Skill>
 			<Skill id="S_FLAME" name="Tir emflammé" RG="" MN="">
 				<Effect id="" name="" TURNS="" DM="" PARA="" />
+				</Effect>
 			</Skill>
 			<Skill id="S_PARA" name="Tir paralysant" RG="" MN="">
 				<Effect id="" name="" TURNS="" DM="10" PARA="PARA_NO" />
+				</Effect>
 			</Skill>
+			<Skin id="SP_ARCHER"  f_default="../resources/Skins/voleurarcher.bmp"  f_selected="../resources/Skins/archer_selected.bmp" f_healed="../resources/Skins/archer_healed.bmp" f_damaged="../resources/Skins/archer_damaged.bmp">
+	    </Skin>
 		</Skills>
 	</Classe>
 
diff --git a/src/ClassesXML.c b/src/ClassesXML.c
index 6f941ea..8e7d2f0 100644
--- a/src/ClassesXML.c
+++ b/src/ClassesXML.c
@@ -9,94 +9,203 @@
 * \brief Fichier contenant le code des fonctions d'aquisition des classes.
 */
 
-Classe* Remplir_Classes(FILE* Classes_log, char *filename) /* Remplit le tableau de classes à partir du fichier XML */
+int /*Classe**/ Remplir_Classes(FILE* Classes_log, char *filename) /* Remplit le tableau de classes à partir du fichier XML */
 {
 
     fprintf(Classes_log,"I) Chargement du fichier XML - Definition des noeuds\n");
 
-    node_t *rootXML, *ClassesXML;
-    unsigned int i=0, nb_classes=0;
+    node_t *rootXML, *Classes;
+    unsigned int i=0, j=0, k=0, nb_classes=0, nb_skills=0;
 
     rootXML = roxml_load_doc(filename);            /* Ouvre le doc XML et créé le noeud de base */
-    ClassesXML = roxml_get_chld(rootXML, NULL, 0);    /* Descend d'un niveau dans l'arborescence */
-    nb_classes = roxml_get_chld_nb(ClassesXML);    /* Récupère le nombre de classes entrées dans le fichier XML */
+    Classes = roxml_get_chld(rootXML, NULL, 0);    /* Descend d'un niveau dans l'arborescence */
+    nb_classes = roxml_get_chld_nb(Classes);    /* Récupère le nombre de classes entrées dans le fichier XML */
 
     fprintf(Classes_log,"Le fichier contient %d classes\n", nb_classes);
 
-/*---------------------------------------------------------------------------------------------------*/
+    /*---------------------------------------------------------------------------------------------------*/
+    /* Allocation de la mémoire nécéssaire et test*/
+    /*---------------------------------------------------------------------------------------------------*/
 
     fprintf(Classes_log,"II) Chargement des classes\n");
 
     Classe* ListeClasse = NULL;
-    ListeClasse = malloc(nb_classes * sizeof(Classe));     /* Allocation de la mémoire nécéssaire et test*/
+    ListeClasse = malloc(nb_classes * sizeof(Classe));
     if (ListeClasse == NULL)
     {
         fprintf(Classes_log,"Allocation impossible \n");
         exit(EXIT_FAILURE);
     }
     fprintf(Classes_log,"1) Memoire allouee avec succes \n");
-    fprintf(Classes_log,"La memoire allouee fait %lu octets\n",nb_classes * sizeof(Classe));
+    fprintf(Classes_log,"La memoire allouee fait %d octets\n",nb_classes * sizeof(Classe));
 
-/*--------------------------------------------------------------------------------------------------*/
+    /*--------------------------------------------------------------------------------------------------*/
+    /* Chargement des classes */
+    /*--------------------------------------------------------------------------------------------------*/
 
     for(i=0; i<nb_classes; i++)   /* Boucle de remplissage des classes */
     {
-    fprintf(Classes_log,"\nChargement de la classe numero %d\n", i+1);
-
-    Classe Classe_en_cours;
-
-    node_t *ClasseXML;
-    char *id_text, *name_text, *PV_text, *PM_text, *MV_text, *DESC_text;
-    int PV_int, PMM_int, PD_int;
-
-    ClasseXML = roxml_get_chld(ClassesXML, NULL, i);
-
-    node_t *Skills, *ID, *NAME, *PV, *PM, *MV, *DESC;
-
-    ID = roxml_get_attr(ClasseXML, "id", 0);
-    NAME = roxml_get_attr(ClasseXML, "name", 0);
-    PV = roxml_get_attr(ClasseXML, "PV", 0);
-    PM = roxml_get_attr(ClasseXML, "PM", 0);
-    MV = roxml_get_attr(ClasseXML, "MV", 0);
-    DESC = roxml_get_attr(ClasseXML, "Desc", 0);
-
-    id_text = roxml_get_content(ID, NULL, 0, NULL);
-    name_text = roxml_get_content(NAME, NULL, 0, NULL);
-    PV_text = roxml_get_content(PV, NULL, 0, NULL);
-    PM_text = roxml_get_content(PM, NULL, 0, NULL);
-    MV_text = roxml_get_content(MV, NULL, 0, NULL);
-    DESC_text = roxml_get_content(DESC, NULL, 0, NULL);
-
-    fprintf(Classes_log,"Id : %s\n", id_text);
-    fprintf(Classes_log,"Nom : %s\n", name_text);
-    fprintf(Classes_log,"PV : %s\n", PV_text);
-    fprintf(Classes_log,"PM : %s\n", PM_text);
-    fprintf(Classes_log,"MV : %s\n", MV_text);
-    fprintf(Classes_log,"DESC : %s\n", DESC_text);
-
-    /* Convertion des caractéristiques lues vers les types de la struct Classe */
-    PV_int = atoi(PV_text);
-    PMM_int = atoi(PM_text);
-    PD_int = atoi(MV_text);
-
-/*----------------------------------------------------------------------------------------------------*/
-
-    /* Remplissage des caractéristiques de la classe en cours */
-    Classe_en_cours.PV_max=PV_int;
-    Classe_en_cours.mana_max=PMM_int;
-    Classe_en_cours.points_deplacement_max=PD_int;
-    strcpy(Classe_en_cours.nom, id_text);
-
-    fprintf(Classes_log,"Insertion de la classe %d dans le tableau\n", i+1);
-
-    /* Ajout de la classe remplie au tableau */
-    ListeClasse[i] = Classe_en_cours;
+        Classe Classe_en_cours;
+        /* Entrée dans le noeud de la classe en cours */
+        node_t *Classe_node;
+        Classe_node = roxml_get_chld(Classes, NULL, i);
+
+        /*----------------------------------------------------------------------------------------------*/
+        /* Chargement des caractéristiques de la classe en cours */
+        /*----------------------------------------------------------------------------------------------*/
+
+        fprintf(Classes_log,"\nChargement des caractéristiques de la classe numero %d\n", i+1);
+
+
+        char *id_text, *name_text, *DESC_text;
+        int PV_int, PM_int, MV_int;
+
+        /* Aquisition des stats de la classe en cours */
+        id_text = roxml_get_content(roxml_get_attr(Classe_node, "id", 0), NULL, 0, NULL);
+        name_text = roxml_get_content(roxml_get_attr(Classe_node, "name", 0), NULL, 0, NULL);
+        PV_int = atoi(roxml_get_content(roxml_get_attr(Classe_node, "PV", 0), NULL, 0, NULL));
+        PM_int = atoi(roxml_get_content(roxml_get_attr(Classe_node, "PM", 0), NULL, 0, NULL));
+        MV_int = atoi(roxml_get_content(roxml_get_attr(Classe_node, "MV", 0), NULL, 0, NULL));
+        DESC_text = roxml_get_content(roxml_get_attr(Classe_node, "Desc", 0), NULL, 0, NULL);
+
+        /* Ecriture des stats dans le fichier log */
+        fprintf(Classes_log,"Id : %s\n", id_text);
+        fprintf(Classes_log,"Nom : %s\n", name_text);
+        fprintf(Classes_log,"PV : %d\n", PV_int);
+        fprintf(Classes_log,"PM : %d\n", PM_int);
+        fprintf(Classes_log,"MV : %d\n", MV_int);
+        fprintf(Classes_log,"DESC : %s\n", DESC_text);
+
+        /* Remplissage des caractéristiques de la classe en cours */
+        Classe_en_cours.PV_max=PV_int;
+        Classe_en_cours.mana_max=PM_int;
+        Classe_en_cours.points_deplacement_max=MV_int;
+        strcpy(Classe_en_cours.nom, id_text);
+
+        /*----------------------------------------------------------------------------------------------*/
+        /*Chargement des skins de la classe en cours
+        /*----------------------------------------------------------------------------------------------*/
+
+        fprintf(Classes_log,"\nChargement des skins de la classe numero %d\n", i+1);
+
+        node_t* Skins;
+        char *id_Skin_text, *default_Skin_text, *selected_Skin_text, *healed_Skin_text, *damaged_Skin_text;
+
+        /* Aquisition des noms de fichiers de textures de la classe en cours */
+        Skins = roxml_get_chld(Classe_node, NULL, 1);
+        default_Skin_text = roxml_get_content(roxml_get_attr(Skins, "f_default", 0), NULL, 0, NULL);
+        selected_Skin_text = roxml_get_content(roxml_get_attr(Skins, "f_selected", 0), NULL, 0, NULL);
+        healed_Skin_text = roxml_get_content(roxml_get_attr(Skins, "f_healed", 0), NULL, 0, NULL);
+        damaged_Skin_text = roxml_get_content(roxml_get_attr(Skins, "f_damaged", 0), NULL, 0, NULL);
+
+        /* Ecriture des noms de fichiers de textures dans le fichier log */
+        fprintf(Classes_log,"\n default : %s", default_Skin_text);
+        fprintf(Classes_log,"\n selected : %s", selected_Skin_text);
+        fprintf(Classes_log,"\n healed : %s", healed_Skin_text);
+        fprintf(Classes_log,"\n damaged : %s\n\n", damaged_Skin_text);
+
+        /* Remplissage des skins de la classe en cours */
+        strcpy(Classe_en_cours.skins.charac_default, default_Skin_text);
+        strcpy(Classe_en_cours.skins.charac_damaged, damaged_Skin_text);
+        strcpy(Classe_en_cours.skins.charac_healed, healed_Skin_text);
+        strcpy(Classe_en_cours.skins.charac_selected, selected_Skin_text);
+
+        /*----------------------------------------------------------------------------------------------*/
+        /*Chargement des attaques de la classe en cours */
+        /*----------------------------------------------------------------------------------------------*/
+
+        fprintf(Classes_log,"\nChargement des attaques de la classe numero %d\n", i+1);
+
+        node_t* Skills;
+        Skills = roxml_get_chld(Classe_node, NULL, 0);
+        nb_skills = roxml_get_chld_nb(Skills);
+
+        for(j=0 ; (j<nb_skills)||(j<4) ; j++)
+        {
+
+            char *id_Skill_text, *name_Skill_text;
+            int RG_int, MN_int, nb_Effects;
+
+            node_t* Skill;
+            Skill = roxml_get_chld(Skills, NULL, j);
+            nb_Effects = roxml_get_chld_nb(Skill);
+
+            /* Aquisition de l'attaque en cours */
+            id_Skill_text = roxml_get_content(roxml_get_attr(Skill, "id", 0), NULL, 0, NULL);
+            name_Skill_text = roxml_get_content(roxml_get_attr(Skill, "name", 0), NULL, 0, NULL);
+            RG_int = atoi(roxml_get_content(roxml_get_attr(Skill, "RG", 0), NULL, 0, NULL));
+            MN_int = atoi(roxml_get_content(roxml_get_attr(Skill, "MN", 0), NULL, 0, NULL));
+
+            /* Ecriture de l'attaque en cours dans le fichier log */
+            fprintf(Classes_log,"\nAttaque numero %d :\n", j+1);
+            fprintf(Classes_log,"\n ID : %s", id_Skill_text);
+            fprintf(Classes_log,"\n Name : %s", name_Skill_text);
+            fprintf(Classes_log,"\n RG : %d", RG_int);
+            fprintf(Classes_log,"\n MN : %d\n\n", MN_int);
+
+            /* Remplissage de l'attaque en cours */
+            strcpy(Classe_en_cours.attaques[j].id, id_Skill_text);
+            strcpy(Classe_en_cours.attaques[j].nom, name_Skill_text);
+            Classe_en_cours.attaques[j].portee=RG_int;
+            Classe_en_cours.attaques[j].mana=MN_int;
+
+ for(k=0 ; (k<nb_Effects)||(k<4) ; k++)
+            {
+                char *id_Effect_text, *name_Effect_text;
+                int TURNS_int, DM_int, DM_DUR_int, HL_int, HL_DUR_int, PARA_int, TRNS_int;
+
+                node_t* Effect;
+                Effect = roxml_get_chld(Skill, NULL, k);
+
+                /* Aquisition de l'effet en cours */
+                id_Effect_text = roxml_get_content(roxml_get_attr(Effect, "id", 0), NULL, 0, NULL);
+                name_Effect_text = roxml_get_content(roxml_get_attr(Effect, "name", 0), NULL, 0, NULL);
+                TRNS_int = atoi(roxml_get_content(roxml_get_attr(Effect, "TRNS", 0), NULL, 0, NULL));
+                DM_int = atoi(roxml_get_content(roxml_get_attr(Effect, "DM", 0), NULL, 0, NULL));
+                DM_DUR_int = atoi(roxml_get_content(roxml_get_attr(Effect, "DM_DUR", 0), NULL, 0, NULL));
+                HL_int = atoi(roxml_get_content(roxml_get_attr(Effect, "HL", 0), NULL, 0, NULL));
+                HL_DUR_int = atoi(roxml_get_content(roxml_get_attr(Effect, "HL_DUR", 0), NULL, 0, NULL));
+                PARA_int = atoi(roxml_get_content(roxml_get_attr(Effect, "PARA", 0), NULL, 0, NULL));
+
+                /* Ecriture de l'effet en cours dans le fichier log */
+                fprintf(Classes_log,"\nEffet numero %d :\n", k+1);
+                fprintf(Classes_log,"\n ID : %s", id_Effect_text);
+                fprintf(Classes_log,"\n Name : %s", name_Effect_text);
+                fprintf(Classes_log,"\n Duree : %d", TRNS_int);
+                fprintf(Classes_log,"\n DM : : %d", RG_int);
+                fprintf(Classes_log,"\n DM_DUR : %d", DM_DUR_int);
+                fprintf(Classes_log,"\n HL : : %d", HL_int);
+                fprintf(Classes_log,"\n HL_DUR : %d", HL_DUR_int);
+                fprintf(Classes_log,"\n PARA : %d\n\n", PARA_int);
+
+                /* Remplissage de l'effet en cours */
+                strcpy(Classe_en_cours.attaques[j].effets[k].id, id_Skill_text);
+                strcpy(Classe_en_cours.attaques[j].effets[k].nom, name_Skill_text);
+                Classe_en_cours.attaques[j].effets[k].nb_tours=TRNS_int;
+                Classe_en_cours.attaques[j].effets[k].paralysie=PARA_int;
+                Classe_en_cours.attaques[j].effets[k].valeur_degats=DM_int;
+                Classe_en_cours.attaques[j].effets[k].valeur_degats_duree=DM_DUR_int;
+                Classe_en_cours.attaques[j].effets[k].valeur_soin=HL_int;
+                Classe_en_cours.attaques[j].effets[k].valeur_soin_duree=HL_DUR_int;
+            }
+        }
+
+    /*--------------------------------------------------------------------------------------------------*/
+    /* Insertion de la classe dans le tableau */
+    /*--------------------------------------------------------------------------------------------------*/
+        fprintf(Classes_log,"Insertion de la classe %d dans le tableau\n", i+1);
+
+
+
+
+        /* Ajout de la classe remplie au tableau */
+        //ListeClasse[i] = Classe_en_cours;
     }
 
-roxml_free_node(rootXML);
-roxml_free_node(ClassesXML);
+    roxml_free_node(rootXML);
+    roxml_free_node(Classes);
 
 
-return ListeClasse;
+    return /*ListeClasse*/ 0;
 }
 
diff --git a/src/ClassesXML.h b/src/ClassesXML.h
index 5194a56..a0063d9 100644
--- a/src/ClassesXML.h
+++ b/src/ClassesXML.h
@@ -11,6 +11,6 @@
 #include "classe.h"
 #include "structures.h"
 
-Classe* Remplir_Classes(FILE* Classes_log, char *filename);
+/*Classe**/int Remplir_Classes(FILE* Classes_log, char *filename);
 
 #endif // CLASSESXML_H_INCLUDED
diff --git a/src/classe.h b/src/classe.h
index 759d0f3..9bea4f5 100644
--- a/src/classe.h
+++ b/src/classe.h
@@ -11,6 +11,9 @@
 #include "ClassesXML.h"
 
 
+
+
+
 Classe* Librairie_Classes(char *filename);
 
 Classe* Remplir_Classes_log(char *filename);
diff --git a/src/main.c b/src/main.c
index cffcba5..bb8964b 100644
--- a/src/main.c
+++ b/src/main.c
@@ -78,17 +78,15 @@ int main()
 
 //init_jeu("../resources/Init_jeu.xml");
 
-char *Map_A = ExtraireCarte(1);
+char *Map_A = ExtraireCarte(4);
 printf("Map en version texte : %s\n", Map_A);
 
 Terrain *Terrains_A = Librairie_Terrains("../resources/Terrains.xml");
 printf("info Terrain: %d\n", Terrains_A[1].franchissable);
 
-Skins_Terrain *Images_terrains = Load_Skins_Terrain("../resources/Skins.xml");
-printf("Adresse du skin montagne : %s\n", Images_terrains[2].terrain_default);
+Librairie_Classes("../resources/Classes.xml");
+
 
-Skins_Charac *Images_persos = Load_Skin_Charac("../resources/Skins.xml");
-printf("Adresse du skin mage damaged : %s\n", Images_persos[0].charac_id);
 
 main_SDL(Map_A);
 
diff --git a/src/skinsXML.c b/src/skinsXML.c
deleted file mode 100644
index 6af3507..0000000
--- a/src/skinsXML.c
+++ /dev/null
@@ -1,103 +0,0 @@
-#include <stdio.h>
-#include <stdlib.h>
-#include <roxml.h>
-
-#include "skinsXML.h"
-#include "structures.h"
-
-/*!
-* \file classesXML.c
-* \brief Fichier contenant le code des fonctions d'aquisition des fichiers images.
-*/
-
-
-/*!
- * \fn Skins_Charac* Remplir_Skin_Charac(char *filename)
- * \brief Fonction qui extrait les noms des fichiers images.
- *
- * \return un pointeur sur une collection de noms de fichiers.
- */
-Skins_Charac* Load_Skin_Charac(char *filename)
-{
-
-    FILE* Skins_log = NULL;
-    Skins_log = fopen("Skin_XML_log", "w");
-    if (Skins_log != NULL)
-    {
-        fprintf(Skins_log,"Fichier decrivant le deroulement de la procedure d'aquisition des textures personnages\n\n");
-        node_t *rootXML, *Skins, *Personnages;
-        unsigned int i=0, nb_persos=0;
-
-        rootXML = roxml_load_doc(filename);            /* Ouvre le doc XML et créé le noeud de base */
-        Skins = roxml_get_chld(rootXML, NULL, 0);
-        Personnages = roxml_get_chld(Skins, NULL, 0);
-        nb_persos = roxml_get_chld_nb(Personnages);
-
-        Skins_Charac* Liste_Skins_Charac = NULL;
-
-        Liste_Skins_Charac = malloc(nb_persos * sizeof(Skins_Charac));     /* Allocation de la mémoire nécéssaire et test*/
-        if (Liste_Skins_Charac == NULL)
-        {
-            fprintf(Skins_log,"Allocation impossible \n");
-            exit(EXIT_FAILURE);
-        }
-        fprintf(Skins_log,"1) Memoire allouee avec succes \n");
-        fprintf(Skins_log,"La memoire allouee fait %lu octets\n",nb_persos * sizeof(Skins_Charac));
-
-        /* -----------------------------------------------------------------------------------------------------------------------*/
-
-        for(i=0; i<nb_persos; i++)
-        {
-            fprintf(Skins_log,"\nChargement de la classe numero %d\n", i+1);
-
-            Skins_Charac Skins_Charac_en_cours;
-
-            node_t* Skin;
-            char *id_text, *default_text, *selected_text, *healed_text, *damaged_text;
-
-            Skin = roxml_get_chld(Personnages, 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);
-            selected_text = roxml_get_content(roxml_get_attr(Skin, "f_selected", 0), NULL, 0, NULL);
-            healed_text = roxml_get_content(roxml_get_attr(Skin, "f_healed", 0), NULL, 0, NULL);
-            damaged_text = roxml_get_content(roxml_get_attr(Skin, "f_damaged", 0), NULL, 0, NULL);
-
-            /* Tests
-            printf("TEST damaged : %s\n\n",damaged_text);
-            printf("TEST healed : %s\n\n",healed_text);
-            printf("TEST selected : %s\n\n",selected_text);
-            printf("TEST default : %s\n\n",default_text);
-            */
-
-            fprintf(Skins_log,"\n ID : %s", damaged_text);
-            fprintf(Skins_log,"\n default : %s", default_text);
-            fprintf(Skins_log,"\n selected : %s", selected_text);
-            fprintf(Skins_log,"\n healed : %s", healed_text);
-            fprintf(Skins_log,"\n damaged : %s\n\n", damaged_text);
-
-
-            strcpy(Skins_Charac_en_cours.charac_id, id_text);
-            strcpy(Skins_Charac_en_cours.charac_default, default_text);
-            strcpy(Skins_Charac_en_cours.charac_selected, selected_text);
-            strcpy(Skins_Charac_en_cours.charac_healed, healed_text);
-            strcpy(Skins_Charac_en_cours.charac_damaged, damaged_text);
-
-            Liste_Skins_Charac[i] = Skins_Charac_en_cours;
-
-            /* Tests
-            printf("Nom : %s\n\n", Skins_Charac_en_cours.charac_id);
-            printf("Healed : %s\n\n", Skins_Charac_en_cours.charac_healed);
-            printf("Damaged : %s\n\n", Skins_Charac_en_cours.charac_damaged);
-            printf("Selected : %s\n\n", Skins_Charac_en_cours.charac_selected);
-            printf("Default : %s\n\n", Skins_Charac_en_cours.charac_default);
-            */
-        }
-        fclose(Skins_log);
-        return Liste_Skins_Charac;
-    }
-    else
-    {
-        fprintf(stderr,"Impossible d'ouvrir le fichier Skins_XML_log");
-
-    }
-}
diff --git a/src/skinsXML.h b/src/skinsXML.h
deleted file mode 100644
index 0ad023b..0000000
--- a/src/skinsXML.h
+++ /dev/null
@@ -1,24 +0,0 @@
-/*!
-* \file AffichageConsole.h
-* \brief Fichier contenant les signatures des fonctions liees a l'aquisition des fichiers images.
-*/
-
-#ifndef SKINSXML_H_INCLUDED
-#define SKINSXML_H_INCLUDED
-#include <roxml.h>
-#include "structures.h"
-
- typedef struct Skins_Charac{
-    char charac_id[15];
-    char charac_default[50];
-    char charac_selected[50];
-    char charac_healed[50];
-    char charac_damaged[50];
-}Skins_Charac;
-
-
-Skins_Charac* Load_Skin_Charac(char *filename);
-
-
-
-#endif // SKINSXML_H_INCLUDED
diff --git a/src/structures.h b/src/structures.h
index 9623b2e..f1bd533 100644
--- a/src/structures.h
+++ b/src/structures.h
@@ -38,6 +38,19 @@
  */
 typedef enum {faux, vrai} boolean;
 
+/*! \struct Skins_Charac structures.h
+ * \brief Definition de la structure Skins_Charac
+ *
+ * Ensemble de noms de fichiers indiquant les textures des personnages
+ */
+ typedef struct Skins_Charac{
+    char charac_default[50];
+    char charac_selected[50];
+    char charac_healed[50];
+    char charac_damaged[50];
+} Skins_Charac;
+
+
 /*! \struct Type_terrain structures.h
  * \brief Definition de la structure Type_terrain
  */
@@ -69,32 +82,37 @@ typedef Case Carte[TAILLE_MAX_CARTE];
  * \brief Definition de la structure Effet.
  */
 typedef struct Effet{
-    unsigned int nb_tours_restants;/*!< Le nombre de tours restants avant que l'effet ne s'estompe*/
+    char id[TAILLE_ID]; /*!< ID de l'effet de taille TAILLE_ID*/
+    char nom[TAILLE_NOMS]; /*!< Nom de l'effet de taille TAILLE_NOMS*/
+    unsigned int nb_tours;/*!< Le nombre de tours restants avant que l'effet ne s'estompe*/
+    unsigned int valeur_degats; /*!< Le nombre de degat subit */
+    unsigned int valeur_soin; /*!< Le nombre PV regeneres */
     unsigned int valeur_degats_duree; /*!< Le nombre de degat de duree subit par tour*/
     unsigned int valeur_soin_duree; /*!< Le nombre PV regeneres par tour*/
-    boolean paralysie; /*!< L'effet provoque ou non une paralysie*/
+    unsigned int paralysie; /*!< L'effet provoque ou non une paralysie*/
 } Effet;
 
 /*! \struct Attaque structures.h
  * \brief Definition de la structure Attaque.
  */
 typedef struct Attaque{
+    char id[TAILLE_ID];
     char nom[TAILLE_NOMS]; /*!< Nom de l'attaque de taille TAILLE_NOMS*/
-    unsigned short int degats_directs; /*!< Degats direct occasionnes*/
-    unsigned short int mana; /*!< Mana consommé*/
+    unsigned short int mana;
     unsigned short int portee; /*!< Portee en nombre de cases de l'attaque*/
-    Effet effets[]; /*!< Tableau des effets appliques par l'attaque, cela comprend les dégâts de duree*/
+    Effet effets[5]; /*!< Tableau des effets appliques par l'attaque, cela comprend les dégâts de duree*/
 } Attaque;
 
 /*! \struct Classe structures.h
  * \brief Definition de la structure Classe.
  */
 typedef struct Classe{
-    char nom[1]; /*!< Nom de la classe de taille TAILLE_NOMS*/
-    Attaque* attaques; /*!< Les attaques disponibles pour la classe*/
+    char nom[25]; /*!< Nom de la classe de taille TAILLE_NOMS*/
+    Attaque attaques[5]; /*!< Les attaques disponibles pour la classe*/
     unsigned short int points_deplacement_max; /*!< Les PD maximums accordés a la classe*/
     unsigned short int PV_max; /*!< Les PV maximums accordés a la classe*/
     unsigned short int mana_max; /*!< Le mana maximum accordé a la classe*/
+    Skins_Charac skins;
 }Classe;
 
 /*! \struct Personnage structures.h
@@ -130,9 +148,12 @@ typedef struct Competence{
 typedef struct Effet_Competence{
     unsigned short int id; /*!< Un entier qui represente la competence*/
     char nom[TAILLE_NOMS]; /*!< Nom de la competence de taille TAILLE_NOMS*/
-    /* effets à définir */
+/* ........ */
+} Effet_Competence;
+
+
+
 
-}Effet_Competence;
 
 /*! \struct Joueur structures.h
  * \brief Definition de la structure Joueur
-- 
GitLab