From 3b920c69dfa36901a417342899e3b92acc07d39b Mon Sep 17 00:00:00 2001
From: ColinDrieu <colin.drieu@insa-rennes.fr>
Date: Thu, 12 May 2016 18:52:01 +0200
Subject: [PATCH] =?UTF-8?q?Code=20des=20fonctions=20permettant=20d'acceder?=
 =?UTF-8?q?=20aux=20ressources=20et=20aux=20coordonn=C3=A9es=20d'un=20pers?=
 =?UTF-8?q?onnage=20en=20fonction=20de=20son=20num=C3=A9ro=20dans=20la=20S?=
 =?UTF-8?q?DL.?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 src/controleur.c | 75 ++++++++++++++++++++++++++++++++++++++++++------
 src/controleur.h |  2 ++
 2 files changed, 69 insertions(+), 8 deletions(-)

diff --git a/src/controleur.c b/src/controleur.c
index 6b2a7da..ccc6408 100644
--- a/src/controleur.c
+++ b/src/controleur.c
@@ -361,7 +361,6 @@ char * obtenirRessourcePersonnage(int x, int y){
     int i;
     Joueur * actuel = NULL;
     char * ressource = malloc(TAILLE_CHEMIN*sizeof(char));
-    ressource = NULL;
     //Test Personnage sur la case.
     if(!personnagePresent(x,y)){
         return NULL;
@@ -401,6 +400,63 @@ char * obtenirRessourcePersonnage(int x, int y){
     }
 }
 
+  /*!
+ * \fn char * obtenirRessourcePersonnageNum(int numero)
+ * \brief La fonction renvoie la ressource d'un Personnage dont le numero est celui définit dans la sdl.
+ *
+ * \param Le numero du personnage definit dans la sdl.
+ * \return la ressource du personnage, NULL si le personnage n'est pas trouvé.
+ */
+char * obtenirRessourcePersonnageNum(int numero){
+    Joueur * actuel = NULL;
+    char * ressource = malloc(TAILLE_CHEMIN*sizeof(char));
+    actuel = getCurrentJoueur(getListJoueur(partieGlobale));
+
+    if ((numero>0)&&(numero<=3)){
+        setOnFirstJoueur(getListJoueur(partieGlobale));
+        strncpy(ressource,getClasse(getPersonnage(getCurrentJoueur(getListJoueur(partieGlobale)),numero-1))->skins.charac_default,TAILLE_CHEMIN);
+        setOnJoueur(getListJoueur(partieGlobale),actuel);
+        return ressource;
+    }
+    else if ((numero>3)&&(numero<=6)){
+        setOnFirstJoueur(getListJoueur(partieGlobale));
+        nextJoueur(getListJoueur(partieGlobale));
+        strncpy(ressource,getClasse(getPersonnage(getCurrentJoueur(getListJoueur(partieGlobale)),numero-4))->skins.charac_default,TAILLE_CHEMIN);
+        setOnJoueur(getListJoueur(partieGlobale),actuel);
+        return ressource;
+    }
+    else{
+        setOnJoueur(getListJoueur(partieGlobale),actuel);
+        return NULL;
+    }
+}
+
+  /*!
+ * \fn void * obtenirPositionPersonnage(int numero, int * x, int * y)
+ * \brief La fonction modifie les parrametres x et y en entrée en fonction des coordonnées du Personnage dont le numero en parrametre
+ *        est celui définit dans la sdl.
+ *
+ * \param Le numero du personnage definit dans la sdl, des pointeurs vers des int x et y pour récupérer les coordonnées.
+ */
+void obtenirPositionPersonnage(int numero, int * x, int * y){
+    Joueur * actuel = NULL;
+    actuel = getCurrentJoueur(getListJoueur(partieGlobale));
+
+    if ((numero>0)&&(numero<=3)){
+        setOnFirstJoueur(getListJoueur(partieGlobale));
+        *x=get_x(getPosition(getPersonnage(getCurrentJoueur(getListJoueur(partieGlobale)),numero-1)));
+        *y=get_y(getPosition(getPersonnage(getCurrentJoueur(getListJoueur(partieGlobale)),numero-1)));
+        setOnJoueur(getListJoueur(partieGlobale),actuel);
+    }
+    else if ((numero>3)&&(numero<=6)){
+        setOnFirstJoueur(getListJoueur(partieGlobale));
+        nextJoueur(getListJoueur(partieGlobale));
+        *x=get_x(getPosition(getPersonnage(getCurrentJoueur(getListJoueur(partieGlobale)),numero-4)));
+        *y=get_y(getPosition(getPersonnage(getCurrentJoueur(getListJoueur(partieGlobale)),numero-4)));
+        setOnJoueur(getListJoueur(partieGlobale),actuel);
+    }
+}
+
   /*!
  * \fn Personnage * trouverPersonnage(Case * c)
  * \brief La fonction renvoie un pointeur vers le personnage présent sur la case en parrammetre.
@@ -618,7 +674,7 @@ char ** obtenirNomsAttaquesPersonnage(int numero){
 // Je met ici mes tests réalisés dans le main pour éviter de les réécrire si jamais il y a un problème.
 // Si vous voulez tester aussi, à recopier dans le main avant l'appel à initJeu().
 void testControlleurConsole(){
-    int i,j,n;
+    int i,j,n,x,y;
     EtatsJeu state = SAISIE_JOUEURS;
     extern Partie * partieGlobale;
     extern Game_Package packGlobal;
@@ -664,13 +720,16 @@ void testControlleurConsole(){
                 else{
                     n=4+getIndicePersonnage((getListJoueur(partieGlobale)->lastNodeJoueur->j),trouverPersonnage(getCase(getCarte(partieGlobale),i,j)));
                 }
+                obtenirPositionPersonnage(n,&x,&y);
+                printf("Position : %d:%d\n",x,y);
                 printf("%s\n", obtenirNomClassePersonnage(n));
-                printf("%s\n", obtenirPVPersonnage(n));
-                printf("%s\n", obtenirPVMaxPersonnage(n));
-                printf("%s\n", obtenirManaPersonnage(n));
-                printf("%s\n", obtenirManaMaxPersonnage(n));
-                printf("%s\n", obtenirPDPersonnage(n));
-                printf("%s\n", obtenirPDMaxPersonnage(n));
+                printf("%s\n", obtenirRessourcePersonnageNum(n));
+                printf("%d\n", obtenirPVPersonnage(n));
+                printf("%d\n", obtenirPVMaxPersonnage(n));
+                printf("%d\n", obtenirManaPersonnage(n));
+                printf("%d\n", obtenirManaMaxPersonnage(n));
+                printf("%d\n", obtenirPDPersonnage(n));
+                printf("%d\n", obtenirPDMaxPersonnage(n));
             }
         }
     }
diff --git a/src/controleur.h b/src/controleur.h
index 7a9befa..c1b5452 100644
--- a/src/controleur.h
+++ b/src/controleur.h
@@ -36,6 +36,8 @@ char * ObtenirRessourceTerrain(int x, int y);
 
 int personnagePresent(int x, int y);
 char * obtenirRessourcePersonnage(int x, int y);
+char * obtenirRessourcePersonnageNum(int numero);
+void obtenirPositionPersonnage(int numero, int * x, int * y);
 
 Personnage * trouverPersonnage(Case * c);
 
-- 
GitLab