diff --git a/resources/Competences.xml b/resources/Competences.xml index c3cd89eb3ead42817cb1aada866cdf72f176ec9d..8f51301374201aa2aec4b27ac0ad9ed42f00ca9a 100644 --- a/resources/Competences.xml +++ b/resources/Competences.xml @@ -2,7 +2,7 @@ <Arbres> - <Arbre id="S_MAGE"> + <Arbre id="S_MAGE" nom="Creer Mage" prix="1"> <Competence_E1 id="S_MAGE_1" nom="Creer Mage" prix="1"> <Competence_E2 id="S_MAGE_11" nom="Instinct de survie" prix="1"> <Competence_E3 id="S_MAGE_111" nom="Echo" prix="1"> @@ -27,22 +27,22 @@ </Competence_E1> </Arbre> - <Arbre id="S_WAR"> + <Arbre id="S_WAR" nom="Creer Mage" prix="1"> </Arbre> - <Arbre id="S_HEAL"> + <Arbre id="S_HEAL" nom="Creer Mage" prix="1"> </Arbre> - <Arbre id="S_ROGUE"> + <Arbre id="S_ROGUE" nom="Creer Mage" prix="1"> </Arbre> - <Arbre id="S_ARCHER"> + <Arbre id="S_ARCHER" nom="Creer Mage" prix="1"> </Arbre> diff --git a/src/competence.c b/src/competence.c index 4903f40d319df1c7abb78ef1a8d7245e0a1ff189..4e551f063f2d91617957e2f38f81a1989954caf1 100644 --- a/src/competence.c +++ b/src/competence.c @@ -30,12 +30,10 @@ typedef struct Competence{ * * \return Un entier. */ -Competence* init_Competence(Competence *noeud) +Competence* init_Competence() { - noeud = malloc(sizeof(Competence)); + Competence* noeud = malloc(sizeof(Competence)); - memset(noeud->nomComp, 0, sizeof(noeud->nomComp)); - memset(noeud->id, 0, sizeof(noeud->id)); noeud->prix_competence = 0; noeud->frere = NULL; noeud->enfant = NULL; @@ -79,10 +77,9 @@ int set_comp_enfant(Competence *parent, Competence *nouvel_enfant) /* Ne foncti { if(estVide(parent)) { - init_Competence(parent->enfant); parent->enfant = nouvel_enfant; } - else // Solution cracra mais ça ne marche pas autrement (avec un while) // + else { set_comp_frere(parent->enfant, nouvel_enfant); } @@ -97,7 +94,6 @@ int set_comp_frere(Competence *noeud, Competence *nouveau_frere) } else { - init_Competence(noeud->frere); noeud->frere = nouveau_frere; } return 0; @@ -234,146 +230,66 @@ Effet_Competence * get_effet(Competence *c) /* Renvoie l'effet d'une compe return c->effet; } +int Extraire_Comp_Tree(node_t *arbreXML, Competence* arbreComp) +{ + int nb_Comp=0, i=0; + + nb_Comp = roxml_get_chld_nb(arbreXML); + + for(i=0; i<nb_Comp; i++) + { + node_t *brancheXML; + Competence *comp = init_Competence(); + + brancheXML = roxml_get_chld(arbreXML, NULL, i); + printf("--> Extraction de la competence %d sur %d \n", i+1, nb_Comp); + + set_comp_name(comp, roxml_get_content(roxml_get_attr(brancheXML,"nom",0),NULL,0,NULL)); + set_comp_id(comp, roxml_get_content(roxml_get_attr(brancheXML,"id",0),NULL,0,NULL)); + set_comp_prix(comp, atoi(roxml_get_content(roxml_get_attr(brancheXML,"prix",0),NULL,0,NULL))); + + printf("La competence actuelle a pour nom : %s\n", comp->nomComp); + printf("La competence actuelle a pour id : %s\n", comp->id); + printf("La competence actuelle a pour prix : %d\n", comp->prix_competence); + + Extraire_Comp_Tree(brancheXML, comp); + + set_comp_enfant(arbreComp, comp); + } + return 0; +} Competence* Extraire_Arbres(char *filename) { node_t *rootXML, *Arbres; int nb_Arbres=0, i_0=0; + Competence *Arbre_Competences = init_Competence(); rootXML = roxml_load_doc(filename); Arbres = roxml_get_chld(rootXML,"Arbres",0); - nb_Arbres = roxml_get_chld_nb(Arbres); - printf("On a %d arbres de competences \n", nb_Arbres); /* ---------------------------------------------------------------------------------------------- */ /* Extraction des arbres */ /* ---------------------------------------------------------------------------------------------- */ + Extraire_Comp_Tree(Arbres, Arbre_Competences); - for(i_0=0; i_0<nb_Arbres; i_0++) - { - node_t *ArbreXML_Actuel = roxml_get_chld(Arbres, NULL, i_0); - Competence *Arbre_Actuel; - int nb_Comp1=0, i_1=0; - - Arbre_Actuel = init_Competence(Arbre_Actuel); - - nb_Comp1 = roxml_get_chld_nb(ArbreXML_Actuel); - printf("L'arbre %d contient %d competences de niveau 1\n",i_0, nb_Comp1); - set_comp_name(Arbre_Actuel,roxml_get_content(roxml_get_attr(ArbreXML_Actuel,"id",0),NULL,0,NULL)); - printf("\nL'arbre actuel a pour nom : %s\n", Arbre_Actuel->nomComp); - - /* ---------------------------------------------------------------------------------------------- */ - /* Extraction des competences 1 */ - /* ---------------------------------------------------------------------------------------------- */ - - for(i_1=0; i_1<nb_Comp1; i_1++) - { - node_t *CompetenceXML_1; - Competence *Competence_1; - int nb_Comp2=0, i_2=0; - - Competence_1 = init_Competence(Competence_1); - - CompetenceXML_1 = roxml_get_chld(ArbreXML_Actuel, NULL, i_1); - nb_Comp2 = roxml_get_chld_nb(CompetenceXML_1); - printf("La competence numero %d de niveau 1 contient %d competences de niveau 2\n",i_1+1,nb_Comp2); - - set_comp_name(Competence_1,roxml_get_content(roxml_get_attr(CompetenceXML_1,"nom",0),NULL,0,NULL)); - set_comp_id(Competence_1,roxml_get_content(roxml_get_attr(CompetenceXML_1,"id",0),NULL,0,NULL)); - set_comp_prix(Competence_1,roxml_get_content(roxml_get_attr(CompetenceXML_1,"prix",0),NULL,0,NULL)); - - printf("La competence_1 actuelle a pour nom : %s\n", Competence_1->nomComp); - printf("La competence_1 actuelle a pour id : %s\n", Competence_1->id); - printf("La competence_1 actuelle a pour prix : %s\n", Competence_1->prix_competence); - - - for(i_2=0; i_2<nb_Comp2; i_2++) - { - node_t *CompetenceXML_2; - Competence *Competence_2; - int nb_Comp3=0, i_3=0; - - Competence_2 = init_Competence(Competence_2); - CompetenceXML_2 = roxml_get_chld(CompetenceXML_1, NULL, i_2); - nb_Comp3 = roxml_get_chld_nb(CompetenceXML_2); - printf("La competence numero %d de niveau 2 contient %d competences de niveau 3\n",i_2+1,nb_Comp3); - - set_comp_name(Competence_2,roxml_get_content(roxml_get_attr(CompetenceXML_2,"nom",0),NULL,0,NULL)); - set_comp_id(Competence_2,roxml_get_content(roxml_get_attr(CompetenceXML_2,"id",0),NULL,0,NULL)); - set_comp_prix(Competence_2,roxml_get_content(roxml_get_attr(CompetenceXML_2,"prix",0),NULL,0,NULL)); - - printf("La competence_2 actuelle a pour nom : %s\n", Competence_2->nomComp); - printf("La competence_2 actuelle a pour id : %s\n", Competence_2->id); - printf("La competence_2 actuelle a pour prix : %s\n", Competence_2->prix_competence); - - for(i_3=0; i_3<nb_Comp3; i_3++) - { - node_t *CompetenceXML_3; - Competence *Competence_3; - int nb_Comp4=0, i_4=0; - - Competence_3 = init_Competence(Competence_3); - CompetenceXML_3 = roxml_get_chld(CompetenceXML_2, NULL, i_3); - nb_Comp4 = roxml_get_chld_nb(CompetenceXML_3); - printf("La competence numero %d de niveau 3 contient %d competences de niveau 4\n",i_3+1,nb_Comp4); - - set_comp_name(Competence_3,roxml_get_content(roxml_get_attr(CompetenceXML_3,"nom",0),NULL,0,NULL)); - set_comp_id(Competence_3,roxml_get_content(roxml_get_attr(CompetenceXML_3,"id",0),NULL,0,NULL)); - set_comp_prix(Competence_3,roxml_get_content(roxml_get_attr(CompetenceXML_3,"prix",0),NULL,0,NULL)); - - printf("La competence_3 actuelle a pour nom : %s\n", Competence_3->nomComp); - printf("La competence_3 actuelle a pour id : %s\n", Competence_3->id); - printf("La competence_3 actuelle a pour prix : %s\n", Competence_3->prix_competence); - - for(i_4=0; i_4<nb_Comp4; i_4++) - { - node_t *CompetenceXML_4; - Competence *Competence_4; - - Competence_4 = init_Competence(Competence_4); - CompetenceXML_4 = roxml_get_chld(CompetenceXML_3, NULL, i_4); - - set_comp_name(Competence_4,roxml_get_content(roxml_get_attr(CompetenceXML_4,"nom",0),NULL,0,NULL)); - set_comp_id(Competence_4,roxml_get_content(roxml_get_attr(CompetenceXML_4,"id",0),NULL,0,NULL)); - set_comp_prix(Competence_4,roxml_get_content(roxml_get_attr(CompetenceXML_4,"prix",0),NULL,0,NULL)); - - printf("La competence_4 actuelle a pour nom : %s\n", Competence_4->nomComp); - printf("La competence_4 actuelle a pour id : %s\n", Competence_4->id); - printf("La competence_4 actuelle a pour prix : %s\n", Competence_4->prix_competence); - - /* La competence 4 devient un enfant de la competence 3 */ - set_comp_enfant(Competence_3, Competence_4); //FAIT PLANTER A PARTIR DE 3 NIVEAUX DE REMPLISSAGE - } - /* La competence 3 devient un enfant de la competence 2 */ - //set_comp_enfant(Competence_2, Competence_3); - } - /* La competence 2 devient un enfant de la competence 1 */ - set_comp_enfant(Competence_1, Competence_2); - } - /* La competence 1 devient un enfant du premier noeud */ - //set_comp_enfant(Arbre_Actuel, Competence_1); - } - - } - - - - return 0; + return Arbre_Competences; } - int Test_Competences() - { +int Test_Competences() +{ + int ret = 0; printf("Debut Test Competences\n"); Competence *Comp_Test_Parent, *Comp_Test_Enfant, *Comp_Test_Petit_Enfant, *Comp_Test_Frere_Enfant; - Comp_Test_Parent=init_Competence(Comp_Test_Parent); - Comp_Test_Enfant=init_Competence(Comp_Test_Enfant); - Comp_Test_Petit_Enfant=init_Competence(Comp_Test_Petit_Enfant); - Comp_Test_Frere_Enfant=init_Competence(Comp_Test_Frere_Enfant); + Comp_Test_Parent = init_Competence(); + Comp_Test_Enfant = init_Competence(); + Comp_Test_Petit_Enfant = init_Competence(); + Comp_Test_Frere_Enfant = init_Competence(); if(estVide(Comp_Test_Parent)) /* Test de estVide() */ { diff --git a/src/competence.h b/src/competence.h index 530a1539838dcbc84640abf99d0640a92985f8dc..26faba1c1a83ac44ec08284533f5dd4bf6c87375 100644 --- a/src/competence.h +++ b/src/competence.h @@ -9,7 +9,7 @@ /* Fonctions */ -Competence* init_Competence(Competence *noeud); +Competence* init_Competence(); /* Fonctions Set */ diff --git a/src/main.c b/src/main.c index 7cc72bc4335f2e7273ee284b9b317fd6b5e2e0e1..41c0011c4793c4ff6ee9eb613d8b630a6531bda7 100644 --- a/src/main.c +++ b/src/main.c @@ -87,7 +87,7 @@ int main() //init_jeu("../resources/Init_jeu.xml"); - char *Map_ANCIENNE_VERSION = ExtraireCarte(4); + char *Map_ANCIENNE_VERSION = ExtraireCarte(1); //printf("Map en version texte : %s\n", Map_A); @@ -100,12 +100,13 @@ Game_Package Pack_A = 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"); -/*Competence* Competences_Pack = */Extraire_Arbres("../resources/Competences.xml"); +Competence* Competences_Pack = Extraire_Arbres("../resources/Competences.xml"); Pack_A.Classes_Package = Classes_Pack; Pack_A.Terrains_Package = Terrains_Pack; Pack_A.GUI_Package = GUI_Pack; +Pack_A.Competences_Package = Competences_Pack; /* -------------------------------------*/ /* Comment utiliser le package : */ @@ -120,7 +121,7 @@ Pack_A.GUI_Package = GUI_Pack; /* -------------------------------------*/ /* -------------------------------------*/ - main_SDL(Map_ANCIENNE_VERSION); + //main_SDL(Map_ANCIENNE_VERSION); //SDL_bis(); //Test_Competences(); diff --git a/src/structures.h b/src/structures.h index 6ca6a6d359557a33107d8ccf73aef5c864e73e5b..b439fd36324708792f4337370ff3dd22edb95609 100644 --- a/src/structures.h +++ b/src/structures.h @@ -237,6 +237,7 @@ typedef struct Game_Package{ Terrain* Terrains_Package; Skins_GUI* GUI_Package; Carte_A* Cartes_Package; + Competence* Competences_Package; }Game_Package;