menu.cpp 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. #include "menu.h"
  2. std::string menu(SDL_Surface* screen)
  3. {
  4. /// [1] Lancement du menu
  5. // [1.3] Préparation des objets
  6. std::string retour("quitter");
  7. SDL_Surface *titre(0);
  8. SDL_Rect positionTitre;
  9. SDL_Color blanc = {255,255,255};
  10. Bouton quitButton(transform("Quit", 30), screen, screen->w-80, screen->h-50);
  11. quitButton.attribuerImg(transform("Quit", 30, blanc));
  12. // [1.4] Préparation du texte
  13. titre = transform("-^*.PacMen _ stage select.*^-", 40);
  14. positionTitre.x = screen->w/2-titre->w/2;
  15. positionTitre.y = 20;
  16. // [1.5] Préparation du gestionnaireNiveaux
  17. GestionnaireNiveaux interface(screen);
  18. /// [2] Boucle principale évenementielle
  19. bool done = false;
  20. while (!done)
  21. {
  22. // [2.1] Gestion évènements
  23. SDL_Event event;
  24. while (SDL_PollEvent(&event))
  25. {
  26. switch (event.type)
  27. {
  28. case SDL_QUIT:
  29. done = true;
  30. break;
  31. case SDL_KEYDOWN:
  32. if (event.key.keysym.sym == SDLK_ESCAPE)
  33. done = true;
  34. break;
  35. case SDL_MOUSEMOTION:
  36. quitButton.calculer(event.motion.x,event.motion.y);
  37. interface.calculer(event.motion.x,event.motion.y);
  38. break;
  39. case SDL_MOUSEBUTTONUP:
  40. if (event.button.button==SDL_BUTTON_LEFT)
  41. {
  42. if (quitButton.estClique(event.button.x,event.button.y))
  43. done = true;
  44. else
  45. interface.clic(event.button.x,event.button.y);
  46. }
  47. break;
  48. } // end switch event type
  49. } // end of message processing
  50. // [2.2] Calculs
  51. if (interface.estChoisi())
  52. {
  53. done=true;
  54. retour=interface.getChoix();
  55. }
  56. // [2.3] Dessin des composants
  57. SDL_FillRect(screen, 0, SDL_MapRGB(screen->format, 128, 100, 255));
  58. interface.afficher();
  59. SDL_BlitSurface(titre, 0, screen, &positionTitre);
  60. quitButton.afficher();
  61. SDL_Flip(screen);
  62. } //fin bcl principale
  63. ///[4] Destruction des composants
  64. SDL_FreeSurface(titre);
  65. std::cout << "menu.cpp: Aucune erreur détectée." << std::endl;
  66. return retour;
  67. };