+ if(mainmenu==3||mainmenu==4||mainmenu==5||mainmenu==6||mainmenu==7||mainmenu==8||mainmenu==9||mainmenu==10||mainmenu==18){
+ glClear(GL_DEPTH_BUFFER_BIT);
+ glEnable(GL_ALPHA_TEST);
+ glAlphaFunc(GL_GREATER, 0.001f);
+ glEnable(GL_TEXTURE_2D);
+ glDisable(GL_DEPTH_TEST); // Disables Depth Testing
+ glDisable(GL_CULL_FACE);
+ glDisable(GL_LIGHTING);
+ glDepthMask(0);
+ glMatrixMode(GL_PROJECTION); // Select The Projection Matrix
+ glPushMatrix(); // Store The Projection Matrix
+ glLoadIdentity(); // Reset The Projection Matrix
+ glOrtho(0,screenwidth,0,screenheight,-100,100); // Set Up An Ortho Screen
+ glMatrixMode(GL_MODELVIEW); // Select The Modelview Matrix
+ glPushMatrix(); // Store The Modelview Matrix
+ glLoadIdentity(); // Reset The Modelview Matrix
+ glTranslatef(screenwidth/2,screenheight/2,0);
+ glPushMatrix();
+ glScalef((float)screenwidth/2,(float)screenheight/2,1);
+ glBlendFunc(GL_SRC_ALPHA,GL_ONE_MINUS_SRC_ALPHA);
+ glDisable(GL_BLEND);
+ glColor4f(0,0,0,1.0);
+ glTexParameterf( GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP );
+ glTexParameterf( GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP );
+ glDisable(GL_TEXTURE_2D);
+ glPushMatrix();
+ //glScalef(.25,.25,.25);
+ glBegin(GL_QUADS);
+ glTexCoord2f(0,0);
+ glVertex3f(-1, -1, 0.0f);
+ glTexCoord2f(1,0);
+ glVertex3f(1, -1, 0.0f);
+ glTexCoord2f(1,1);
+ glVertex3f(1, 1, 0.0f);
+ glTexCoord2f(0,1);
+ glVertex3f(-1, 1, 0.0f);
+ glEnd();
+ glPopMatrix();
+ glEnable(GL_BLEND);
+ glColor4f(0.4,0.4,0.4,1.0);
+ glTexParameterf( GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP );
+ glTexParameterf( GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP );
+ glEnable(GL_TEXTURE_2D);
+ glBindTexture( GL_TEXTURE_2D, Mainmenuitems[4]);
+ glPushMatrix();
+ //glScalef(.25,.25,.25);
+ glBegin(GL_QUADS);
+ glTexCoord2f(0,0);
+ glVertex3f(-1, -1, 0.0f);
+ glTexCoord2f(1,0);
+ glVertex3f(1, -1, 0.0f);
+ glTexCoord2f(1,1);
+ glVertex3f(1, 1, 0.0f);
+ glTexCoord2f(0,1);
+ glVertex3f(-1, 1, 0.0f);
+ glEnd();
+ glPopMatrix();
+ glPopMatrix();
+ glPopMatrix();
+ glMatrixMode(GL_PROJECTION); // Select The Projection Matrix
+ glPopMatrix();
+ glMatrixMode(GL_MODELVIEW); // Select The Modelview Matrix
+
+ if(mainmenu==3){
+ nummenuitems=14;
+ if((float)newscreenwidth>(float)newscreenheight*1.61||(float)newscreenwidth<(float)newscreenheight*1.59)sprintf (menustring[0], "Resolution: %d*%d",(int)newscreenwidth,(int)newscreenheight);
+ else sprintf (menustring[0], "Resolution: %d*%d (widescreen)",(int)newscreenwidth,(int)newscreenheight);
+ startx[0]=10+20;
+ starty[0]=440;
+ endx[0]=startx[0]+strlen(menustring[0])*10;
+ endy[0]=starty[0]+20;
+
+ if(newdetail==2)sprintf (menustring[1], "Detail: High");
+ else if(newdetail==1)sprintf (menustring[1], "Detail: Medium");
+ else sprintf (menustring[1], "Detail: Low");
+ startx[1]=10+60;
+ starty[1]=405;
+ endx[1]=startx[1]+strlen(menustring[1])*10;
+ endy[1]=starty[1]+20;
+
+ if(bloodtoggle==2)sprintf (menustring[2], "Blood: On, high detail (slower)");
+ if(bloodtoggle==1)sprintf (menustring[2], "Blood: On, low detail");
+ if(bloodtoggle==0)sprintf (menustring[2], "Blood: Off");
+ startx[2]=10+70;
+ starty[2]=370;
+ endx[2]=startx[2]+strlen(menustring[2])*10;
+ endy[2]=starty[2]+20;
+
+ if(difficulty==2)sprintf (menustring[3], "Difficulty: Insane");
+ if(difficulty==1)sprintf (menustring[3], "Difficulty: Difficult");
+ if(difficulty==0)sprintf (menustring[3], "Difficulty: Easier");
+ startx[3]=10+20-1000;
+ starty[3]=335-1000;
+ endx[3]=startx[3]+strlen(menustring[3])*10;
+ endy[3]=starty[3]+20;
+
+ if(ismotionblur==1)sprintf (menustring[4], "Blur Effects: Enabled (less compatible)");
+ if(ismotionblur==0)sprintf (menustring[4], "Blur Effects: Disabled (more compatible)");
+ startx[4]=10;
+ starty[4]=335;
+ endx[4]=startx[4]+strlen(menustring[4])*10;
+ endy[4]=starty[4]+20;
+
+ if(decals==1)sprintf (menustring[5], "Decals: Enabled (slower)");
+ if(decals==0)sprintf (menustring[5], "Decals: Disabled");
+ startx[5]=10+60;
+ starty[5]=300;
+ endx[5]=startx[5]+strlen(menustring[5])*10;
+ endy[5]=starty[5]+20;
+
+ if(musictoggle==1)sprintf (menustring[6], "Music: Enabled");
+ if(musictoggle==0)sprintf (menustring[6], "Music: Disabled");
+ startx[6]=10+70;
+ starty[6]=265;
+ endx[6]=startx[6]+strlen(menustring[6])*10;
+ endy[6]=starty[6]+20;
+
+ if(invertmouse==1)sprintf (menustring[9], "Invert mouse: Yes");
+ if(invertmouse==0)sprintf (menustring[9], "Invert mouse: No");
+ startx[9]=10;
+ starty[9]=230;
+ endx[9]=startx[9]+strlen(menustring[9])*10;
+ endy[9]=starty[9]+20;
+
+ sprintf (menustring[10], "Mouse Speed: %d", (int)(usermousesensitivity*5));
+ startx[10]=20;
+ starty[10]=195;
+ endx[10]=startx[10]+strlen(menustring[10])*10;
+ endy[10]=starty[10]+20;
+
+ sprintf (menustring[11], "Volume: %d%%", (int)(volume*100));
+ startx[11]=10+60;
+ starty[11]=160;
+ endx[11]=startx[11]+strlen(menustring[11])*10;
+ endy[11]=starty[11]+20;
+
+ sprintf (menustring[13], "Damage Bar: %s",(showdamagebar?"on":"off"));
+ startx[13]=30;
+ starty[13]=125;
+ endx[13]=startx[13]+strlen(menustring[13])*10;
+ endy[13]=starty[13]+20;
+
+ sprintf (menustring[7], "-Configure Controls-");
+ startx[7]=10+15;
+ starty[7]=90;
+ endx[7]=startx[7]+strlen(menustring[7])*10;
+ endy[7]=starty[7]+20;
+
+ sprintf (menustring[12], "-Configure Stereo -");
+ startx[12]=10+15;
+ starty[12]=55;
+ endx[12]=startx[12]+strlen(menustring[7])*10;
+ endy[12]=starty[12]+20;
+
+ if(newdetail==detail&&newscreenheight==(int)screenheight&&newscreenwidth==(int)screenwidth)sprintf (menustring[8], "Back");
+ else sprintf (menustring[8], "Back (some changes take effect next time Lugaru is opened)");
+ startx[8]=10;
+ endx[8]=startx[8]+strlen(menustring[8])*10;
+ starty[8]=10;
+ endy[8]=starty[8]+20;
+ }
+
+ if(mainmenu==4){
+ nummenuitems=10;
+ if(keyselect!=0)sprintf (menustring[0], "Forwards: %s",Input::keyToChar(forwardkey));
+ else sprintf (menustring[0], "Forwards: _");
+ startx[0]=10;
+ starty[0]=400;
+ endx[0]=startx[0]+strlen(menustring[0])*10;
+ endy[0]=starty[0]+20;
+
+ if(keyselect!=1)sprintf (menustring[1], "Back: %s",Input::keyToChar(backkey));
+ else sprintf (menustring[1], "Back: _");
+ startx[1]=10+40;
+ starty[1]=360;
+ endx[1]=startx[1]+strlen(menustring[1])*10;
+ endy[1]=starty[1]+20;
+
+ if(keyselect!=2)sprintf (menustring[2], "Left: %s",Input::keyToChar(leftkey));
+ else sprintf (menustring[2], "Left: _");
+ startx[2]=10+40;
+ starty[2]=320;
+ endx[2]=startx[2]+strlen(menustring[2])*10;
+ endy[2]=starty[2]+20;
+
+ if(keyselect!=3)sprintf (menustring[3], "Right: %s",Input::keyToChar(rightkey));
+ else sprintf (menustring[3], "Right: _");
+ startx[3]=10+30;
+ starty[3]=280;
+ endx[3]=startx[3]+strlen(menustring[3])*10;
+ endy[3]=starty[3]+20;
+
+ if(keyselect!=4)sprintf (menustring[4], "Crouch: %s",Input::keyToChar(crouchkey));
+ else sprintf (menustring[4], "Crouch: _");
+ startx[4]=10+20;
+ starty[4]=240;
+ endx[4]=startx[4]+strlen(menustring[4])*10;
+ endy[4]=starty[4]+20;
+
+ if(keyselect!=5)sprintf (menustring[5], "Jump: %s",Input::keyToChar(jumpkey));
+ else sprintf (menustring[5], "Jump: _");
+ startx[5]=10+40;
+ starty[5]=200;
+ endx[5]=startx[5]+strlen(menustring[5])*10;
+ endy[5]=starty[5]+20;
+
+ if(keyselect!=6)sprintf (menustring[6], "Draw: %s",Input::keyToChar(drawkey));
+ else sprintf (menustring[6], "Draw: _");
+ startx[6]=10+40;
+ starty[6]=160;
+ endx[6]=startx[6]+strlen(menustring[6])*10;
+ endy[6]=starty[6]+20;
+
+ if(keyselect!=7)sprintf (menustring[7], "Throw: %s",Input::keyToChar(throwkey));
+ else sprintf (menustring[7], "Throw: _");
+ startx[7]=10+30;
+ starty[7]=120;
+ endx[7]=startx[7]+strlen(menustring[7])*10;
+ endy[7]=starty[7]+20;
+
+ if(keyselect!=8)sprintf (menustring[8], "Attack: %s",Input::keyToChar(attackkey));
+ else sprintf (menustring[8], "Attack: _");
+ startx[8]=10+20;
+ starty[8]=80;
+ endx[8]=startx[8]+strlen(menustring[8])*10;
+ endy[8]=starty[8]+20;
+
+
+
+ sprintf (menustring[9], "Back");
+ startx[9]=10;
+ endx[9]=startx[9]+strlen(menustring[9])*10;
+ starty[9]=10;
+ endy[9]=starty[9]+20;
+ }
+
+ if(mainmenu==5){
+ nummenuitems=NB_CAMPAIGN_MENU_ITEM+1+(accountactive?accountactive->getCampaignChoicesMade():0)+campaignchoicenum;
+
+ sprintf (menustring[0], "%s",accountactive->getName());
+ startx[0]=5;
+ starty[0]=400;
+ endx[0]=startx[0]+strlen(menustring[0])*10;
+ endy[0]=starty[0]+20;
+
+ sprintf (menustring[1], "Tutorial");
+ startx[1]=5;
+ starty[1]=300;
+ endx[1]=startx[1]+strlen(menustring[1])*10;
+ endy[1]=starty[1]+20;
+
+ sprintf (menustring[2], "Challenge");
+ startx[2]=5;
+ starty[2]=240;
+ endx[2]=startx[2]+strlen(menustring[2])*10;
+ endy[2]=starty[2]+20;
+
+ sprintf (menustring[3], "Delete User");
+ startx[3]=400;
+ starty[3]=10;
+ endx[3]=startx[3]+strlen(menustring[3])*10;
+ endy[3]=starty[3]+20;
+
+ sprintf (menustring[4], "Main Menu");
+ startx[4]=5;
+ starty[4]=10;
+ endx[4]=startx[4]+strlen(menustring[4])*10;
+ endy[4]=starty[4]+20;
+
+ sprintf (menustring[5], "Change User");
+ startx[5]=5;
+ endx[5]=startx[5]+strlen(menustring[5])*10;
+ starty[5]=180;
+ endy[5]=starty[5]+20;
+
+ sprintf (menustring[6], "Campaign : %s", accountactive->getCurrentCampaign().c_str());
+ startx[6]=200;
+ endx[6]=startx[6]+strlen(menustring[6])*10;
+ starty[6]=420;
+ endy[6]=starty[6]+20;
+
+ //World
+
+ sprintf (menustring[NB_CAMPAIGN_MENU_ITEM], "World");
+ startx[NB_CAMPAIGN_MENU_ITEM]=30+120;
+ starty[NB_CAMPAIGN_MENU_ITEM]=30+480-400-50;
+ endx[NB_CAMPAIGN_MENU_ITEM]=startx[NB_CAMPAIGN_MENU_ITEM]+400;
+ endy[NB_CAMPAIGN_MENU_ITEM]=30+480-50;
+
+ if((accountactive?accountactive->getCampaignChoicesMade():0)) {
+ for(i=0;i<(accountactive?accountactive->getCampaignChoicesMade():0);i++) {
+ sprintf (menustring[NB_CAMPAIGN_MENU_ITEM+1+i], "%s", campaigndescription[levelorder[i]]);
+ startx[NB_CAMPAIGN_MENU_ITEM+1+i]=30+120+campaignlocationx[levelorder[i]]*400/512;
+ starty[NB_CAMPAIGN_MENU_ITEM+1+i]=30+30+(512-campaignlocationy[levelorder[i]])*400/512;
+ endx[NB_CAMPAIGN_MENU_ITEM+1+i]=startx[NB_CAMPAIGN_MENU_ITEM+1+i]+10;
+ endy[NB_CAMPAIGN_MENU_ITEM+1+i]=starty[NB_CAMPAIGN_MENU_ITEM+1+i]+10;
+ }
+ }
+
+ if(campaignchoicenum>0) {
+ for(i=(accountactive?accountactive->getCampaignChoicesMade():0);i<(accountactive?accountactive->getCampaignChoicesMade():0)+campaignchoicenum;i++){
+ sprintf (menustring[NB_CAMPAIGN_MENU_ITEM+1+i], "%s", campaigndescription[levelorder[i]]);
+ startx[NB_CAMPAIGN_MENU_ITEM+1+i]=30+120+campaignlocationx[campaignchoicewhich[i-((accountactive?accountactive->getCampaignChoicesMade():0))]]*400/512;
+ starty[NB_CAMPAIGN_MENU_ITEM+1+i]=30+30+(512-campaignlocationy[campaignchoicewhich[i-((accountactive?accountactive->getCampaignChoicesMade():0))]])*400/512;
+ endx[NB_CAMPAIGN_MENU_ITEM+1+i]=startx[NB_CAMPAIGN_MENU_ITEM+1+i]+10;
+ endy[NB_CAMPAIGN_MENU_ITEM+1+i]=starty[NB_CAMPAIGN_MENU_ITEM+1+i]+10;
+ }
+ }
+
+ }
+
+ if(mainmenu==6){
+ nummenuitems=3;
+
+ sprintf (menustring[0], "Are you sure you want to delete this user?");
+ startx[0]=10;
+ starty[0]=400;
+ endx[0]=startx[0]+strlen(menustring[0])*10;
+ endy[0]=starty[0]+20;
+
+ sprintf (menustring[1], "Yes");
+ startx[1]=10;
+ starty[1]=360;
+ endx[1]=startx[1]+strlen(menustring[1])*10;
+ endy[1]=starty[1]+20;
+
+ sprintf (menustring[2], "No");
+ startx[2]=10;
+ starty[2]=320;
+ endx[2]=startx[2]+strlen(menustring[2])*10;
+ endy[2]=starty[2]+20;
+
+ sprintf (menustring[3], "Extra 4");
+ startx[3]=10;
+ starty[3]=280;
+ endx[3]=startx[3]+strlen(menustring[3])*10;
+ endy[3]=starty[3]+20;
+
+ sprintf (menustring[4], "Extra 5");
+ startx[4]=10;
+ starty[4]=240;
+ endx[4]=startx[4]+strlen(menustring[4])*10;
+ endy[4]=starty[4]+20;
+
+ sprintf (menustring[5], "Back");
+ startx[5]=10;
+ endx[5]=startx[5]+strlen(menustring[5])*10;
+ starty[5]=10;
+ endy[5]=starty[5]+20;
+ }
+
+ if(mainmenu==7){
+ nummenuitems=Account::getNbAccounts()+2;
+
+ int num;
+
+ if(Account::getNbAccounts()<8)
+ sprintf (menustring[0], "New User");
+ else
+ sprintf (menustring[0], "No More Users");
+ startx[0]=10;
+ starty[0]=400;
+ endx[0]=startx[0]+strlen(menustring[0])*10;
+ endy[0]=starty[0]+20;
+
+ if(entername)
+ startx[0]+=10;
+
+
+ num=1;
+ for(i=0;i<Account::getNbAccounts();i++){
+ sprintf (menustring[num], "%s",Account::get(i)->getName());