#include #include #include #include "SDL_image.h" #include "../include/editeur.h" #include "../include/misc.h" #include "../include/constant.h" #include "../include/niveau.h" #ifdef HW_SCREEN_RESIZE extern SDL_Surface *hw_screen; #endif //HW_SCREEN_RESIZE int niveau_1_joueur(SDL_Surface *screen, int niveau){ int continuer = 1; SDL_Surface *menu = NULL; SDL_Event event; SDL_Rect positionMenu; #ifdef HW_SCREEN_RESIZE //if(screen != NULL) SDL_FreeSurface(screen); screen = SDL_CreateRGBSurface(SDL_SWSURFACE, 480,480, WINDOW_BPP, 0, 0, 0, 0); #else //HW_SCREEN_RESIZE screen = SDL_SetVideoMode(480,480, WINDOW_BPP, SDL_HWSURFACE); if (screen == NULL) { error("Can't set video mode: %s\n", SDL_GetError()); exit(1); } #endif //HW_SCREEN_RESIZE switch (niveau){ case -1: menu = IMG_Load("sprite/legende_editeur.png"); break; case 0: menu = IMG_Load("sprite/win_the_game.png"); break; case 1: menu = IMG_Load("sprite/niveau_1.png"); break; case 2: menu = IMG_Load("sprite/niveau_2.png"); break; case 3: menu = IMG_Load("sprite/niveau_3.png"); break; case 4: menu = IMG_Load("sprite/niveau_4.png"); break; case 5: menu = IMG_Load("sprite/niveau_5.png"); break; case 6: menu = IMG_Load("sprite/niveau_6.png"); break; case 7: menu = IMG_Load("sprite/niveau_7.png"); break; case 8: menu = IMG_Load("sprite/niveau_8.png"); break; case 9: menu = IMG_Load("sprite/niveau_9.png"); break; case 10: menu = IMG_Load("sprite/niveau_10.png"); break; } positionMenu.x = 0; positionMenu.y = 0; while (continuer) { SDL_WaitEvent(&event); switch(event.type) { case SDL_QUIT: SDL_FreeSurface(menu); return 1; break; case SDL_KEYDOWN: switch(event.key.keysym.sym) { case SDLK_ESCAPE: SDL_FreeSurface(menu); return 1; break; case SDLK_RETURN: continuer = 0; break; case SDLK_KP_ENTER: continuer = 0; break; default: break; } } SDL_FillRect(screen, NULL, SDL_MapRGB(screen->format, 0, 0, 0)); SDL_BlitSurface(menu, NULL, screen, &positionMenu); #ifdef HW_SCREEN_RESIZE SDL_FillRect(hw_screen, NULL, 0x000000); flip_NNOptimized_AllowOutOfScreen(screen, hw_screen, HW_SCREEN_WIDTH, MIN(screen->h*HW_SCREEN_WIDTH/screen->w, HW_SCREEN_HEIGHT)); SDL_Flip(hw_screen); #else //HW_SCREEN_RESIZE SDL_Flip(screen); #endif //HW_SCREEN_RESIZE } SDL_FreeSurface(menu); return 0; } int niveau_2_joueur(SDL_Surface *screen, int choix_niveau){ #ifdef HW_SCREEN_RESIZE //if(screen != NULL) SDL_FreeSurface(screen); screen = SDL_CreateRGBSurface(SDL_SWSURFACE, 480,480, WINDOW_BPP, 0, 0, 0, 0); #else //HW_SCREEN_RESIZE screen = SDL_SetVideoMode(480,480, WINDOW_BPP, SDL_HWSURFACE); if (screen == NULL) { error("Can't set video mode: %s\n", SDL_GetError()); exit(1); } #endif //HW_SCREEN_RESIZE int continuer = 1, choix_actuel=choix_niveau; SDL_Surface *menu = NULL; SDL_Event event; SDL_Rect positionMenu; positionMenu.x = 0; positionMenu.y = 0; switch (choix_actuel){ case 1: menu = IMG_Load("sprite/niveau_2p_1.png"); break; case 2: menu = IMG_Load("sprite/niveau_2p_2.png"); break; case 3: menu = IMG_Load("sprite/niveau_2p_3.png"); break; case 4: menu = IMG_Load("sprite/niveau_2p_4.png"); break; case 5: menu = IMG_Load("sprite/niveau_2p_5.png"); break; case 6: menu = IMG_Load("sprite/niveau_2p_6.png"); break; default: break; } while (continuer) { SDL_WaitEvent(&event); switch(event.type) { case SDL_QUIT: continuer=0; break; case SDL_KEYDOWN: switch(event.key.keysym.sym) { case SDLK_ESCAPE: // Veut arręter le jeu continuer=0; break; case SDLK_UP: switch(choix_actuel){ case 1: menu = IMG_Load("sprite/niveau_2p_6.png");; choix_actuel=6; break; case 2: menu = IMG_Load("sprite/niveau_2p_1.png"); choix_actuel=1; break; case 3: menu = IMG_Load("sprite/niveau_2p_2.png"); choix_actuel=2; break; case 4: menu = IMG_Load("sprite/niveau_2p_3.png");; choix_actuel=3; break; case 5: menu = IMG_Load("sprite/niveau_2p_4.png"); choix_actuel=4; break; case 6: menu = IMG_Load("sprite/niveau_2p_5.png"); choix_actuel=5; break; } break; case SDLK_DOWN: switch(choix_actuel){ case 1: menu = IMG_Load("sprite/niveau_2p_2.png");; choix_actuel=2; break; case 2: menu = IMG_Load("sprite/niveau_2p_3.png"); choix_actuel=3; break; case 3: menu = IMG_Load("sprite/niveau_2p_4.png"); choix_actuel=4; break; case 4: menu = IMG_Load("sprite/niveau_2p_5.png");; choix_actuel=5; break; case 5: menu = IMG_Load("sprite/niveau_2p_6.png"); choix_actuel=6; break; case 6: menu = IMG_Load("sprite/niveau_2p_1.png"); choix_actuel=1; break; } break; case SDLK_RETURN: SDL_FreeSurface(menu); return choix_actuel; break; case SDLK_KP_ENTER: SDL_FreeSurface(menu); return choix_actuel; break; default : break; } break; } SDL_FillRect(screen, NULL, SDL_MapRGB(screen->format, 0, 0, 0)); SDL_BlitSurface(menu, NULL, screen, &positionMenu); #ifdef HW_SCREEN_RESIZE SDL_FillRect(hw_screen, NULL, 0x000000); flip_NNOptimized_AllowOutOfScreen(screen, hw_screen, HW_SCREEN_WIDTH, MIN(screen->h*HW_SCREEN_WIDTH/screen->w, HW_SCREEN_HEIGHT)); SDL_Flip(hw_screen); #else //HW_SCREEN_RESIZE SDL_Flip(screen); #endif //HW_SCREEN_RESIZE } SDL_FreeSurface(menu); return 0; } int editeur_choix_niveau(SDL_Surface *screen){ #ifdef HW_SCREEN_RESIZE //if(screen != NULL) SDL_FreeSurface(screen); screen = SDL_CreateRGBSurface(SDL_SWSURFACE, 480,480, WINDOW_BPP, 0, 0, 0, 0); #else //HW_SCREEN_RESIZE screen = SDL_SetVideoMode(480,480, WINDOW_BPP, SDL_HWSURFACE); if (screen == NULL) { error("Can't set video mode: %s\n", SDL_GetError()); exit(1); } #endif //HW_SCREEN_RESIZE int continuer = 1, choix_actuel=1; SDL_Surface *menu = NULL; SDL_Event event; SDL_Rect positionMenu; positionMenu.x = 0; positionMenu.y = 0; menu = IMG_Load("sprite/niveau_2p_1.png"); while (continuer) { SDL_WaitEvent(&event); switch(event.type) { case SDL_QUIT: continuer=0; break; case SDL_KEYDOWN: switch(event.key.keysym.sym) { case SDLK_ESCAPE: // Veut arręter le jeu continuer=0; break; case SDLK_UP: switch(choix_actuel){ case 1: menu = IMG_Load("sprite/niveau_2p_6.png");; choix_actuel=6; break; case 2: menu = IMG_Load("sprite/niveau_2p_1.png"); choix_actuel=1; break; case 3: menu = IMG_Load("sprite/niveau_2p_2.png"); choix_actuel=2; break; case 4: menu = IMG_Load("sprite/niveau_2p_3.png");; choix_actuel=3; break; case 5: menu = IMG_Load("sprite/niveau_2p_4.png"); choix_actuel=4; break; case 6: menu = IMG_Load("sprite/niveau_2p_5.png"); choix_actuel=5; break; } break; case SDLK_DOWN: switch(choix_actuel){ case 1: menu = IMG_Load("sprite/niveau_2p_2.png");; choix_actuel=2; break; case 2: menu = IMG_Load("sprite/niveau_2p_3.png"); choix_actuel=3; break; case 3: menu = IMG_Load("sprite/niveau_2p_4.png"); choix_actuel=4; break; case 4: menu = IMG_Load("sprite/niveau_2p_5.png");; choix_actuel=5; break; case 5: menu = IMG_Load("sprite/niveau_2p_6.png"); choix_actuel=6; break; case 6: menu = IMG_Load("sprite/niveau_2p_1.png"); choix_actuel=1; break; } break; case SDLK_RETURN: SDL_FreeSurface(menu); return choix_actuel; break; case SDLK_KP_ENTER: SDL_FreeSurface(menu); return choix_actuel; break; default : break; } break; } SDL_FillRect(screen, NULL, SDL_MapRGB(screen->format, 0, 0, 0)); SDL_BlitSurface(menu, NULL, screen, &positionMenu); #ifdef HW_SCREEN_RESIZE SDL_FillRect(hw_screen, NULL, 0x000000); flip_NNOptimized_AllowOutOfScreen(screen, hw_screen, HW_SCREEN_WIDTH, MIN(screen->h*HW_SCREEN_WIDTH/screen->w, HW_SCREEN_HEIGHT)); SDL_Flip(hw_screen); #else //HW_SCREEN_RESIZE SDL_Flip(screen); #endif //HW_SCREEN_RESIZE } SDL_FreeSurface(menu); return 0; } int are_you_sure(SDL_Surface *screen){ #ifdef HW_SCREEN_RESIZE //if(screen != NULL) SDL_FreeSurface(screen); screen = SDL_CreateRGBSurface(SDL_SWSURFACE, 480,480, WINDOW_BPP, 0, 0, 0, 0); #else //HW_SCREEN_RESIZE screen = SDL_SetVideoMode(480,480, WINDOW_BPP, SDL_HWSURFACE); if (screen == NULL) { error("Can't set video mode: %s\n", SDL_GetError()); exit(1); } #endif //HW_SCREEN_RESIZE int continuer = 1, choix_actuel=1; SDL_Surface *menu = NULL; SDL_Event event; SDL_Rect positionMenu; positionMenu.x = 0; positionMenu.y = 0; menu = IMG_Load("sprite/sure_yes.png"); while (continuer) { SDL_WaitEvent(&event); switch(event.type) { case SDL_QUIT: continuer=0; break; case SDL_KEYDOWN: switch(event.key.keysym.sym) { case SDLK_ESCAPE: // Veut arręter le jeu continuer=0; break; case SDLK_LEFT: switch(choix_actuel){ case 1: menu = IMG_Load("sprite/sure_no.png");; choix_actuel=2; break; case 2: menu = IMG_Load("sprite/sure_yes.png"); choix_actuel=1; break; } break; case SDLK_RIGHT: switch(choix_actuel){ case 1: menu = IMG_Load("sprite/sure_no.png");; choix_actuel=2; break; case 2: menu = IMG_Load("sprite/sure_yes.png"); choix_actuel=1; break; } break; case SDLK_RETURN: SDL_FreeSurface(menu); return choix_actuel; break; case SDLK_KP_ENTER: SDL_FreeSurface(menu); return choix_actuel; break; default : break; } break; } SDL_FillRect(screen, NULL, SDL_MapRGB(screen->format, 0, 0, 0)); SDL_BlitSurface(menu, NULL, screen, &positionMenu); #ifdef HW_SCREEN_RESIZE SDL_FillRect(hw_screen, NULL, 0x000000); flip_NNOptimized_AllowOutOfScreen(screen, hw_screen, HW_SCREEN_WIDTH, MIN(screen->h*HW_SCREEN_WIDTH/screen->w, HW_SCREEN_HEIGHT)); SDL_Flip(hw_screen); #else //HW_SCREEN_RESIZE SDL_Flip(screen); #endif //HW_SCREEN_RESIZE } SDL_FreeSurface(menu); return 0; } int choix_nb_joueurs(SDL_Surface *screen){ #ifdef HW_SCREEN_RESIZE //if(screen != NULL) SDL_FreeSurface(screen); screen = SDL_CreateRGBSurface(SDL_SWSURFACE, 480,480, WINDOW_BPP, 0, 0, 0, 0); #else //HW_SCREEN_RESIZE screen = SDL_SetVideoMode(480,480, WINDOW_BPP, SDL_HWSURFACE); if (screen == NULL) { error("Can't set video mode: %s\n", SDL_GetError()); exit(1); } #endif //HW_SCREEN_RESIZE int continuer = 1, choix_actuel=1; SDL_Surface *menu = NULL; SDL_Event event; SDL_Rect positionMenu; positionMenu.x = 0; positionMenu.y = 0; menu = IMG_Load("sprite/menu_nb_joueur_1.png"); while (continuer) { SDL_WaitEvent(&event); switch(event.type) { case SDL_QUIT: continuer=0; break; case SDL_KEYDOWN: switch(event.key.keysym.sym) { case SDLK_ESCAPE: // Veut arręter le jeu continuer=0; break; case SDLK_UP: switch(choix_actuel){ case 1: menu = IMG_Load("sprite/menu_nb_joueur_2.png");; choix_actuel=2; break; case 2: menu = IMG_Load("sprite/menu_nb_joueur_1.png"); choix_actuel=1; break; } break; case SDLK_DOWN: switch(choix_actuel){ case 1: menu = IMG_Load("sprite/menu_nb_joueur_2.png");; choix_actuel=2; break; case 2: menu = IMG_Load("sprite/menu_nb_joueur_1.png"); choix_actuel=1; break; } break; case SDLK_RETURN: SDL_FreeSurface(menu); return choix_actuel; break; case SDLK_KP_ENTER: SDL_FreeSurface(menu); return choix_actuel; break; default : break; } break; } SDL_FillRect(screen, NULL, SDL_MapRGB(screen->format, 0, 0, 0)); SDL_BlitSurface(menu, NULL, screen, &positionMenu); #ifdef HW_SCREEN_RESIZE SDL_FillRect(hw_screen, NULL, 0x000000); flip_NNOptimized_AllowOutOfScreen(screen, hw_screen, HW_SCREEN_WIDTH, MIN(screen->h*HW_SCREEN_WIDTH/screen->w, HW_SCREEN_HEIGHT)); SDL_Flip(hw_screen); #else //HW_SCREEN_RESIZE SDL_Flip(screen); #endif //HW_SCREEN_RESIZE } SDL_FreeSurface(menu); return 0; } int options(SDL_Surface *screen){ #ifdef HW_SCREEN_RESIZE //if(screen != NULL) SDL_FreeSurface(screen); screen = SDL_CreateRGBSurface(SDL_SWSURFACE, 480,480, WINDOW_BPP, 0, 0, 0, 0); #else //HW_SCREEN_RESIZE screen = SDL_SetVideoMode(480,480, WINDOW_BPP, SDL_HWSURFACE); if (screen == NULL) { error("Can't set video mode: %s\n", SDL_GetError()); exit(1); } #endif //HW_SCREEN_RESIZE int continuer = 1, choix_actuel=1; SDL_Surface *menu = NULL; SDL_Event event; SDL_Rect positionMenu; positionMenu.x = 0; positionMenu.y = 0; menu = IMG_Load("sprite/options_s_o.png"); while (continuer) { SDL_WaitEvent(&event); switch(event.type) { case SDL_QUIT: continuer=0; break; case SDL_KEYDOWN: switch(event.key.keysym.sym) { case SDLK_ESCAPE: // Veut arręter le jeu continuer=0; break; case SDLK_LEFT: switch(choix_actuel){ case 1: menu = IMG_Load("sprite/options_s_n.png");; choix_actuel=2; break; case 2: menu = IMG_Load("sprite/options_s_o.png"); choix_actuel=1; break; case 3: menu = IMG_Load("sprite/options_b_n.png"); choix_actuel=4; break; case 4: menu = IMG_Load("sprite/options_b_o.png"); choix_actuel=3; break; } break; case SDLK_RIGHT: switch(choix_actuel){ case 1: menu = IMG_Load("sprite/options_s_n.png");; choix_actuel=2; break; case 2: menu = IMG_Load("sprite/options_s_o.png"); choix_actuel=1; break; case 3: menu = IMG_Load("sprite/options_b_n.png"); choix_actuel=4; break; case 4: menu = IMG_Load("sprite/options_b_o.png"); choix_actuel=3; break; } break; case SDLK_UP: switch(choix_actuel){ case 1: menu = IMG_Load("sprite/options_b_o.png");; choix_actuel=3; break; case 2: menu = IMG_Load("sprite/options_b_o.png"); choix_actuel=3; break; case 3: menu = IMG_Load("sprite/options_s_o.png"); choix_actuel=1; break; case 4: menu = IMG_Load("sprite/options_s_o.png"); choix_actuel=1; break; } break; case SDLK_DOWN: switch(choix_actuel){ case 1: menu = IMG_Load("sprite/options_b_o.png");; choix_actuel=3; break; case 2: menu = IMG_Load("sprite/options_b_o.png"); choix_actuel=3; break; case 3: menu = IMG_Load("sprite/options_s_o.png"); choix_actuel=1; break; case 4: menu = IMG_Load("sprite/options_s_o.png"); choix_actuel=1; break; } break; case SDLK_RETURN: SDL_FreeSurface(menu); return choix_actuel; break; case SDLK_KP_ENTER: SDL_FreeSurface(menu); return choix_actuel; break; default : break; } break; } SDL_FillRect(screen, NULL, SDL_MapRGB(screen->format, 0, 0, 0)); SDL_BlitSurface(menu, NULL, screen, &positionMenu); #ifdef HW_SCREEN_RESIZE SDL_FillRect(hw_screen, NULL, 0x000000); flip_NNOptimized_AllowOutOfScreen(screen, hw_screen, HW_SCREEN_WIDTH, MIN(screen->h*HW_SCREEN_WIDTH/screen->w, HW_SCREEN_HEIGHT)); SDL_Flip(hw_screen); #else //HW_SCREEN_RESIZE SDL_Flip(screen); #endif //HW_SCREEN_RESIZE } SDL_FreeSurface(menu); return 0; }