12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394 |
- #include "menu.h"
- std::string menu()
- {
- /// [1] Lancement du menu
- // [1.1] Para-fenêtre
- SDL_WM_SetCaption("Gravitation Game _ Menu", 0);
- // [1.2] Préparation de la fenêtre
- SDL_Surface* screen = SDL_SetVideoMode(640, 480, 16,
- SDL_HWSURFACE|SDL_DOUBLEBUF);
- if ( !screen )
- {
- std::cout << "menu.h: impossible de créer l'écran. Erreur: " << SDL_GetError();
- return "quitter";
- }
- // [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("GRAVITATION GAME _ 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;
- retour = "quitter";
- break;
- case SDL_KEYDOWN:
- if (event.key.keysym.sym == SDLK_ESCAPE)
- done = true;
- retour = "quitter";
- 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;
- 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);
- SDL_FreeSurface(screen);
- std::cout << "menu.cpp: Aucune erreur détectée." << std::endl;
- return retour;
- };
|