diff --git a/resources/Skins.xml b/resources/Skins.xml index 9eacdc10e5b359384f4022ed9add9a4edba3a064..9ca62f9ab2c37e74e42e92ad31b53539585fb6cf 100644 --- a/resources/Skins.xml +++ b/resources/Skins.xml @@ -3,35 +3,35 @@ <Skins> <Personnages> - <Skin 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"> + <Skin 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"> </Skin> - <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"> + <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"> </Skin> - <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"> + <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"> </Skin> - <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"> + <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"> </Skin> - <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 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> </Personnages> <Terrains> - <Skin id="ST_FOREST" f_default="resources/Skins/foret.bmp"> + <Skin id="ST_FOREST" f_default="../resources/Skins/foret.bmp"> </Skin> - <Skin id="ST_PLAIN" f_default="resources/Skins/plaine.bmp"> + <Skin id="ST_PLAIN" f_default="../resources/Skins/plaine.bmp"> </Skin> - <Skin id="ST_MOUNTAIN" f_default="resources/Skins/montagne.bmp"> + <Skin id="ST_MOUNTAIN" f_default="../resources/Skins/montagne.bmp"> </Skin> - <Skin id="ST_WATER" f_default="resources/Skins/eau.bmp"> + <Skin id="ST_WATER" f_default="../resources/Skins/eau.bmp"> </Skin> - <Skin id="ST_ACTIVE" f_default="resources/Skins/case_brillante.bmp"> + <Skin id="ST_ACTIVE" f_default="../resources/Skins/case_brillante.bmp"> </Skin> </Terrains> <Interface> - <Skin id="SI_RESUME" f_default="resources/Skins/continuer.bmp"> + <Skin id="SI_RESUME" f_default="../resources/Skins/continuer.bmp"> </Skin> - <Skin id="ST_QUIT" f_default="resources/Skins/quitter.bmp"> + <Skin id="ST_QUIT" f_default="../resources/Skins/quitter.bmp"> </Skin> </Interface> diff --git a/src/main.c b/src/main.c index d2b42c306a5f9263564fa2d296958f37cdf9fd13..d01b2114ade49e9c00feddbe62bcdc260ac1d472 100644 --- a/src/main.c +++ b/src/main.c @@ -7,6 +7,7 @@ #include "SDL.h" #include "roxml.h" #include "carte.h" +#include "skinsXML.h" int init_jeu(const char *filename){ /* crée les différents types de terrains, de classes et d'attaques en lisant dans un fichier */ FILE *fichier_init; @@ -86,6 +87,9 @@ 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); + main_SDL(Map_A); diff --git a/src/skinsXML.c b/src/skinsXML.c new file mode 100644 index 0000000000000000000000000000000000000000..1b319cc530add3aac0cb734fbf6be8c96c41aaaa --- /dev/null +++ b/src/skinsXML.c @@ -0,0 +1,103 @@ +#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* Remplir_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 %d 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 new file mode 100644 index 0000000000000000000000000000000000000000..7a559d3eed1968bbf5ee7716f3d1eb4f68004745 --- /dev/null +++ b/src/skinsXML.h @@ -0,0 +1,24 @@ +/*! +* \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* Remplir_Skin_Charac(char *filename); + + + +#endif // SKINSXML_H_INCLUDED