From 9046ea9d64247a4e5a420b398bc80b3dbc228233 Mon Sep 17 00:00:00 2001
From: Henri Montjoie <henri.montjoie@insa-rennes.fr>
Date: Sun, 15 May 2016 14:22:51 +0200
Subject: [PATCH] tentative de correction du pb d'initialisation

---
 src/TerrainsXML.c  |  8 ++++----
 src/affichage.c    |  2 +-
 src/controleur.c   | 12 +++++++++---
 src/controleur.h   |  2 ++
 src/deplacements.c |  2 +-
 5 files changed, 17 insertions(+), 9 deletions(-)

diff --git a/src/TerrainsXML.c b/src/TerrainsXML.c
index f93affd..aeef591 100644
--- a/src/TerrainsXML.c
+++ b/src/TerrainsXML.c
@@ -43,7 +43,7 @@ Terrain* Remplir_Terrains(FILE* Terrains_XML_log, char *filename)
         exit(EXIT_FAILURE);
     }
     fprintf(Terrains_XML_log,"1) Memoire allouee avec succes \n");
-    fprintf(Terrains_XML_log,"La memoire allouee fait %lu octets\n",nb_terrains * sizeof(Terrain));
+    fprintf(Terrains_XML_log,"La memoire allouee fait %u octets\n",nb_terrains * sizeof(Terrain));
 
     /*--------------------------------------------------------------------------------------------------*/
 
@@ -83,14 +83,14 @@ Terrain* Remplir_Terrains(FILE* Terrains_XML_log, char *filename)
         /* Remplissage des caractéristiques de la classe en cours */
         switch(FR_int){
         case 0 :
-            Terrain_en_cours.franchissable=0;
+            Terrain_en_cours.franchissable=faux;
             break;
         case 1 :
-            Terrain_en_cours.franchissable=1;
+            Terrain_en_cours.franchissable=vrai;
             break;
         default :
             fprintf(Terrains_XML_log,"ERREUR : FR doit prendre la valeur 0 ou 1 !\n");
-            Terrain_en_cours.franchissable=0;
+            Terrain_en_cours.franchissable=faux;
         }
 
         switch(FRS_int){
diff --git a/src/affichage.c b/src/affichage.c
index b5e5ccf..d2cd413 100644
--- a/src/affichage.c
+++ b/src/affichage.c
@@ -849,7 +849,7 @@ int affichage_carte()
             }
             if(event.button.x<LARGEUR_CARTE*LARGEUR_CASE)
             {
-                deplacement_personnage(event.button.x,event.button.y);
+                deplacement_personnage(perso_actuel,event.button.x,event.button.y);
             }
             break;
         case SDL_MOUSEMOTION:
diff --git a/src/controleur.c b/src/controleur.c
index bf16f04..e8d8215 100644
--- a/src/controleur.c
+++ b/src/controleur.c
@@ -16,6 +16,7 @@
 #include "classe.h"
 #include "gamePackage.h"
 #include "roxml.h"
+#include "deplacements.h"
 
 Partie * partieGlobale;
 Game_Package packGlobal;
@@ -295,6 +296,8 @@ int ajouterPersonnage(char * nomClasse, int numTab, int numJoueur){
  */
 int selectionnerCarte(char * nomCarte){
     int i;
+    Game_Package copiePack = packGlobal;
+    Carte_Jeu copieCarte = *getCarte(partieGlobale);
     i=0;
     //Recherche de la Carte dans le Package
     while((strcmp(nomCarte,packGlobal.Cartes_Package[i].nom)!=0)&&(i<nbCartes())){
@@ -305,9 +308,12 @@ int selectionnerCarte(char * nomCarte){
         return 0;
     }
     //Initialisation de la Carte_Jeu
-    if(initCarte(&packGlobal.Cartes_Package[i],getCarte(partieGlobale),&packGlobal)==0){
+    if(initCarte(&(copiePack.Cartes_Package[i]),&copieCarte,&copiePack)==0){
+        printf("erreur : la carte ne peut etre initialisee");
         return 0;
     }
+    packGlobal=copiePack;
+    partieGlobale->c=&copieCarte;
     return 1;
 }
 
@@ -516,10 +522,10 @@ void deplacement_personnage(int numPerso, int x_pixel, int y_pixel){
     int x=x_case_cliquee(x_pixel, y_pixel);
     int y=y_case_cliquee(x_pixel, y_pixel);
     if(numPerso<=NB_PERSO){
-        deplacement_unitaire(getCurrentJoueur(getListJoueur(partieGlobale))->groupe[numPerso-1]);
+        deplacement_unitaire(getCurrentJoueur(getListJoueur(partieGlobale))->groupe[numPerso-1],trouverCase(getCarte(partieGlobale),x,y));
     }
     else{
-        deplacement_unitaire(getCurrentJoueur(getListJoueur(partieGlobale))->groupe[numPerso-1-NB_PERSO]);
+        deplacement_unitaire(getCurrentJoueur(getListJoueur(partieGlobale))->groupe[numPerso-1-NB_PERSO],trouverCase(getCarte(partieGlobale),x,y));
     }
 }
 
diff --git a/src/controleur.h b/src/controleur.h
index faa3380..9ffa57a 100644
--- a/src/controleur.h
+++ b/src/controleur.h
@@ -42,6 +42,8 @@ void obtenirPositionPersonnage(int numero, int * x, int * y);
 
 Personnage * trouverPersonnage(Case * c);
 
+void deplacement_personnage(int numPerso,int x,int y);
+
 char * obtenirNomJoueurCourant();
 char * obtenirNomClassePersonnage(int numero);
 int obtenirPVPersonnage(int numero);
diff --git a/src/deplacements.c b/src/deplacements.c
index 7856374..0ce46d6 100644
--- a/src/deplacements.c
+++ b/src/deplacements.c
@@ -41,7 +41,7 @@ int deplacement_unitaire(Personnage *perso,Case * destination){
         return 1;
     }
     if (case_franchissable(destination)==faux){
-        printf("déplacement impossible : case infranchissable");
+        printf("deplacement impossible : case infranchissable\n");
         return 1;
     }
     if (case_a_cote(perso,destination)==vrai){
-- 
GitLab