Skip to content
Snippets Groups Projects
creerJoueur.c 7.51 KiB
Newer Older
Jin Zijun's avatar
Jin Zijun committed

#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);

}