From e2b969d0349c68489b5d15397fa639ad1a302d7a Mon Sep 17 00:00:00 2001
From: Henri Montjoie <henri.montjoie@insa-rennes.fr>
Date: Fri, 6 May 2016 13:39:28 +0200
Subject: [PATCH] selection de la classe dans une fenetre

---
 .../ElderInternalIgnition.cbp                 | 15 +++------
 src/ClassesXML.c                              |  2 +-
 src/SDL_bis.c                                 | 33 ++++++++++++++++++-
 src/controleur.c                              |  9 +++--
 src/controleur.h                              |  1 +
 src/deplacements.c                            |  4 +--
 src/main.c                                    |  9 +++--
 7 files changed, 53 insertions(+), 20 deletions(-)

diff --git a/ElderInternalIgnition/ElderInternalIgnition.cbp b/ElderInternalIgnition/ElderInternalIgnition.cbp
index a6b37fa..da3a256 100644
--- a/ElderInternalIgnition/ElderInternalIgnition.cbp
+++ b/ElderInternalIgnition/ElderInternalIgnition.cbp
@@ -15,7 +15,7 @@
 					<Add option="-g" />
 				</Compiler>
 				<Linker>
-					<Add library="../Libs/SDL-1.2.15/lib/SDL_ttf.lib" />
+					<Add library="..\Libs\SDL-1.2.15\lib\SDL_ttf.lib" />
 					<Add directory="../Libs/SDL-1.2.15" />
 				</Linker>
 			</Target>
@@ -39,10 +39,10 @@
 			<Add directory="../Libs/cmocka-1.0.0/include" />
 		</Compiler>
 		<Linker>
-			<Add library="../Libs/libroxml-2.3.0/Build/libroxml.dll" />
-			<Add library="./../Libs/SDL-1.2.15/bin/SDL.dll" />
-			<Add library="../Libs/cmocka-1.0.0/lib/cmocka.dll.a" />
-			<Add library="../Libs/SDL-1.2.15/lib/SDL_ttf.lib" />
+			<Add library="..\Libs\libroxml-2.3.0\Build\libroxml.dll" />
+			<Add library=".\..\Libs\SDL-1.2.15\bin\SDL.dll" />
+			<Add library="..\Libs\cmocka-1.0.0\lib\cmocka.dll.a" />
+			<Add library="..\Libs\SDL-1.2.15\lib\SDL_ttf.lib" />
 			<Add directory="./../Libs" />
 			<Add directory="../Libs/cmocka-1.0.0/lib" />
 		</Linker>
@@ -65,11 +65,6 @@
 			<Option compilerVar="CC" />
 		</Unit>
 		<Unit filename="../src/TerrainsXML.h" />
-		<Unit filename="../src/TexturesXML.c">
-			<Option compilerVar="CC" />
-			<Option target="&lt;{~None~}&gt;" />
-		</Unit>
-		<Unit filename="../src/TexturesXML.h" />
 		<Unit filename="../src/carte.c">
 			<Option compilerVar="CC" />
 		</Unit>
