- if(mainmenu==1||mainmenu==2){
- if(Input::MouseClicked()&&selected==1){
- if(!gameon){
- fireSound(firestartsound);
- flash();
- //new game
- if(accountactive) {
- mainmenu=5;
- } else {
- mainmenu=7;
- }
- selected=-1;
- }else{
- //resume
- mainmenu=0;
- pause_sound(stream_music3);
- resume_stream(music1);
- }
- }
-
- if(Input::MouseClicked()&&selected==2){
- fireSound();
- flash();
- //options
- mainmenu=3;
- if(newdetail>2)newdetail=detail;
- if(newdetail<0)newdetail=detail;
- if(newscreenwidth>3000)newscreenwidth=screenwidth;
- if(newscreenwidth<0)newscreenwidth=screenwidth;
- if(newscreenheight>3000)newscreenheight=screenheight;
- if(newscreenheight<0)newscreenheight=screenheight;
- }
-
- if(Input::MouseClicked()&&selected==3){
- fireSound();
- flash();
- if(!gameon){
- //quit
- tryquit=1;
- pause_sound(stream_music3);
- }else{
- //end game
- gameon=0;
- mainmenu=1;
- }
- }
- }else if(mainmenu==3){
- if(Input::MouseClicked()){
-
- if(selected!=-1)
- fireSound();
-
- switch(selected){
- case 0: {
- extern SDL_Rect **resolutions;
- bool isCustomResolution = true;
- bool found = false;
- for(int i = 0; (!found) && (resolutions[i]); i++){
- if((resolutions[i]->w == screenwidth) && (resolutions[i]->h == screenwidth))
- isCustomResolution = false;
-
- if((resolutions[i]->w == newscreenwidth) && (resolutions[i]->h == newscreenheight)){
- i++;
- if(resolutions[i] != NULL){
- newscreenwidth = (int) resolutions[i]->w;
- newscreenheight = (int) resolutions[i]->h;
- }else if(isCustomResolution){
- if((screenwidth == newscreenwidth) && (screenheight == newscreenheight)){
- newscreenwidth = (int) resolutions[0]->w;
- newscreenheight = (int) resolutions[0]->h;
- }else{
- newscreenwidth = screenwidth;
- newscreenheight = screenheight;
- }
- }else{
- newscreenwidth = (int) resolutions[0]->w;
- newscreenheight = (int) resolutions[0]->h;
- }
- found = true;
- }
- }
-
- if(!found){
- newscreenwidth = (int) resolutions[0]->w;
- newscreenheight = (int) resolutions[0]->h;
- }
- } break;
- case 1:
- newdetail++;
- if(newdetail>2)newdetail=0;
- break;
- case 2:
- bloodtoggle++;
- if(bloodtoggle>2)bloodtoggle=0;
- break;
- case 3:
- difficulty++;
- if(difficulty>2)difficulty=0;
- break;
- case 4:
- ismotionblur=1-ismotionblur;
- break;
- case 5:
- decals=1-decals;
- break;
- case 6:
- musictoggle=1-musictoggle;
-
- if(!musictoggle){
- pause_sound(music1);
- pause_sound(stream_music2);
- pause_sound(stream_music3);
-
- for(int i=0;i<4;i++){
- oldmusicvolume[i]=0;
- musicvolume[i]=0;
- }
- }
-
- if(musictoggle)
- emit_stream_np(stream_music3);
- break;
- case 7:
- flash();
- //options
- mainmenu=4;
- selected=-1;
- keyselect=-1;
- break;
- case 8:
- flash();
-
- if(newdetail>2)newdetail=detail;
- if(newdetail<0)newdetail=detail;
- if(newscreenwidth<0)newscreenwidth=screenwidth;
- if(newscreenheight<0)newscreenheight=screenheight;
-
- SaveSettings(*this);
- if(mainmenu==3&&gameon)mainmenu=2;
- if(mainmenu==3&&!gameon)mainmenu=1;
- break;
- case 9:
- invertmouse=1-invertmouse;
- break;
- case 10:
- usermousesensitivity+=.2;
- if(usermousesensitivity>2)usermousesensitivity=.2;
- break;
- case 11:
- volume+=.1f;
- if(volume>1.0001f)volume=0;
- OPENAL_SetSFXMasterVolume((int)(volume*255));
- break;
- case 12:
- flash();
-
- newstereomode = stereomode;
- mainmenu=18;
- keyselect=-1;
- break;
- case 13:
- showdamagebar=!showdamagebar;
- break;
- }
- }
- }else if(mainmenu==4){
- if(Input::MouseClicked()&&selected!=-1&&!waiting){
- fireSound();
- if(selected<9&&keyselect==-1)
- keyselect=selected;
- if(keyselect!=-1)
- setKeySelected();
- if(selected==9){
- flash();
-
- mainmenu=3;
-
- if(newdetail>2)newdetail=detail;
- if(newdetail<0)newdetail=detail;
- if(newscreenwidth>3000)newscreenwidth=screenwidth;
- if(newscreenwidth<0)newscreenwidth=screenwidth;
- if(newscreenheight>3000)newscreenheight=screenheight;
- if(newscreenheight<0)newscreenheight=screenheight;
- }
- }
- }else if(mainmenu==5){
+
+ // some specific case where we do something even if the left mouse button is not pressed.
+ if((mainmenu==5) && (endgame==2)) {
+ accountactive->endGame();
+ endgame=0;
+ }
+ if(mainmenu==10)
+ endgame=2;
+ if( (mainmenu==18) && Input::isKeyPressed(MOUSEBUTTON2) && (selected==1) )
+ stereoseparation-=0.001;
+
+ if(Input::MouseClicked() && (selected >= 0)) { // handling of the left mouse clic in menus
+ switch(mainmenu) {
+ case 1:
+ case 2:
+ switch(selected) {
+ case 1:
+ if(gameon) { //resume
+ mainmenu=0;
+ pause_sound(stream_menutheme);
+ resume_stream(leveltheme);
+ } else { //new game
+ fireSound(firestartsound);
+ flash();
+ mainmenu=(accountactive?5:7);
+ selected=-1;
+ }
+ break;
+ case 2: //options
+ fireSound();
+ flash();
+ mainmenu=3;
+ if(newdetail>2) newdetail=detail;
+ if(newdetail<0) newdetail=detail;
+ if(newscreenwidth>3000) newscreenwidth=screenwidth;
+ if(newscreenwidth<0) newscreenwidth=screenwidth;
+ if(newscreenheight>3000) newscreenheight=screenheight;
+ if(newscreenheight<0) newscreenheight=screenheight;
+ break;
+ case 3:
+ fireSound();
+ flash();
+ if(gameon){ //end game
+ gameon=0;
+ mainmenu=1;
+ } else { //quit
+ tryquit=1;
+ pause_sound(stream_menutheme);
+ }
+ break;
+ }
+ break;
+ case 3:
+ fireSound();
+ bool isCustomResolution,found;
+ switch(selected){
+ case 0:
+ extern SDL_Rect **resolutions;
+ isCustomResolution = true;
+ found = false;
+ for(int i = 0; (!found) && (resolutions[i]); i++) {
+ if((resolutions[i]->w == screenwidth) && (resolutions[i]->h == screenwidth))
+ isCustomResolution = false;
+
+ if((resolutions[i]->w == newscreenwidth) && (resolutions[i]->h == newscreenheight)) {
+ i++;
+ if(resolutions[i] != NULL) {
+ newscreenwidth = (int) resolutions[i]->w;
+ newscreenheight = (int) resolutions[i]->h;
+ } else if(isCustomResolution){
+ if((screenwidth == newscreenwidth) && (screenheight == newscreenheight)) {
+ newscreenwidth = (int) resolutions[0]->w;
+ newscreenheight = (int) resolutions[0]->h;
+ } else {
+ newscreenwidth = screenwidth;
+ newscreenheight = screenheight;
+ }
+ } else {
+ newscreenwidth = (int) resolutions[0]->w;
+ newscreenheight = (int) resolutions[0]->h;
+ }
+ found = true;
+ }
+ }