diff --git a/resources/Maps.xml b/resources/Maps.xml new file mode 100644 index 0000000000000000000000000000000000000000..43b9e6ca855e1510141ef0784a92e2f7c01e408a --- /dev/null +++ b/resources/Maps.xml @@ -0,0 +1,61 @@ +<?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>MFPPRRPPFM</Line> +<Line>MFPPRRPPFM</Line> +<Line>MFPPRRPPFM</Line> +<Line>MFPPRRPPFM</Line> +<Line>MFPPRRPPFM</Line> +<Line>MFPPRRPPFM</Line> +<Line>MFPPRRPPFM</Line> +<Line>MFPPRRPPFM</Line> +<Line>MFPPRRPPFM</Line> +<Line>MFPPRRPPFM</Line> +<Line>MFPPRRPPFM</Line> +<Line>MFPPRRPPFM</Line> +<Line>MFPPRRPPFM</Line> +<Line>MFPPRRPPFM</Line> +<Line>MFPPRRPPFM</Line> +<Line>MFPPRRPPFM</Line> +</Map> + +<Map id="MAP_2" name="Chasse au trésor" desc="Une map pour 2 joueurs qui rend fou !! " taille_lignes="10"> + <Line>MFPPRRPPFM</Line> + <Line>MFPPRRPPFM</Line> + <Line>MFPPRRPPFM</Line> + <Line>MFPPRRPPFM</Line> + <Line>MFPPRRPPFM</Line> + <Line>MFPPRRPPFM</Line> + <Line>MFPPRRPPFM</Line> + <Line>MFPPRRPPFM</Line> + <Line>MFPPRRPPFM</Line> + <Line>MFPPRRPPFM</Line> + <Line>MFPPRRPPFM</Line> + <Line>MFPPRRPPFM</Line> + <Line>MFPPRRPPFM</Line> + <Line>MFPPRRPPFM</Line> + <Line>MFPPRRPPFM</Line> + <Line>MFPPRRPPFM</Line> +</Map> + +<Map id="MAP_3" name="Chasse au trésor" desc="Une map pour 2 joueurs qui rend fou !! " taille_lignes="10"> + <Line>MFPPRRPPFM</Line> + <Line>MFPPRRPPFM</Line> + <Line>MFPPRRPPFM</Line> + <Line>MFPPRRPPFM</Line> + <Line>MFPPRRPPFM</Line> + <Line>MFPPRRPPFM</Line> + <Line>MFPPRRPPFM</Line> + <Line>MFPPRRPPFM</Line> + <Line>MFPPRRPPFM</Line> + <Line>MFPPRRPPFM</Line> + <Line>MFPPRRPPFM</Line> + <Line>MFPPRRPPFM</Line> + <Line>MFPPRRPPFM</Line> + <Line>MFPPRRPPFM</Line> + <Line>MFPPRRPPFM</Line> + <Line>MFPPRRPPFM</Line> +</Map> + +</Maps> diff --git a/src/carte.c b/src/carte.c index b1d683dbff21cbac10aef173f053ec4852b4d192..de2807d1cd131f3a95209420b21f102049661f63 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,85 @@ 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=0; + 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); + //printf("La carte contient %d lignes\n", nb_lignes); + + 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<16 /*nb_lignes*/ ; j++) + { + node_t* Ligne_Actuelle; + Ligne_Actuelle = roxml_get_chld(Map_Actuelle, NULL, j); + + char sequence_ligne[9]; + 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 95937911188531844ed9fe392f3c11069d1ec9b7..d3bac46f311036a0cf4eb6e45b6d5ba7bf336179 100644 --- a/src/main.c +++ b/src/main.c @@ -95,10 +95,12 @@ Game_Package Construire_Package() Classe* Classes_Pack = Librairie_Classes("../resources/Classes.xml"); Terrain* Terrains_Pack = Librairie_Terrains("../resources/Terrains.xml"); Skins_GUI* GUI_Pack = Get_Skins_GUI("../resources/GUI.xml"); + Carte_A* Map_Pack = ExtraireCartesXML("../resources/Maps.xml"); Pack.Classes_Package = Classes_Pack; Pack.Terrains_Package = Terrains_Pack; Pack.GUI_Package = GUI_Pack; + Pack.Cartes_Package = Map_Pack; return Pack; } @@ -109,17 +111,23 @@ int main() //init_jeu("../resources/Init_jeu.xml"); - char *Map_A = ExtraireCarte(4); - printf("Map en version texte : %s\n", Map_A); + char *Map_ANCIENNE_VERSION = ExtraireCarte(4); + //printf("Map en version texte : %s\n", Map_A); + /* -------------------------------------*/ + /* Creation du package : */ + /* -------------------------------------*/ + Game_Package Pack_A = Construire_Package(); /* -------------------------------------*/ /* Comment utiliser le package : */ /* -------------------------------------*/ - printf("L'attaque 1 du mage est : %s\n",Pack_A.Classes_Package[0].attaques[2].nom); + + printf("L'attaque 1 du mage est : %s\n",Pack_A.Classes_Package[0].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); printf("La ligne 3 de la map 1 est : %s\n",Pack_A.Cartes_Package[0].lignes[2]); diff --git a/src/structures.h b/src/structures.h index 779b66d75be945054889f1e795b9a1ea0d886238..ee38b4ddf56a0109187636a3b3cca7c71ab2c276 100644 --- a/src/structures.h +++ b/src/structures.h @@ -112,7 +112,7 @@ typedef struct Attaque{ char nom[TAILLE_NOMS]; /*!< Nom de l'attaque de taille TAILLE_NOMS*/ unsigned short int mana; unsigned short int portee; /*!< Portee en nombre de cases de l'attaque*/ - Effet effets[5]; /*!< 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 @@ -122,9 +122,9 @@ typedef struct Attaque{ typedef struct 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*/ + 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; @@ -168,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[17][11]; +} Carte_A; + + /*! \struct Classe structures.h * \brief Definition de la structure Game_Package * sizeof(Classe) = @@ -176,6 +184,7 @@ typedef struct Game_Package{ Classe* Classes_Package; Terrain* Terrains_Package; Skins_GUI* GUI_Package; + Carte_A* Cartes_Package; }Game_Package; @@ -189,7 +198,7 @@ typedef struct Game_Package{ */ typedef struct Joueur{ char nomJoueur[TAILLE_NOMS]; /*!< Le nom identifiant le Joueur*/ - Personnage * groupe[TAILLE_MAX_GROUPE];/*!< Les personnages du joueur qui prennent part à la partie.*/ + Personnage * groupe[TAILLE_MAX_GROUPE];/*!< Les personnages du joueur qui prennent part à la partie.*/ } Joueur; /*! \struct NodeJoueur structures.h @@ -221,12 +230,13 @@ typedef struct Game_Package{ * \brief Definition de la structure Partie * * Contient les informations concernant la partie telles que la liste des joueurs participants - * le nombre de tours. Cette structure permet de gérer les tours + * le nombre de tours. Cette structure permet de gérer les tours * Peut eventuellement contenir l'information Carte si c'est utile. * sizeof(Partie) = 12 octets */ - typedef struct Partie{ - ListJoueur * participants; /*!< La liste de joueurs prennant parts à la 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*/ }Partie;