#include <stdlib.h>
#include <stdio.h>
#include <SDL/SDL.h>
#include <SDL/SDL_image.h>
#include <SDL/SDL_ttf.h>
#include <FMOD/fmod.h>

#include "highscores.h"

void voirHighScores(SDL_Surface *ecran, SDL_Surface *fond)
{
    SDL_Surface *texte[5] = {NULL};
    SDL_Event eventHighScores;
    TTF_Font *police = NULL;
    SDL_Rect positionFond, positionTexte[5];
    SDL_Color couleurNoire = {0, 0, 0};
    FMUSIC_MODULE *fondMusique = NULL;

    int continuer = 1, i = 0, j = 0, positionEnPlus = 0, jouerMusique = 0;
    int *score[5] = {0}; // Tableau des 5 meilleurs scores

    char texteRecupScores01[60] = {0};
    char texteRecupScores02[60] = {0};
    char texteRecupScores03[60] = {0};
    char texteRecupScores04[60] = {0};
    char texteRecupScores05[60] = {0};

    ecran = SDL_SetVideoMode(600, 450, 32, SDL_HWSURFACE | SDL_DOUBLEBUF);
    SDL_WM_SetCaption("Click'o'Mania - HIGHSCORES" , NULL);

    fond = IMG_Load("IMG/fondHighScores.png");
    fondMusique = FMUSIC_LoadSong("MUSIC/highscores.mid");

    if(fondMusique == NULL)
        continuer = 0;

    if(!jouerMusique)
    {
        FMUSIC_PlaySong(fondMusique);
        FMUSIC_SetLooping(fondMusique, 1);
        jouerMusique = 1;
    }

    //---POLICES---
    police = TTF_OpenFont("journal.ttf", 60);
    TTF_SetFontStyle(police, TTF_STYLE_ITALIC | TTF_STYLE_BOLD);

    recupHighScores(score);

    for(i = 0; i < 5; i++)
    {
        sprintf(texteRecupScores01, " %der : %d", 1, score[0]);
        sprintf(texteRecupScores02, "%dème : %d", 2, score[1]);
        sprintf(texteRecupScores03, "%dème : %d", 3, score[2]);
        sprintf(texteRecupScores04, "%dème : %d", 4, score[3]);
        sprintf(texteRecupScores05, "%dème : %d", 5, score[4]);

        positionTexte[i].x = ecran->w / 2 - 100;
        positionTexte[i].y = ecran->h / 2 - 150 + positionEnPlus;
        positionEnPlus += 60;
    }

    while(continuer)
    {
        SDL_WaitEvent(&eventHighScores);
        switch(eventHighScores.type)
        {
            case SDL_QUIT:
                continuer = 0;
                break;
            case SDL_KEYDOWN:
                switch(eventHighScores.key.keysym.sym)
                {
                    case SDLK_ESCAPE:
                        continuer = 0;
                        break;
                }
                break;
        }

        if(!jouerMusique)
        {
            FMUSIC_PlaySong(fondMusique);
            FMUSIC_SetLooping(fondMusique, 1);
            jouerMusique = 1;
        }

        SDL_WM_SetCaption("Click'o'Mania - HIGHSCORES" , NULL);
        SDL_FillRect(ecran, NULL, SDL_MapRGB(ecran->format, 255, 255, 255));

        positionFond.x = ecran->w / 2 - fond->w / 2;
        positionFond.y = ecran->h / 2 - fond->h / 2;
        SDL_BlitSurface(fond, NULL, ecran, &positionFond); /* Blit du fond par-dessus */

        for (i = 0; i < 5; i++)
        {
            for(j = 0; i < 5; i++)
            {
                texte[0] = TTF_RenderText_Blended(police, texteRecupScores01, couleurNoire);
                texte[1] = TTF_RenderText_Blended(police, texteRecupScores02, couleurNoire);
                texte[2] = TTF_RenderText_Blended(police, texteRecupScores03, couleurNoire);
                texte[3] = TTF_RenderText_Blended(police, texteRecupScores04, couleurNoire);
                texte[4] = TTF_RenderText_Blended(police, texteRecupScores05, couleurNoire);
                SDL_BlitSurface(texte[0], NULL, ecran, &positionTexte[0]); /* Blit du texte par-dessus */
                SDL_BlitSurface(texte[1], NULL, ecran, &positionTexte[1]); /* Blit du texte par-dessus */
                SDL_BlitSurface(texte[2], NULL, ecran, &positionTexte[2]); /* Blit du texte par-dessus */
                SDL_BlitSurface(texte[3], NULL, ecran, &positionTexte[3]); /* Blit du texte par-dessus */
                SDL_BlitSurface(texte[4], NULL, ecran, &positionTexte[4]); /* Blit du texte par-dessus */
            }
        }

        SDL_Flip(ecran);
    }
    for(i = 0; i< 5; i++)
        SDL_FreeSurface(texte[i]);

    TTF_CloseFont(police);
    ecran = SDL_SetVideoMode(800, 600, 32, SDL_HWSURFACE | SDL_DOUBLEBUF);
    FMUSIC_FreeSong(fondMusique);
}

void recupHighScores(int *score)
{
    FILE* fichier = NULL;

    fichier = fopen("highscores.minishlink", "r"); //On ouvre le fichier en mode lecture

    //Si l'ouverture a fonctionnée
    if (fichier != NULL)
    {
        //On prend les valeurs des HighScores
        fscanf(fichier, "%ld %ld %ld %ld %ld", &score[0], &score[1], &score[2],  &score[3],  &score[4]);
        fclose(fichier); //On ferme le fichier
    }
    //Si l'ouverture n'a pas fonctionnée
    else
    {
        // On affiche un message d'erreur
        fprintf(stderr, "Erreur Fichier: Ouverture du fichier échouée lors de la récupération des HighScores");
    }
}



