diff --git a/src/affichage.c b/src/affichage.c index a949e39b6a2634373162d646ab800c991f73daa3..3b465d6fa23b862d450cafd5dc5fb16e26c7fa7d 100644 --- a/src/affichage.c +++ b/src/affichage.c @@ -15,6 +15,7 @@ EtatsJeu etat; char* nom_1; char* nom_2; +int num_carte_selectionnee; /*! @@ -54,8 +55,8 @@ int main_affichage() affichage_menu_configuration(); break; case TOUR_J1P1: - printf("et la normalement ca affiche la carte"); - affichage_carte(NULL); + printf(obtenirLignesCarte(num_carte_selectionnee)[0]); + affichage_carte(obtenirLignesCarte(num_carte_selectionnee)); break; default: break; @@ -450,6 +451,7 @@ int affichage_menu_configuration() { c=i; selectionnerCarte(obtenirNomsCartes()[c]); + num_carte_selectionnee=c+1; } } if(event.button.x>posTextes[0].x&&event.button.x<posTextes[0].x+textes[0]->w) @@ -526,19 +528,19 @@ int affichage_menu_configuration() /*! - * \fn int affichage_carte(char* Map) + * \fn int affichage_carte(char** Map) * \brief fonction qui gère l'affichage pendant la partie * * \param la carte au format texte (une lettre = une case) */ -int affichage_carte(char* Map) -{/* +int affichage_carte(char ** Map) +{ int i,j=0; int nombre_classes=nbClasses(); - int nombre_terrains=nbTerrains(); + int nombre_terrains=4; //a changer SDL_Event event; - SDL_Surface* ecran=NULL; + SDL_Surface* ecran=SDL_SetVideoMode(LARGEUR_CARTE*(LARGEUR_CASE+1), HAUTEUR_CARTE*(HAUTEUR_CASE+2), 32, SDL_HWSURFACE|SDL_DOUBLEBUF);; SDL_Surface* classes[nombre_classes]; SDL_Surface* terrains[nombre_terrains]; SDL_Surface* persos[NB_PERSO*NB_JOUEURS]; @@ -549,7 +551,7 @@ int affichage_carte(char* Map) SDL_Rect Position_Case_brillante; SDL_Rect Position_Guerrier_select; - for(i=0;i<nbClasses();i++){ + for(i=0;i<nombre_classes;i++){ classes[i]=SDL_LoadBMP(obtenirSkinsClasses()[i]); if (!classes[i]) { @@ -558,7 +560,15 @@ int affichage_carte(char* Map) } SDL_SetColorKey(classes[i], SDL_SRCCOLORKEY, SDL_MapRGB(classes[i]->format, 0, 0, 255)); } - + for(i=0;i<nombre_terrains;i++){ + terrains[i]=SDL_LoadBMP(obtenirSkinsTerrains()[i]); + if (!terrains[i]) + { + printf("Unable to load bitmap: %s\n", SDL_GetError()); + return 1; + } + SDL_SetColorKey(terrains[i], SDL_SRCCOLORKEY, SDL_MapRGB(terrains[i]->format, 0, 0, 255)); + } Guerrier_select = SDL_LoadBMP("../resources/Skins/guerrier_select.bmp"); if (!Guerrier_select) { @@ -596,9 +606,9 @@ int affichage_carte(char* Map) { SDL_WaitEvent(&event); switch(event.type) /* Test du type d'événement */ -/* { + { case SDL_QUIT: /* Si c'est un événement de type "Quitter" */ - /* etat=FERMER; + etat=FERMER; break; case SDL_MOUSEBUTTONDOWN: deplacement_personnage(event.button.x,event.button.y); @@ -611,7 +621,7 @@ int affichage_carte(char* Map) } break; case SDL_KEYDOWN:/* Si c'est un événement de type "touche pressée" */ - /* switch(event.key.keysym.sym){ + switch(event.key.keysym.sym){ case SDLK_n: persosuivant(); break; @@ -623,40 +633,52 @@ int affichage_carte(char* Map) } break; } - for(i=0;i<NB_PERSO;i++){ + /*for(i=0;i<NB_PERSO;i++){ Position_Perso[i].x=get_position_perso_x(i); Position_Perso[i].y=get_position_perso_y(i); } Position_Guerrier_select.x = get_position_case_x(&Position_Perso[persoactuel()]); Position_Guerrier_select.y = get_position_case_y(&Position_Perso[persoactuel()]); - + */ SDL_FillRect(ecran,NULL,SDL_MapRGB(ecran->format,0,0,0)); - for(i=0;i<LARGEUR_CARTE*HAUTEUR_CARTE;i++) - { - switch(Map[i]) + for(i=0;i<HAUTEUR_CARTE;i++) + { + printf(Map[i]); + for(j=0;j<LARGEUR_CARTE;j++) { - case 80: //"P" en ASCII - SDL_BlitSurface(plaine,NULL,ecran,&Position_Case[i]); - break; - case 70: //"F" en ASCII - SDL_BlitSurface(foret,NULL,ecran,&Position_Case[i]); - break; - case 69: //"E" en ASCII - SDL_BlitSurface(eau,NULL,ecran,&Position_Case[i]); - break; - case 77: //"M" en ASCII - SDL_BlitSurface(montagne,NULL,ecran,&Position_Case[i]); - break; - default: - break; + switch(Map[i][j]) + { + case 80: //"P" en ASCII + printf("test1 \n"); + SDL_BlitSurface(terrains[0],NULL,ecran,&Position_Case[i]); + printf("test \n"); + break; + case 70: //"F" en ASCII + printf("test1 \n"); + SDL_BlitSurface(terrains[1],NULL,ecran,&Position_Case[i]); + printf("test \n"); + break; + case 82: //"R" en ASCII + printf("test1 \n"); + SDL_BlitSurface(terrains[2],NULL,ecran,&Position_Case[i]); + printf("test \n"); + break; + case 77: //"M" en ASCII + printf("test1 \n"); + SDL_BlitSurface(terrains[3],NULL,ecran,&Position_Case[i]); + printf("test \n"); + break; + default: + break; + } } } for(i=0;i<NB_PERSO*NB_JOUEURS;i++) { //TODO } - SDL_BlitSurface(Guerrier_select,NULL,ecran,&Position_Guerrier_select); - SDL_BlitSurface(Case_brillante,NULL,ecran,&Position_Case_brillante); + /*SDL_BlitSurface(Guerrier_select,NULL,ecran,&Position_Guerrier_select); + SDL_BlitSurface(Case_brillante,NULL,ecran,&Position_Case_brillante);*/ } SDL_Flip(ecran); diff --git a/src/affichage.h b/src/affichage.h index 47c29a8a9fd0a46c3b47de352e02c30c81b13cd2..0eb9c74b6812d0464c3a47c564f536557d17ec40 100644 --- a/src/affichage.h +++ b/src/affichage.h @@ -24,7 +24,7 @@ int affichage_menu_configuration(); int affichage_ecran_accueil(); -int affichage_carte(char* Map); +int affichage_carte(char** Map); int afficher_menu(); diff --git a/src/controleur.c b/src/controleur.c index 07b8e0b71583d38a402a33a27edd874f5b44f5ff..1941b8cdc3605b80dcbeeae2cb28ab2c46d3d8eb 100644 --- a/src/controleur.c +++ b/src/controleur.c @@ -109,6 +109,20 @@ void initJeu(){ return tabSkinsClasses; } + char ** obtenirSkinsTerrains(){ + int i; + //Allocation du tableau contenant les chaines de charactères + char ** tabSkinsTerrains = malloc((getNbTerrains(packGlobal))*sizeof(char *)); + for(i=0;i<getNbTerrains(packGlobal);i++){ + tabSkinsTerrains[i]= malloc(TAILLE_CHEMIN*sizeof(char)); + } + //Copie des chemin des skins dans le tableau + for(i=0;i<getNbTerrains(packGlobal);i++){ + strncpy(tabSkinsTerrains[i],packGlobal.Terrains_Package[i].skin_default, TAILLE_CHEMIN); + } + return tabSkinsTerrains; + } + /*! * \fn void freeClasses() * \brief La fonction libère un tableau de chaines de charactères alloué pour stocker les informations sur les classes. @@ -155,6 +169,18 @@ char ** obtenirNomsCartes(){ return tabNomsCartes; } + + /*! + * \fn char ** obtenirLignesCarte(int numCarte) + * \brief Fonction renvoyant le tableau des lignes de la carte numéro numCarte + * + * \return un tableau de chaine de charactères (char**). + */ +char ** obtenirLignesCarte(int numCarte){ + return packGlobal.Cartes_Package[numCarte-1].lignes; +} + + /*! * \fn char ** obtenirDescriptionCarte() * \brief Fonction renvoyant un tableau de chaine de caractères contenant les descriptions des Cartes. diff --git a/src/controleur.h b/src/controleur.h index 308acd0efa316f3a41ba34fb6b0d3c2dea0a1b79..23fb5d4a0cc8e6652dcd01c59d0a5c11a66d8a64 100644 --- a/src/controleur.h +++ b/src/controleur.h @@ -10,6 +10,9 @@ void initJeu(); + char ** obtenirSkinsTerrains(); + char ** obtenirLignesCarte(int numCarte); + void ajouterUnJoueur(char * nomDuJoueur, EtatsJeu * etat); int nbClasses(); diff --git a/src/gamePackage.c b/src/gamePackage.c index 1605f3ecc3b9e760acc4ce5da193241e552d13c5..e9f90bdfbf3d625a8ec69710ef9140a5a04e08aa 100644 --- a/src/gamePackage.c +++ b/src/gamePackage.c @@ -25,6 +25,7 @@ Game_Package Construire_Package() Pack.nbClasses = getNbElements("../resources/Classes.xml"); Terrain* Terrains_Pack = Librairie_Terrains("../resources/Terrains.xml"); + Pack.nbTerrains=getNbElements("../resources/Terrains.xml"); Skins_GUI* GUI_Pack = Get_Skins_GUI("../resources/GUI.xml"); @@ -78,3 +79,6 @@ int getNbCartes(Game_Package pack){ return pack.nbCartes; } +int getNbTerrains(Game_Package pack){ + return pack.nbTerrains; +} diff --git a/src/gamePackage.h b/src/gamePackage.h index 2017b3a11cb9f9a92542aba97533c6d188087ce4..d863e1a2fcb0a00496ed6e2101f831234aa52dd9 100644 --- a/src/gamePackage.h +++ b/src/gamePackage.h @@ -12,7 +12,7 @@ int getNbElements(char * file); int getNbClasses(Game_Package pack); int getNbCartes(Game_Package pack); - +int getNbTerrains(Game_Package pack); #endif // GAME_PACKAGE_INCLUDED diff --git a/src/structures.h b/src/structures.h index e5154c023757f5e4e85b05056e6990cf108cd92a..02a3cc034d6a369d5a29931bd737b5ecaeafbd26 100644 --- a/src/structures.h +++ b/src/structures.h @@ -233,6 +233,7 @@ typedef struct Carte_A{ typedef struct Game_Package{ int nbCartes; int nbClasses; + int nbTerrains; Classe* Classes_Package; Terrain* Terrains_Package; Skins_GUI* GUI_Package;