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