#include #include #include #include #include "sdlcommon.h" #include "fenetre.h" #include "shmdata.h" using namespace std; Fenetre::Fenetre () { obstacle=0; SHOWcamera=1; SHOWpilot=1; fps=0; font=SFont_InitFont(IMG_Load(FONT_PATH)); if( SDL_Init(SDL_INIT_VIDEO) < 0 ) { fprintf(stderr, "Could not initialize SDL: %s\n", SDL_GetError()); return ; } atexit(SDL_Quit); screen = SDL_SetVideoMode(800,600, 32, SDL_HWSURFACE); /* SDL_HWSURFACE / SDL_SWSURFACE */ /*|SDL_ANYFORMAT*/ if( screen==NULL ) { fprintf(stderr, "Could not create surface: %s\n", SDL_GetError()); return ; } return ; Voiture.loadImage("Cars/voiture4.bmp"); circuit=1; } Fenetre::Fenetre (int largeur = 800, int hauteur = 600, int nb_couleurs = 16, char *titre = "Fenetre SDL", char *background=NULL) { obstacle=0; SHOWcamera=1; SHOWpilot=1; fps=0; font=SFont_InitFont(IMG_Load(FONT_PATH)); if (SDL_Init (SDL_INIT_VIDEO) < 0) { cerr << "Erreur dans l'initialisation de la librairie" << endl; } screen = SDL_SetVideoMode (largeur, hauteur, nb_couleurs, SDL_HWSURFACE | SDL_DOUBLEBUF); //SDL_CreateRGBSurface(SDL_HWSURFACE, largeur,hauteur,32,0,0,0,0); if (screen == NULL) { cerr << "Erreur dans l'initialisation des modes vidéos:" << SDL_GetError (); SDL_Quit (); } SDL_WM_SetCaption (titre, NULL); fond = SDL_LoadBMP (background); SDL_BlitSurface (fond, NULL, screen, NULL); SDL_Flip (screen); HardBG=SDL_CreateRGBSurface(SDL_HWSURFACE, largeur, hauteur, 32, 0,0,0,0); SDL_BlitSurface( fond, NULL, HardBG, NULL); Voiture.loadImage("Cars/voiture4.bmp"); circuit=1; } void Fenetre::loadBG(char *background) { fond = SDL_LoadBMP (background); SDL_BlitSurface (fond, NULL, /*screen*/HardBG, NULL); SDL_BlitSurface( fond, NULL, HardBG, NULL); SDL_Flip (screen); } Fenetre::~Fenetre () { /* if(fond) SDL_FreeSurface (fond); if(screen) SDL_FreeSurface (screen); */ SDL_Quit (); } void Fenetre::showView(int x,int y) { bool* v=Voiture.getView(); SDL_Rect r; r.x=x; r.y=y-1; r.h=1; r.w=4*CAMVECT; SDL_FillRect(screen,&r, SDL_MapRGB(screen->format, 255,0,0)); r.x=x; r.y=y+4; r.h=1; r.w=4*CAMVECT; SDL_FillRect(screen,&r, SDL_MapRGB(screen->format, 255,0,0)); for(int i=0;iformat, 0,0,0)); } } } void Fenetre::showObstacle() { SDL_Rect r; r.x=400; r.y=20; r.w=40; r.h=screen->h-40; SDL_FillRect(screen,&r, SDL_MapRGB(screen->format, 255,0,0)); } void Fenetre::showPilot(int x,int y) { if(Voiture.getVect()[0]) for(int i=0;i<16;i++) { for(int j=y-i;jaction=SAVE_STATE; break; case SDLK_x: Voiture.loadState(); //SData->action=RELOAD_STATE; break; case SDLK_F1: printf("Chargement Circuit 1\n"); circuit=1; loadBG("Back/bg1.bmp"); break; case SDLK_F2: printf("Chargement Circuit 2\n"); circuit=2; loadBG("Back/bg2.bmp"); break; case SDLK_F3: printf("Chargement Circuit 3\n"); circuit=3; loadBG("Back/bg3.bmp"); break; case SDLK_F4: printf("Chargement Circuit 4\n"); circuit=4; loadBG("Back/bg4.bmp"); break; case SDLK_F5: printf("Chargement Circuit 5\n"); circuit=5; loadBG("Back/bg5.bmp"); break; case SDLK_F6: printf("Chargement Circuit 6\n"); circuit=6; loadBG("Back/bg6.bmp"); break; case SDLK_F7: Voiture.incTraineeSize(-256); break; case SDLK_F8: Voiture.incTraineeSize(256); break; case SDLK_F9: printf("Chargement Voiture 1\n"); Voiture.loadImage("Cars/voiture1.bmp"); break; case SDLK_F10: printf("Chargement Voiture 2\n"); Voiture.loadImage("Cars/voiture2.bmp"); break; case SDLK_F11: printf("Chargement Voiture 3\n"); Voiture.loadImage("Cars/voiture3.bmp"); break; case SDLK_F12: printf("Chargement Voiture 4\n"); Voiture.loadImage("Cars/voiture4.bmp"); break; case SDLK_PAGEUP: Voiture.incAngleStep(1); break; case SDLK_PAGEDOWN: Voiture.incAngleStep(-1); break; case SDLK_HOME: waitdel+=5; break; case SDLK_END: waitdel-=5; if(waitdel<0) waitdel=0; break; default : break; } break; } break; } } }