diff --git a/src/ClassesXML.c b/src/ClassesXML.c
index dd32507..32b7488 100644
--- a/src/ClassesXML.c
+++ b/src/ClassesXML.c
@@ -80,7 +80,7 @@ Classe* Remplir_Classes(FILE* Classes_log, char *filename) /* Remplit le tableau
         Classe_en_cours.PV_max=PV_int;
         Classe_en_cours.mana_max=PM_int;
         Classe_en_cours.points_deplacement_max=MV_int;
-        strcpy(Classe_en_cours.nom, id_text);
+        strcpy(Classe_en_cours.nom, name_text);
 
         /*----------------------------------------------------------------------------------------------*/
         /*Chargement des skins de la classe en cours
diff --git a/src/SDL_bis.c b/src/SDL_bis.c
index 3453580..3beec21 100644
--- a/src/SDL_bis.c
+++ b/src/SDL_bis.c
@@ -6,7 +6,38 @@
 #include "structures.h"
 #include "controleur.h"
 
+int afficherListe(char** tabChoix, int nbChoix, TTF_Font* police,SDL_Color couleurTexte)
+{
+    int i;
+    SDL_Surface* fenetre=NULL;
+    SDL_Event event;
+    SDL_Surface* tabTextes[]={NULL};
+    SDL_Rect positionsTextes[nbChoix];
+    SDL_Color couleurNoire = {0, 0, 0};
 
+    fenetre = SDL_SetVideoMode(200, 400, 32, SDL_HWSURFACE|SDL_DOUBLEBUF);
+    SDL_FillRect(fenetre,NULL,SDL_MapRGB(fenetre->format,0,0,0));
+
+    while(i!=20)
+    {
+        SDL_WaitEvent(&event);
+        switch(event.type)
+        {
+            case SDL_QUIT:
+                i=20;
+                break;
+        }
+        for(i=0;i<nbChoix-1;i++)
+        {
+            tabTextes[i]=TTF_RenderText_Shaded(police, tabChoix[i], couleurTexte,couleurNoire);
+            positionsTextes[i].x=0;
+            positionsTextes[i].y=i*positionsTextes[i].h+4;
+            SDL_BlitSurface(tabTextes[i],NULL,fenetre,&positionsTextes[i]);
+        }
+        SDL_Flip(fenetre);
+    }
+    return 0;
+}
 
 int SDL_bis()
 {   EtatsJeu etat=SAISIE_JOUEURS;
@@ -152,7 +183,7 @@ int SDL_bis()
     SDL_BlitSurface(texte3,NULL,ecran,&pos_texte3_bis);
     SDL_Flip(ecran);
 
-
+    afficherListe(obtenirNomsClasses(), nbClasses(), police,couleurBlanche);
     while(etat==CONFIGURATION)
     {
         SDL_WaitEvent(&event);
diff --git a/src/controleur.c b/src/controleur.c
index 2de88e6..50f0a38 100644
--- a/src/controleur.c
+++ b/src/controleur.c
@@ -61,18 +61,21 @@ void initJeu(){
  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++){
+    char ** tabNomClasses=malloc(nbClasses()*sizeof(char[TAILLE_NOMS]));
+    for(i=0;i<nbClasses();i++){
         tabNomClasses[i]= malloc(TAILLE_NOMS*sizeof(char));
     }
 
     //Copie des noms de classes dans le tableau
-    for(i=0;i<getNbClasses(packGlobal);i++){
+    for(i=0;i<nbClasses();i++){
         strncpy(tabNomClasses[i],packGlobal.Classes_Package[i].nom, TAILLE_NOMS);
     }
     return tabNomClasses;
  }
 
+int nbClasses(){
+    return getNbClasses(packGlobal);
+}
   /*!
  * \fn char ** obtenirSkinsClasses()
  * \brief Fonction renvoyant un tableau de chaine de caractères contenant le chemin vers les Skins des Classes.
diff --git a/src/controleur.h b/src/controleur.h
index 8701d71..6a20ad4 100644
--- a/src/controleur.h
+++ b/src/controleur.h
@@ -14,6 +14,7 @@ void ajouterUnJoueur(char * nomDuJoueur, EtatsJeu * etat);
 
 char ** obtenirNomsClasses();
 char ** obtenirSkinsClasses();
+int nbClasses();
 
 #endif // CONTROLEUR_H
 
diff --git a/src/deplacements.c b/src/deplacements.c
index cd6ffa1..06d0fbd 100644
--- a/src/deplacements.c
+++ b/src/deplacements.c
@@ -23,7 +23,7 @@ boolean case_a_cote(Personnage * perso, Case * destination,int hauteur_case , in
 
 int deplacement_unitaire(Personnage *perso,Case * destination, int hauteur_case , int largeur_case){ /*déplace un personnage sur une case située à côté de la sienne, si cela est possible */
     if (est_occupee(destination)){
-        printf("déplacement impossible : case déjà occupée par un personnage");
+        printf("deplacement impossible : case deja occupee par un personnage\n");
         return 1;
     }
     /*if (case_franchissable(destination)==faux){
@@ -33,7 +33,7 @@ int deplacement_unitaire(Personnage *perso,Case * destination, int hauteur_case
     if (case_a_cote(perso,destination, hauteur_case, largeur_case)==vrai){
        return deplacer_personnage(perso, destination);
     }
-    printf("déplacement impossible : case non contigue");
+    printf("deplacement impossible : case non contigue\n");
     return 1;
 }
 
diff --git a/src/main.c b/src/main.c
index 949384b..59364c4 100644
--- a/src/main.c
+++ b/src/main.c
@@ -4,6 +4,7 @@
 #include "classe.h"
 #include "case.h"
 #include "terrain.h"
+#include "controleur.h"
 #include "SDL.h"
 #include "roxml.h"
 #include "carte.h"
@@ -87,7 +88,7 @@ int main()
 
 //init_jeu("../resources/Init_jeu.xml");
 
-    char *Map_ANCIENNE_VERSION = ExtraireCarte(3);
+    char *Map_ANCIENNE_VERSION = ExtraireCarte(4);
     //printf("Map en version texte : %s\n", Map_A);
 
 
@@ -121,8 +122,10 @@ Pack_A.Competences_Package = Competences_Pack;
     /* -------------------------------------*/
     /* -------------------------------------*/
 
-    main_SDL(Map_ANCIENNE_VERSION);
-    //SDL_bis();
+    //main_SDL(Map_ANCIENNE_VERSION);
+
+    initJeu();
+    SDL_bis();
 
 
 
-- 
GitLab