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