#include "menu.h"

std::string menu(SDL_Surface* screen)
{
    /// [1] Lancement du menu

    // [1.3] Préparation des objets
    std::string retour("quitter");

    SDL_Surface *titre(0);
    SDL_Rect positionTitre;

    SDL_Color blanc = {255,255,255};
    Bouton quitButton(transform("Quit", 30), screen, screen->w-80, screen->h-50);
    quitButton.attribuerImg(transform("Quit", 30, blanc));

    // [1.4] Préparation du texte
    titre = transform("-^*.PacMen _ stage select.*^-", 40);
    positionTitre.x = screen->w/2-titre->w/2;
    positionTitre.y = 20;

    // [1.5] Préparation du gestionnaireNiveaux
    GestionnaireNiveaux interface(screen);

    /// [2] Boucle principale évenementielle
    bool done = false;
    while (!done)
    {
        // [2.1] Gestion évènements
        SDL_Event event;
        while (SDL_PollEvent(&event))
        {
            switch (event.type)
            {
            case SDL_QUIT:
                done = true;
                break;
            case SDL_KEYDOWN:
                if (event.key.keysym.sym == SDLK_ESCAPE)
                    done = true;
                break;
            case SDL_MOUSEMOTION:
                quitButton.calculer(event.motion.x,event.motion.y);
                interface.calculer(event.motion.x,event.motion.y);
                break;
            case SDL_MOUSEBUTTONUP:
                if (event.button.button==SDL_BUTTON_LEFT)
                {
                    if (quitButton.estClique(event.button.x,event.button.y))
                        done = true;
                    else
                        interface.clic(event.button.x,event.button.y);
                }
                break;
            } // end switch event type
        } // end of message processing

        // [2.2] Calculs
        if (interface.estChoisi())
        {
            done=true;
            retour=interface.getChoix();
        }

        // [2.3] Dessin des composants
        SDL_FillRect(screen, 0, SDL_MapRGB(screen->format, 128, 100, 255));

        interface.afficher();
        SDL_BlitSurface(titre, 0, screen, &positionTitre);
        quitButton.afficher();

        SDL_Flip(screen);
    } //fin bcl principale

    ///[4] Destruction des composants
    SDL_FreeSurface(titre);

    std::cout << "menu.cpp: Aucune erreur détectée." << std::endl;
    return retour;
};