int configure() { SDL_Event mevent; int option=1,i; drawConfigure(option); while(1) { while(SDL_PollEvent(&mevent)) { if (mevent.type==SDL_QUIT) return 0; /* joystick control for the menu */ if(joy[0]) { SDL_JoystickUpdate(); i=SDL_JoystickGetAxis(joy[0],1); if(i>4200) { mevent.type=SDL_KEYDOWN; mevent.key.keysym.sym=SDLK_DOWN; } if(i<-4200) { mevent.type=SDL_KEYDOWN; mevent.key.keysym.sym=SDLK_UP; } if(SDL_JoystickGetButton(joy[0], 0)) { mevent.type=SDL_KEYDOWN; mevent.key.keysym.sym=SDLK_RETURN; } if(SDL_JoystickGetButton(joy[0], 1)) { mevent.type=SDL_KEYDOWN; mevent.key.keysym.sym=SDLK_ESCAPE; } } if(mevent.type==SDL_KEYDOWN) { if(mevent.key.keysym.sym==SDLK_ESCAPE) return 1; if(mevent.key.keysym.sym==SDLK_DOWN || mevent.key.keysym.sym==SDLK_s) { option++; if(option>4) option=1; drawConfigure(option); } if(mevent.key.keysym.sym==SDLK_UP || mevent.key.keysym.sym==SDLK_w) { option--; if(option<1) option=4; drawConfigure(option); } if(mevent.key.keysym.sym==SDLK_RETURN) { switch(option) { default: break; case 1: if(joy[0]) { conf.control[0]=conf.control[0] ? 0 : 1; drawConfigure(option); } break; case 2: if(joy[1]) { conf.control[1]=conf.control[1] ? 0 : 1; drawConfigure(option); } break; case 3: conf.sound--; if(conf.sound<0) conf.sound=3; if(sound) { if(bgm) { Mix_FreeMusic(bgm); bgm=NULL; } for(i=0;i<NUM_EFX;i++) if(efx[i]) { Mix_FreeChunk(efx[i]); efx[i]=NULL; } Mix_CloseAudio(); } if(conf.sound!=NO_SOUND) { switch(conf.sound) { default: case SOUND_HI: i=44100; break; case SOUND_MED: i=22050; break; case SOUND_LOW: i=16000; break; } if(Mix_OpenAudio(i, MIX_DEFAULT_FORMAT, 2, 2048)<0) { fprintf(stderr, "Unable to set audio: %s\n", SDL_GetError()); sound=0; } else { soundLoad(); if(efx[7]) Mix_PlayChannel(-1,efx[7],0); sound=1; } } drawConfigure(option); break; case 4: conf.fullscreen=conf.fullscreen ? 0 : 1; drawConfigure(option); break; } } } } } return 0; }
int configure() { SDL_Event mevent; int option=0,i, menu=2; drawConfigure(option); while(1) { while(SDL_WaitEvent(&mevent)) { if (mevent.type==SDL_QUIT) return 0; if (mevent.type == SDL_MOUSEBUTTONDOWN) { //SDL_GetMouseState(&mouse_x, &mouse_y); //printf("mouse x: %i, Mouse y:%i\n",mouse_x, mouse_y); option=clickDetect(menu, mevent.button.button, mevent.button.x,mevent.button.y); //printf("option %i\n",option); //drawConfigure(option); mevent.type=SDL_KEYDOWN; mevent.key.keysym.sym=SDLK_RETURN; SDL_Delay(200); } if(mevent.type==SDL_KEYDOWN) { if(mevent.key.keysym.sym==SDLK_ESCAPE) return 1; if(mevent.key.keysym.sym==SDLK_DOWN || mevent.key.keysym.sym==SDLK_d) { option++; if(option>3)//4 option=1; drawConfigure(option); } if(mevent.key.keysym.sym==SDLK_UP || mevent.key.keysym.sym==SDLK_f) { option--; if(option<1) option=3;//4 drawConfigure(option); } if(mevent.key.keysym.sym==SDLK_RETURN) { switch(option) { default: break; case 1: if(joy[0]) { conf.control[0]=conf.control[0] ? 0 : 1; drawConfigure(option); } break; case 2://3 conf.sound--; if(conf.sound<0) conf.sound=3; if(sound) { /*if(bgm) { Mix_FreeMusic(bgm); bgm=NULL; }*/ for(i=0;i<NUM_EFX;i++) if(efx[i]) { Mix_FreeChunk(efx[i]); efx[i]=NULL; } //Mix_CloseAudio(); } if(conf.sound!=NO_SOUND) { switch(conf.sound) { default: case SOUND_HI: i=44100; break; case SOUND_MED: i=22050; break; case SOUND_LOW: i=16000; break; } if(Mix_OpenAudio(i, MIX_DEFAULT_FORMAT, 2, 2048)<0) { fprintf(stderr, "Unable to set audio: %s\n", SDL_GetError()); sound=0; } else { soundLoad(); if(efx[7]) Mix_PlayChannel(-1,efx[7],0); sound=1; } } drawConfigure(option); break; case 3: conf.music=conf.music ? 0 : 1; drawConfigure(option); if(conf.music==0){ if(bgm){ Mix_FreeMusic(bgm); bgm=NULL; } } else soundLoad(); break; /*case 4: conf.fullscreen=conf.fullscreen ? 0 : 1; drawConfigure(option); break;*/ } } } } } return 0; }