#include "eventLoop.h" int eventLoop(SDL_Surface* ecran) { int check(0);//Variable d'erreur; 0=Ok, -1=probleme // Charges des images SDL_Surface* mort = SDL_LoadBMP("Images/GameOver.bmp"); SDL_SetColorKey(mort,SDL_SRCCOLORKEY,SDL_MapRGB(mort->format,0,255,255)); Joueur joueur(ecran); joueur.setArme("Baroudeur"); Bouton iconeOne(0,0,0,"Baroudeur", ecran, &joueur);//Précédent 0/404 Bouton iconeTwo(0,76,1,"Usiane", ecran, &joueur);//Précédent 140/404 Bouton iconeThree(0,152,2,"Triphaseur", ecran, &joueur);//Précédent 280/404 ChampDeBataille arena(&joueur,ecran,10); if (!mort)//Recherche d'erreurs { printf("Unable to load bitmap: %s\n", SDL_GetError()); check=-1; return check; } // Coordonnées des surfaces SDL_Rect position; position.x = 0; position.y = 0; //Mise au point du tir sans répétition due à la mémoire de l'evenement. bool latence(true); // program main loop bool done = false; SDL_ShowCursor(SDL_DISABLE); //Gérance du temps int tempsPrecedent(0); int tempsActuel(0); while (!done && optionsFire::continuer) { // message processing loop SDL_Event event; SDL_PollEvent(&event); // activation du fps (fréquence à 50Hz) tempsActuel=SDL_GetTicks(); if (tempsActuel-tempsPrecedent>20) {//Fps // check for messages switch (event.type) { // exit if the window is closed case SDL_QUIT: optionsFire::continuer=false; done = true; break; case SDL_KEYDOWN: switch(event.key.keysym.sym) { case SDLK_ESCAPE: done = true; break; case SDLK_b: joueur.setArme("Baroudeur"); break; case SDLK_u: joueur.setArme("Usiane"); break; case SDLK_t: joueur.setArme("Triphaseur"); break; } break; case SDL_MOUSEMOTION: joueur.giveMousePosition(event.motion.x,event.motion.y); break; case SDL_MOUSEBUTTONDOWN: switch (event.button.button) { case SDL_BUTTON_LEFT: if(latence==true) { Cliquable::getFire(event.button.x,event.button.y,joueur.getTypeWeapon()); joueur.tir(); } latence=false;//Empeche de tirer en continu. break; }//SDL_MOUSEBUTTONDOWN break; case SDL_MOUSEBUTTONUP: switch (event.button.button) { case SDL_BUTTON_LEFT: latence=true; break; } } //EVENT end switch event loop // DRAWING STARTS HERE // clear screen SDL_FillRect(ecran, 0, SDL_MapRGB(ecran->format, 0, 0, 0)); // draw bitmap SDL_BlitSurface(optionsFire::level, 0, ecran, &position); //Gestion du temps tempsActuel=tempsPrecedent; if (joueur.estVivant()) { iconeOne.afficher(); iconeTwo.afficher(); iconeThree.afficher(); arena.afficher(); joueur.afficher(); } else { SDL_BlitSurface(mort, 0, ecran, &position); SDL_ShowCursor(SDL_ENABLE); } // DRAWING ENDS HERE Cliquable::upFire(); }//End fps // finally, update the screen :) SDL_Flip(ecran); } //MAIN end main loop // free loaded bitmap SDL_FreeSurface(optionsFire::level);//Fond optionsFire::level=0;//On pointe le pointeur sur lui, pour la securité return check; }