#include <SDL/common.h> #include <SDL/creerJoueur.h> #define DIR_SAVE_JOUEURS "../project/resources/Joueur/" #define EXTENSION ".bin" int menu__creerjoueur(SDL_Rect positionFond,SDL_Surface *ecran) { int i; int save=0; SDL_Event event; Create_menu creermenu; FILE* joueur=NULL; char filename[MAX_PATH_SIZE]; char* joueurs[MAX_PLAYERS]; char joueurname[MAX_NAME_SIZE]; init_imagescreermenu(&creermenu); init_creermenu(&creermenu, positionFond, ecran); while( SDL_Button_IsClicked( creermenu.buttons[backmenu] ) == false ) { update_creermenu(&creermenu, &event); if((event.key.keysym.sym==SDLK_RETURN)&&SDL_InputBox_IsActiv( creermenu.input_box[0])) { save=0; sprintf(filename,"%s%s%s",DIR_SAVE_JOUEURS,SDL_InputBox_GetText(&(creermenu.input_box[0])),EXTENSION); joueur=fopen(filename,"rb"); if(joueur==NULL) { SDL_RenderPresent( ecran ); while( event.button.button != SDL_BUTTON_LEFT) { SDL_WaitEvent( &event ); SDL_RenderPresent( ecran ); } SDL_BlitSurface(creermenu.surf[0], NULL, ecran, &positionFond); } else { readteamsfiles(joueur,joueurname,joueurs); SDL_InputBox_SetText( &(creermenu.input_box[0]), joueurs[0] ); SDL_InputBox_SetText( &(creermenu.input_box[1]), joueurs[1] ); SDL_InputBox_SetText( &(creermenu.input_box[2]), joueurs[2] ); SDL_InputBox_SetText( &(creermenu.input_box[3]), joueurs[3] ); SDL_InputBox_SetText( &(creermenu.input_box[4]), joueurs[4] ); SDL_InputBox_SetText( &(creermenu.input_box[5]), joueurs[5] ); save=1; } fclose(joueur); } /* on veut sauvegarder les modifications fait sur l'équipe */ if((SDL_Button_IsClicked( ( creermenu.buttons[savejoueur] )) == true)&& (save==1)) { createjoueurfile(SDL_InputBox_GetText( &( creermenu.input_box[0]) ), SDL_InputBox_GetText( &( creermenu.input_box[1]) ), SDL_InputBox_GetText( &( creermenu.input_box[2]) ), SDL_InputBox_GetText( &( creermenu.input_box[3]) ), SDL_InputBox_GetText( &( creermenu.input_box[4]) ), SDL_InputBox_GetText( &( creermenu.input_box[5]) )); } display_creermenu(&creermenu,ecran); } for( i = 0 ; i < NB_IMAGES_CREATE ; i++ ) SDL_FreeSurface( creermenu.surf[ i ] ); TTF_Quit(); return 0; } void init_imagescreermenu(Create_menu* creermenu) { SDL_Color color={0,0,0}; creermenu->couleurNoire =color; creermenu->font = TTF_OpenFont("../project/resources/fonts/angelina.ttf", 30); creermenu->surf[ 0 ] = SDL_LoadBMP("../project/resources/images/map_creerJoueur.bmp"); creermenu->surf[ 1 ] = SDL_LoadBMP( "../project/resources/images/retour.bmp" ); creermenu->surf[ 2 ] = SDL_LoadBMP( "../project/resources/images/inputbox.bmp"); creermenu->surf[ 3 ] = SDL_LoadBMP( "../project/resources/images/save.bmp"); } void init_creermenu(Create_menu* creermenu,SDL_Rect positionFond,SDL_Surface *ecran) { creermenu->positionErreur.x= 200; creermenu->positionErreur.y=300; SDL_BlitSurface(creermenu->surf[ 0 ], NULL, ecran, &positionFond); SDL_Button_Initialize( &(creermenu->buttons[backmenu]), 100, 580, creermenu->surf[ 1 ]); SDL_Button_Initialize( &(creermenu->buttons[savejoueur]), 600, 580, creermenu->surf[ 3 ] ); SDL_InputBox_Initialize( &(creermenu->input_box[0]), 120, 170, creermenu->surf[2], MAX_NAME_SIZE , 5, 5, creermenu->font, creermenu->couleurNoire ); SDL_InputBox_Initialize( &(creermenu->input_box[1]), 120, 250, creermenu->surf[2], MAX_NAME_SIZE , 5, 5, creermenu->font, creermenu->couleurNoire ); SDL_InputBox_Initialize( &(creermenu->input_box[2]), 120, 330, creermenu->surf[2], MAX_NAME_SIZE , 5, 5, creermenu->font, creermenu->couleurNoire ); SDL_InputBox_Initialize( &(creermenu->input_box[3]), 120, 410, creermenu->surf[2], MAX_NAME_SIZE , 5, 5, creermenu->font, creermenu->couleurNoire ); SDL_InputBox_Initialize( &(creermenu->input_box[4]), 120, 490, creermenu->surf[2], MAX_NAME_SIZE , 5, 5, creermenu->font, creermenu->couleurNoire ); SDL_InputBox_Initialize( &(creermenu->input_box[5]), 120, 570, creermenu->surf[2], MAX_NAME_SIZE , 5, 5, creermenu->font, creermenu->couleurNoire ); } void update_creermenu(Create_menu* creermenu, SDL_Event* event) { int i; SDL_PollEvent( event ); for(i=0;i<NB_BUTTONS_CREATE;i++) { SDL_Button_Update( &(creermenu->buttons[i]), *event ); } for(i=0;i<NB_INPUT_BOXES_CREATE;i++) { SDL_InputBox_Update( &(creermenu->input_box[i]), *event ); } } void display_creermenu(Create_menu* creermenu,SDL_Surface *ecran) { int i; for(i=0;i<NB_BUTTONS_CREATE;i++) { SDL_Button_Display( creermenu->buttons[i], ecran ); } for(i=0;i<NB_INPUT_BOXES_CREATE;i++) { SDL_InputBox_Display(creermenu->input_box[i], ecran); } SDL_RenderPresent( ecran ); } void readteamsfiles(FILE* ptr_file, char joueurname[MAX_NAME_SIZE], char* joueurs[MAX_PLAYERS]) { int i; int buf; char temp[MAX_NAME_SIZE+1]; fread(&buf,sizeof(int),1,ptr_file); fread(temp,sizeof(char),buf,ptr_file); strcpy(joueurname,temp); if(joueurname==NULL) { exit(EXIT_FAILURE); } for(i=0;i<MAX_PLAYERS+1;i++) { fread(&buf,sizeof(int),1,ptr_file); joueurs[i]=(char*) calloc(buf,sizeof(char)); fread(temp,sizeof(char),buf,ptr_file); strcpy(joueurs[i],temp); } } void createjoueurfile(char* joueur1name, char* joueur2name, char* joueur3name, char* joueur4name, char* joueur5name,char* joueur6name) { FILE* ptr_file1 = NULL; char *filename; int buf; filename=(char*)calloc(sizeof(char), (strlen(joueur1name)+strlen(DIR_SAVE_JOUEURS)+strlen(EXTENSION)+1)); strcpy(filename, DIR_SAVE_JOUEURS); strcat(filename, joueur1name); strcat(filename, EXTENSION); ptr_file1 = fopen(filename, "wb"); if ((ptr_file1 != NULL)) { /* On peut lire et écrire dans le fichier*/ buf=strlen(joueur1name)+1; fwrite(&buf,sizeof(int),1,ptr_file1); fwrite(joueur1name,buf,sizeof(char),ptr_file1); buf=strlen(joueur2name)+1; fwrite(&buf,sizeof(int),1,ptr_file1); fwrite(joueur2name,buf,sizeof(char),ptr_file1); buf=strlen(joueur3name)+1; fwrite(&buf,sizeof(int),1,ptr_file1); fwrite(joueur3name,buf,sizeof(char),ptr_file1); buf=strlen(joueur4name)+1; fwrite(&buf,sizeof(int),1,ptr_file1); fwrite(joueur4name,buf,sizeof(char),ptr_file1); buf=strlen(joueur5name)+1; fwrite(&buf,sizeof(int),1,ptr_file1); fwrite(joueur5name,buf,sizeof(char),ptr_file1); buf=strlen(joueur6name)+1; fwrite(&buf,sizeof(int),1,ptr_file1); fwrite(joueur6name,buf,sizeof(char),ptr_file1); fclose(ptr_file1); } free(filename); }