Skip to content
Snippets Groups Projects
Commit 73dd9dfd authored by ColinDrieu's avatar ColinDrieu
Browse files

Ajout des fonctions recupérant les noms et le chemin des skins à controlleur.c

Pour écrire ces fonctions j'ai également modifié la structure.h et gamePackage
afin de récupérer le nombre de Classes contenues dans le fichier XML.
parent 2a33f678
No related branches found
No related tags found
No related merge requests found
......@@ -13,6 +13,7 @@
#include "personnage.h"
#include "classe.h"
#include "gamePackage.h"
#include "roxml.h"
Partie * partieGlobale;
Game_Package packGlobal;
......@@ -27,7 +28,7 @@ void initJeu(){
}
/*!
* \fn void ajouterUnJoueur(char * nomDuJoueur, Et)
* \fn void ajouterUnJoueur(char * nomDuJoueur, EtatsJeu * etat)
* \brief Fonction ajoutant un Joueur à la Partie et faisant passer la partie à l'état suivant.
* Si le joueur n'a pas correctement été ajouté, l'état reste le même.
*
......@@ -49,6 +50,56 @@ void initJeu(){
}
}
/*!
* \fn char ** obtenirNomsClasses()
* \brief Fonction renvoyant un tableau de chaine de caractères contenant les noms des Classes.
* L'ordre et l'index des noms dans le tableau correspond à l'ordre dans lequel ils sont définis
* dans le fichier XML.
*
* \return un tableau de chaine de charactères (char**).
*/
char ** obtenirNomsClasses(){
int i;
//Allocation du tableau contenant les chaines de charactères
char ** tabNomClasses = malloc((getNbClasses(packGlobal))*sizeof(char *));
for(i=0;i<getNbClasses(packGlobal);i++){
tabNomClasses[i]= malloc(TAILLE_NOMS*sizeof(char));
}
//Copie des noms de classes dans le tableau
for(i=0;i<getNbClasses(packGlobal);i++){
strncpy(tabNomClasses[i],packGlobal.Classes_Package[i].nom, TAILLE_NOMS);
}
return tabNomClasses;
}
/*!
* \fn char ** obtenirSkinsClasses()
* \brief Fonction renvoyant un tableau de chaine de caractères contenant le chemin vers les Skins des Classes.
* L'ordre et l'index des noms dans le tableau correspond à l'ordre dans lequel ils sont définis
* dans le fichier XML.
* Ici le chemin du Skin renvoyé est celui du "default".
*
* \return un tableau de chaine de charactères (char**).
*/
char ** obtenirSkinsClasses(){
int i;
//Allocation du tableau contenant les chaines de charactères
char ** tabSkinsClasses = malloc((getNbClasses(packGlobal))*sizeof(char *));
for(i=0;i<getNbClasses(packGlobal);i++){
tabSkinsClasses[i]= malloc(TAILLE_CHEMIN*sizeof(char));
}
//Copie des chemin des skins dans le tableau
for(i=0;i<getNbClasses(packGlobal);i++){
strncpy(tabSkinsClasses[i],packGlobal.Classes_Package[i].skins.charac_default, TAILLE_CHEMIN);
}
return tabSkinsClasses;
}
......
......@@ -10,5 +10,10 @@
void initJeu();
void ajouterUnJoueur(char * nomDuJoueur, EtatsJeu * etat);
char ** obtenirNomsClasses();
char ** obtenirSkinsClasses();
#endif // CONTROLEUR_H
......@@ -7,6 +7,9 @@
#include "roxml.h"
#include "Interface.h"
#include "gamePackage.h"
#include "classe.h"
#include "terrain.h"
#include "carte.h"
/*!
* \fn Game_Package Construire_Package()
......@@ -19,9 +22,14 @@ Game_Package Construire_Package()
Game_Package Pack;
Classe* Classes_Pack = Librairie_Classes("../resources/Classes.xml");
Pack.nbClasses = getNbElements("../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.nbCartes = getNbElements("../resources/Maps.xml");
Pack.Classes_Package = Classes_Pack;
Pack.Terrains_Package = Terrains_Pack;
......@@ -31,3 +39,42 @@ Game_Package Construire_Package()
return Pack;
}
/*!
* \fn int getNbElements(char * file)
* \brief Fonction determinant le nombre de d'éléments dans un fichier XML
*
* \param le fichier à tester.
* \return le nombre d'élements dans le fichier.
*/
int getNbElements(char * file){
node_t *rootXML, *Element;
rootXML = roxml_load_doc(file); /* Ouvre le doc XML et créé le noeud de base */
Element = roxml_get_chld(rootXML, NULL, 0); /* Descend d'un niveau dans l'arborescence */
return roxml_get_chld_nb(Element); /* Récupère le nombre de classes entrées dans le fichier XML */
}
/*!
* \fn int getNbClasses(Game_Package pack)
* \brief Fonction retournant le nombre de classes d'un Game_Package
*
* \param le Game_Package à tester.
* \return le nombre de classes du Game_Package.
*/
int getNbClasses(Game_Package pack){
return pack.nbClasses;
}
/*!
* \fn int getNbClasses(Game_Package pack)
* \brief Fonction retournant le nombre de classes d'un Game_Package
*
* \param le Game_Package à tester.
* \return le nombre de classes du Game_Package.
*/
int getNbCartes(Game_Package pack){
return pack.nbCartes;
}
......@@ -8,6 +8,11 @@
Game_Package Construire_Package();
int getNbElements(char * file);
int getNbClasses(Game_Package pack);
int getNbCartes(Game_Package pack);
#endif // GAME_PACKAGE_INCLUDED
......@@ -32,6 +32,8 @@
#define LARG_MAX_CARTE 16
/*! \def LONG_MAX_CARTE */
#define HAUT_MAX_CARTE 10
/*! \def TAILLE_CHEMIN */
#define TAILLE_CHEMIN 50
/*! \enum boolean
* \brief Definition du type Boolean.
......@@ -228,6 +230,8 @@ typedef struct Carte_A{
* sizeof(Classe) =
*/
typedef struct Game_Package{
int nbCartes;
int nbClasses;
Classe* Classes_Package;
Terrain* Terrains_Package;
Skins_GUI* GUI_Package;
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment