#include "menuFire.h" bool optionsFire::continuer=true; unsigned int optionsFire::difficulte=0; bool optionsFire::pleinEcran=false; SDL_Surface* optionsFire::level=0; int menuFire() { if ( SDL_Init( SDL_INIT_VIDEO ) < 0 ) { printf( "Unable to init SDL: %s\n", SDL_GetError() ); return 1; } // Lorsque le programme ferme, la SDL se ferme automatiquement. atexit(SDL_Quit); // create a new window SDL_WM_SetIcon(SDL_LoadBMP("Images/Icone Prog D.bmp"),NULL);//Icone en haut à droite de la fenêtre. SDL_Surface* ecran = SDL_SetVideoMode(640, 480, 16,SDL_HWSURFACE|SDL_DOUBLEBUF);//Création de la fenêtre SDL_WM_SetCaption("Fire !!!",NULL);//Nom de la fenêtre if ( !ecran ) { printf("Unable to set 640x480 video: %s\n", SDL_GetError()); return 1; } int quit(0); SDL_ShowCursor(SDL_ENABLE); //EVENT LOOP*********************************** SDL_Surface* bmp = SDL_LoadBMP("Images/Hiver.bmp"); SDL_Surface* bmpDeux = SDL_LoadBMP("Images/Collines.bmp"); SDL_Surface* bmpTrois = SDL_LoadBMP("Images/Soleil.bmp"); SDL_Surface* bmpSelect = bmp;//Choix par defaut int choice(0); SDL_Surface* indication = SDL_LoadBMP("Images/MenuFire.bmp"); SDL_SetColorKey(indication,SDL_SRCCOLORKEY,SDL_MapRGB(indication->format,255,255,255)); if (!bmp)//Recherche d'erreurs { printf("Unable to load bitmap: %s\n", SDL_GetError()); return 1; } // Coordonnées des surfaces SDL_Rect position; SDL_Rect positionIndication; position.x = 0; positionIndication.x = 160; position.y = 0; positionIndication.y = 120; bool done = false; while (!done) { // message processing loop SDL_Event event; SDL_WaitEvent(&event); // check for messages switch (event.type) { // exit if the window is closed case SDL_QUIT: optionsFire::continuer=false; done = true; quit = 2;//Signifie que le joueur quitte pour de bon. break; // check for keypresses case SDL_KEYDOWN: switch(event.key.keysym.sym) { case SDLK_ESCAPE://Touche Echape done = true; break; case SDLK_LEFT://Petit ecran optionsFire::pleinEcran=false; break; case SDLK_RIGHT://Plein ecran optionsFire::pleinEcran=true; break; case SDLK_UP://Monte le niveau de difficulté if (choice<2) { choice++; } break; case SDLK_DOWN://Baisse le niveau de difficulte if (choice>0) { choice--; } break; } break; } // end switch // CALCULING STARTS HERE switch(choice) { case 0: bmpSelect=bmp; break; case 1: bmpSelect=bmpDeux; break; case 2: bmpSelect=bmpTrois; break; } // DRAWING STARTS HERE // clear screen SDL_FillRect(ecran, 0, SDL_MapRGB(ecran->format, 0, 0, 0)); // draw bitmap SDL_BlitSurface(bmpSelect, 0, ecran, &position); SDL_BlitSurface(indication, 0, ecran, &positionIndication); // DRAWING ENDS HERE // finally, update the screen :) SDL_Flip(ecran); } // end main loop //Attribution des options optionsFire::level=bmpSelect; optionsFire::difficulte=choice; // free loaded bitmap if (!(bmpSelect==bmp)) { SDL_FreeSurface(bmp); } else if(!(bmpSelect==bmpDeux)) { SDL_FreeSurface(bmpDeux); } else if (!(bmpSelect==bmpTrois)) { SDL_FreeSurface(bmpTrois); } SDL_FreeSurface(indication); //END EVENT LOOP******************************* // all is well ;) printf("Exited cleanly\n"); return quit; }