X-Git-Url: https://git.jsancho.org/?a=blobdiff_plain;f=Source%2FGameDraw.cpp;h=522681bc781434e18e23a23e21d4274ebc963956;hb=72621d52ae69fa4ecb4329437810d71860ae3ebc;hp=dd74893d7a9e80aa6b0b1f43e3247113f7eb3f02;hpb=fdee267b8dccf98a851e01c592bf80ce26e2d364;p=lugaru.git diff --git a/Source/GameDraw.cpp b/Source/GameDraw.cpp index dd74893..522681b 100644 --- a/Source/GameDraw.cpp +++ b/Source/GameDraw.cpp @@ -2015,85 +2015,39 @@ vector Game::ListCampaigns() { campaignNames.push_back(name.substr(0,name.length()-4)); } } + closedir(campaigns); return campaignNames; } void Game::LoadCampaign() { if(!accountactive) return; - if(!Mainmenuitems[7]) { - ifstream test(ConvertFileName((":Data:Textures:"+accountactive->getCurrentCampaign()+":World.png").c_str())); - if(test.good()) { - LoadTexture((":Data:Textures:"+accountactive->getCurrentCampaign()+":World.png").c_str(),&Mainmenuitems[7],0,0); - } else { - LoadTexture(":Data:Textures:World.png",&Mainmenuitems[7],0,0); - } - } ifstream ipstream(ConvertFileName((":Data:Campaigns:"+accountactive->getCurrentCampaign()+".txt").c_str())); ipstream.ignore(256,':'); - ipstream >> campaignnumlevels; - for(int i=0;i> campaignmapname[i]; - ipstream.ignore(256,':'); - ipstream >> campaigndescription[i]; - for(int j=0;j<256;j++){ - if(campaigndescription[i][j]=='_')campaigndescription[i][j]=' '; - } - ipstream.ignore(256,':'); - ipstream >> campaignchoosenext[i]; - ipstream.ignore(256,':'); - ipstream >> campaignnumnext[i]; - for(int j=0;j> campaignnextlevel[i][j]; - campaignnextlevel[i][j]-=1; - } - ipstream.ignore(256,':'); - ipstream >> campaignlocationx[i]; - ipstream.ignore(256,':'); - ipstream >> campaignlocationy[i]; + int numlevels; + ipstream >> numlevels; + campaignlevels.clear(); + for(int i=0;i> cl; + campaignlevels.push_back(cl); } ipstream.close(); - for(int i=0;igetCurrentCampaign()+":World.png").c_str())); + if(test.good()) { + LoadTexture((":Data:Textures:"+accountactive->getCurrentCampaign()+":World.png").c_str(),&Mainmenuitems[7],0,0); + } else { + LoadTexture(":Data:Textures:World.png",&Mainmenuitems[7],0,0); } - levelorder[0]=0; - levelvisible[0]=1; - for(int i=0;igetCampaignChoicesMade();i++){ - levelorder[i+1]=campaignnextlevel[levelorder[i]][accountactive->getCampaignChoice(i)]; - levelvisible[levelorder[i+1]]=1; - } - int whichlevelstart = accountactive->getCampaignChoicesMade()-1; - if(whichlevelstart<0){ + if(accountactive->getCampaignChoicesMade()==0) { accountactive->setCampaignScore(0); accountactive->resetFasttime(); - campaignchoicenum=1; - campaignchoicewhich[0]=0; - } - else - { - campaignchoicenum=campaignnumnext[levelorder[whichlevelstart]]; - for(int i=0;i2)texdetail=2; - if(mainmenu!=oldmainmenu&&oldmainmenu!=0){ - if(mainmenu==1){ - LoadTexture(":Data:Textures:Newgame.png",&Mainmenuitems[1],0,0); - LoadTexture(":Data:Textures:Quit.png",&Mainmenuitems[3],0,0); - } - if(mainmenu==2){ - LoadTexture(":Data:Textures:Resume.png",&Mainmenuitems[1],0,0); - LoadTexture(":Data:Textures:Endgame.png",&Mainmenuitems[3],0,0); - } - } - if(lastcheck>.5||oldmainmenu!=mainmenu){ + if(oldmainmenu!=mainmenu){ if(mainmenu==5){ LoadCampaign(); } } - if(mainmenu==5){ - lastcheck=0; - } - - texdetail=temptexdetail; oldmainmenu=mainmenu; - 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); + 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((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(); + //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(); - glMatrixMode(GL_PROJECTION); // Select The Projection Matrix glPopMatrix(); - glMatrixMode(GL_MODELVIEW); // Select The Modelview Matrix + glMatrixMode(GL_PROJECTION); // Select The Projection Matrix + glPopMatrix(); + glMatrixMode(GL_MODELVIEW); // Select The Modelview Matrix + + switch(mainmenu) { + case 1: + case 2:{ + nummenuitems=4; + startx[0]=150; + starty[0]=480-128; + endx[0]=150+256; + endy[0]=480; + + startx[1]=18; + starty[1]=480-152-32; + endx[1]=18+128; + endy[1]=480-152; + + startx[2]=18; + starty[2]=480-228-32; + endx[2]=2+128; + endy[2]=480-228; + + if(mainmenu==1){ + startx[3]=18; + starty[3]=480-306-32; + endx[3]=22+64; + endy[3]=480-306; + } - if(mainmenu==3){ + if(mainmenu==2){ + startx[3]=18; + starty[3]=480-306-32; + endx[3]=22+128; + endy[3]=480-306; + } + + } + break; + case 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"); + 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"); + 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"); + 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)"); + 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"); + 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"); + 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"); + 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){ + break; + case 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; + break; + case 5: { + nummenuitems=NB_CAMPAIGN_MENU_ITEM; 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){ + break; + case 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){ + break; + case 7: { nummenuitems=Account::getNbAccounts()+2; int num; @@ -2490,214 +2343,173 @@ void Game::DrawMenu() 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;igetName()); startx[num]=10; starty[num]=360-20-20*num; - endx[num]=startx[num]+strlen(menustring[num])*10; - endy[num]=starty[num]+20; num++; } sprintf (menustring[num], "Back"); startx[num]=10; - endx[num]=startx[num]+strlen(menustring[num])*10; starty[num]=10; - endy[num]=starty[num]+20; } - if(mainmenu==8){ + break; + case 8: { nummenuitems=3; sprintf (menustring[0], "Easier"); startx[0]=10; starty[0]=400; - endx[0]=startx[0]+strlen(menustring[0])*10; - endy[0]=starty[0]+20; sprintf (menustring[1], "Difficult"); startx[1]=10; starty[1]=360; - endx[1]=startx[1]+strlen(menustring[1])*10; - endy[1]=starty[1]+20; sprintf (menustring[2], "Insane"); startx[2]=10; starty[2]=320; - endx[2]=startx[2]+strlen(menustring[2])*10; - endy[2]=starty[2]+20; } - if(mainmenu==9){ + break; + case 9: { nummenuitems=2+numchallengelevels; char temp[255]; - for(j=0;jgetHighScore(j)); - strcat(menustring[j],temp); - for(i=18;i<32;i++)if(menustring[j][i]=='\0')menustring[j][i]=' '; - menustring[j][32]='\0'; - sprintf (temp, "%d:",(int)(((int)accountactive->getFastTime(j)-(int)(accountactive->getFastTime(j))%60)/60)); - strcat(menustring[j],temp); - if((int)(accountactive->getFastTime(j))%60<10)strcat(menustring[j],"0"); - sprintf (temp, "%d",(int)(accountactive->getFastTime(j))%60); - strcat(menustring[j],temp); - - startx[j]=10; - starty[j]=400-j*25; - endx[j]=startx[j]+strlen(menustring[j])*10; - endy[j]=starty[j]+20; + for(int i=0;igetHighScore(i)); + for(int j=strlen(temp);j<(32-17);j++) + strcat(temp," "); + name+=temp; + sprintf (temp, "%d:",(int)(((int)accountactive->getFastTime(i)-(int)(accountactive->getFastTime(i))%60)/60)); + if((int)(accountactive->getFastTime(i))%60<10)strcat(temp,"0"); + name+=temp; + sprintf (temp, "%d",(int)(accountactive->getFastTime(i))%60); + name+=temp; + + sprintf(menustring[i],"%s",name.c_str()); + + startx[i]=10; + starty[i]=400-i*25; } sprintf (menustring[numchallengelevels], "Back"); startx[numchallengelevels]=10; - endx[numchallengelevels]=startx[numchallengelevels]+strlen(menustring[numchallengelevels])*10; starty[numchallengelevels]=10; - endy[numchallengelevels]=starty[numchallengelevels]+20; sprintf (menustring[numchallengelevels+1], " High Score Best Time"); startx[numchallengelevels+1]=10; starty[numchallengelevels+1]=440; - endx[numchallengelevels+1]=startx[numchallengelevels+1]+strlen(menustring[numchallengelevels+1])*10; - endy[numchallengelevels+1]=starty[numchallengelevels+1]+20; //numchallengelevels=tempncl; } - if(mainmenu==10){ + break; + case 10: { nummenuitems=6; char temp[255]; sprintf (menustring[0], "Congratulations!"); startx[0]=220; starty[0]=330; - endx[0]=startx[0]+strlen(menustring[0])*10; - endy[0]=starty[0]+20; sprintf (menustring[1], "You have avenged your family and"); startx[1]=140; starty[1]=300; - endx[1]=startx[1]+strlen(menustring[1])*10; - endy[1]=starty[1]+20; sprintf (menustring[2], "restored peace to the island of Lugaru."); startx[2]=110; starty[2]=270; - endx[2]=startx[2]+strlen(menustring[2])*10; - endy[2]=starty[2]+20; sprintf (menustring[3], "Back"); startx[3]=10; - endx[3]=startx[3]+strlen(menustring[3])*10; starty[3]=10; - endy[3]=starty[3]+20; - for(i=0;i<255;i++)menustring[4][i]='\0'; + for(int i=0;i<255;i++) + menustring[4][i]='\0'; sprintf (temp, "Your score:"); strcpy(menustring[4],temp); - for(i=0;i<20;i++)if(menustring[4][i]=='\0')menustring[4][i]=' '; + for(int i=0;i<20;i++) + if(menustring[4][i]=='\0') + menustring[4][i]=' '; menustring[4][20]='\0'; sprintf (temp, "%d",(int)accountactive->getCampaignScore()); strcat(menustring[4],temp); startx[4]=190; - endx[4]=startx[4]+strlen(menustring[4])*10; starty[4]=200; - endy[4]=starty[4]+20; - for(i=0;i<255;i++)menustring[5][i]='\0'; + for(int i=0;i<255;i++) + menustring[5][i]='\0'; sprintf (temp, "Highest score:"); strcpy(menustring[5],temp); - for(i=0;i<20;i++)if(menustring[5][i]=='\0')menustring[5][i]=' '; + for(int i=0;i<20;i++) + if(menustring[5][i]=='\0')menustring[5][i]=' '; menustring[5][20]='\0'; sprintf (temp, "%d",(int)accountactive->getCampaignHighScore()); strcat(menustring[5],temp); startx[5]=190; - endx[5]=startx[5]+strlen(menustring[5])*10; starty[5]=180; - endy[5]=starty[5]+20; } - if (mainmenu==18) { + break; + case 18: { nummenuitems=4; sprintf (menustring[0], "Stereo mode: %s", StereoModeName(newstereomode)); startx[0]=70; starty[0]=400; - endx[0]=startx[0]+strlen(menustring[0])*10; - endy[0]=starty[0]+20; sprintf (menustring[1], "Stereo separation: %.3f", stereoseparation); startx[1]=10; starty[1]=360; - endx[1]=startx[1]+strlen(menustring[1])*10; - endy[1]=starty[1]+20; sprintf (menustring[2], "Reverse stereo: %s", stereoreverse ? "Yes" : "No"); startx[2]=40; starty[2]=320; - endx[2]=startx[2]+strlen(menustring[2])*10; - endy[2]=starty[2]+20; sprintf (menustring[3], "Back"); startx[3]=10; - endx[3]=startx[3]+strlen(menustring[3])*10; starty[3]=10; - endy[3]=starty[3]+20; } } - - if(mainmenu==1||mainmenu==2){ - nummenuitems=4; - startx[0]=150; - starty[0]=480-128; - endx[0]=150+256; - endy[0]=480; - - startx[1]=18; - starty[1]=480-152-32; - endx[1]=18+128; - endy[1]=480-152; - - startx[2]=18; - starty[2]=480-228-32; - endx[2]=2+128; - endy[2]=480-228; - - if(mainmenu==1){ - startx[3]=18; - starty[3]=480-306-32; - endx[3]=22+64; - endy[3]=480-306; - } - - if(mainmenu==2){ - startx[3]=18; - starty[3]=480-306-32; - endx[3]=22+128; - endy[3]=480-306; + if(mainmenu!=1 && mainmenu!=2) { + for(int i=0;istartx[i]&&(mousecoordh/screenwidth*640)starty[i]&&480-(mousecoordv/screenheight*480)0) && (i!=NB_CAMPAIGN_MENU_ITEM) ) selected=i; + if((mainmenu!=5) && (mainmenu!=1) && (mainmenu!=2)) selected=i; // username in menu 5 and game title in menu 1&2 can't be selected + else if (i>0) selected=i; } } + int numlevelsonmap; + if(mainmenu == 5) { + numlevelsonmap = accountactive->getCampaignChoicesMade()+(accountactive->getCampaignChoicesMade()>0?campaignlevels[accountactive->getCampaignChoicesMade()-1].nextlevel.size():1); + for (int i=0;icampaignlevels[i].getStartX()&& + (mousecoordh/screenwidth*640)campaignlevels[i].getStartY()&& + 480-(mousecoordv/screenheight*480)1) selectedlong[i]=1; @@ -2705,92 +2517,6 @@ void Game::DrawMenu() selectedlong[i]-=multiplier*5; if(selectedlong[i]<0) selectedlong[i]=0; } - offsetx[i]=(startx[i]+endx[i])/2-(mousecoordh/screenwidth*640); - offsety[i]=(starty[i]+endy[i])/2-(480-(mousecoordv/screenheight*480)); - offsetx[i]*=.06f; - offsety[i]*=.06f; - offsetx[i]=0; - offsety[i]=0; - } - - if(mainmenu==1||mainmenu==2){ - 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_PROJECTION); // Select The Projection Matrix - glPushMatrix(); // Store The Projection Matrix - glLoadIdentity(); // Reset The Projection Matrix - glOrtho(0,640,0,480,-100,100); // Set Up An Ortho Screen - glMatrixMode(GL_MODELVIEW); // Select The Modelview Matrix - glPushMatrix(); // Store The Modelview Matrix - glLoadIdentity(); // Reset The Modelview Matrix - glPushMatrix(); - glDisable(GL_TEXTURE_2D); - glColor4f(1,0,0,1); - glPopMatrix(); - glPopMatrix(); - glMatrixMode(GL_PROJECTION); // Select The Projection Matrix - glPopMatrix(); - glMatrixMode(GL_MODELVIEW); // Select The Modelview Matrix - } glMatrixMode(GL_PROJECTION); // Select The Projection Matrix @@ -2801,7 +2527,7 @@ void Game::DrawMenu() glPushMatrix(); // Store The Modelview Matrix glLoadIdentity(); // Reset The Modelview Matrix glEnable(GL_TEXTURE_2D); - for(j=0;j0) { @@ -2840,13 +2570,13 @@ void Game::DrawMenu() glPushMatrix(); glBegin(GL_QUADS); glTexCoord2f(0,0); - glVertex3f(startx[j]-((float)i)*1/2+offsetx[j]*((float)i)/2, starty[j]-((float)i)*1/2+offsety[j]*((float)i)/2, 0.0f); + glVertex3f(startx[j]-((float)i)*1/2, starty[j]-((float)i)*1/2, 0.0f); glTexCoord2f(1,0); - glVertex3f(endx[j]+((float)i)*1/2+offsetx[j]*((float)i)/2, starty[j]-((float)i)*1/2+offsety[j]*((float)i)/2, 0.0f); + glVertex3f(endx[j]+((float)i)*1/2, starty[j]-((float)i)*1/2, 0.0f); glTexCoord2f(1,1); - glVertex3f(endx[j]+((float)i)*1/2+offsetx[j]*((float)i)/2, endy[j]+((float)i)*1/2+offsety[j]*((float)i)/2, 0.0f); + glVertex3f(endx[j]+((float)i)*1/2, endy[j]+((float)i)*1/2, 0.0f); glTexCoord2f(0,1); - glVertex3f(startx[j]-((float)i)*1/2+offsetx[j]*((float)i)/2, endy[j]+((float)i)*1/2+offsety[j]*((float)i)/2, 0.0f); + glVertex3f(startx[j]-((float)i)*1/2, endy[j]+((float)i)*1/2, 0.0f); glEnd(); glPopMatrix(); } @@ -2854,239 +2584,239 @@ void Game::DrawMenu() } if(mainmenu==3||mainmenu==4||mainmenu==5||mainmenu==6||mainmenu==7||mainmenu==8||mainmenu==9||mainmenu==10||mainmenu==18) { - if(mainmenu!=5||jaccountactive->getProgress() && (jaccountactive->getProgress() && (j0) - { - glColor4f(1,0,0,(1-((float)i)/10-(1-selectedlong[j]))*.25); - if(mainmenu==9&&j>accountactive->getProgress()&&jaccountactive->getProgress()&&j0) + { + glColor4f(1,0,0,(1-((float)i)/10-(1-selectedlong[j]))*.25); + if(mainmenu==9&&j>accountactive->getProgress()&&jNB_CAMPAIGN_MENU_ITEM&&j=NB_CAMPAIGN_MENU_ITEM+(accountactive?accountactive->getCampaignChoicesMade():0)){ - linestart.x=(startx[6+(accountactive?accountactive->getCampaignChoicesMade():0)]+endx[6+(accountactive?accountactive->getCampaignChoicesMade():0)])/2; - linestart.y=(starty[6+(accountactive?accountactive->getCampaignChoicesMade():0)]+endy[6+(accountactive?accountactive->getCampaignChoicesMade():0)])/2; - } - lineend.x=(startx[j+1]+endx[j+1])/2; - lineend.y=(starty[j+1]+endy[j+1])/2; - offset=lineend-linestart; - fac=offset; - Normalise(&fac); - offset=DoRotation(offset,0,0,90); - Normalise(&offset); - glDisable(GL_TEXTURE_2D); - - if(jgetCampaignChoicesMade():0)){ - glColor4f(0.5,0,0,1); - endsize=.5; - } else { - glColor4f(1,0,0,1); - endsize=1; - } - startsize=.5; - - linestart+=fac*4*startsize; - lineend-=fac*4*endsize; - - if(!(j>NB_CAMPAIGN_MENU_ITEM+1+(accountactive?accountactive->getCampaignChoicesMade():0)+campaignchoicenum)){ - glMatrixMode(GL_MODELVIEW); // Select The Modelview Matrix - glPushMatrix(); - glBegin(GL_QUADS); - glTexCoord2f(0,0); - glVertex3f(linestart.x-offset.x*startsize, linestart.y-offset.y*startsize, 0.0f); - glTexCoord2f(1,0); - glVertex3f(linestart.x+offset.x*startsize, linestart.y+offset.y*startsize, 0.0f); - glTexCoord2f(1,1); - glVertex3f(lineend.x+offset.x*endsize, lineend.y+offset.y*endsize, 0.0f); - glTexCoord2f(0,1); - glVertex3f(lineend.x-offset.x*endsize, lineend.y-offset.y*endsize, 0.0f); - glEnd(); - glPopMatrix(); - } - glEnable(GL_TEXTURE_2D); - } + glMatrixMode(GL_PROJECTION); // Select The Projection Matrix + glPushMatrix(); // Store The Projection Matrix + glLoadIdentity(); // Reset The Projection Matrix + glOrtho(0,640,0,480,-100,100); // Set Up An Ortho Screen + glMatrixMode(GL_MODELVIEW); // Select The Modelview Matrix + glPushMatrix(); // Store The Modelview Matrix + glLoadIdentity(); // Reset The Modelview Matrix + glPushMatrix(); + //Draw world, draw map + glTranslatef(2,-5,0); - if(j==NB_CAMPAIGN_MENU_ITEM) glBindTexture( GL_TEXTURE_2D, Mainmenuitems[7]); - else glBindTexture( GL_TEXTURE_2D, Mapcircletexture); - glTexParameterf( GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE ); - glTexParameterf( GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE ); - if(j-NB_CAMPAIGN_MENU_ITEM-1 < (accountactive?accountactive->getCampaignChoicesMade():0)) glColor4f(0.5,0,0,1); - if(j-NB_CAMPAIGN_MENU_ITEM-1 >= (accountactive?accountactive->getCampaignChoicesMade():0)) glColor4f(1,0,0,1); - if(j==NB_CAMPAIGN_MENU_ITEM) glColor4f(1,1,1,1); - XYZ midpoint; - float itemsize; - itemsize=abs(startx[j]-endx[j])/2; - midpoint=0; - midpoint.x=(startx[j]+endx[j])/2; - midpoint.y=(starty[j]+endy[j])/2; - if (j>NB_CAMPAIGN_MENU_ITEM && - (j-NB_CAMPAIGN_MENU_ITEM-1 < (accountactive?accountactive->getCampaignChoicesMade():0))) { - itemsize*=.5; - } - if(!(j-NB_CAMPAIGN_MENU_ITEM-1 > (accountactive?accountactive->getCampaignChoicesMade():0)+campaignchoicenum)) + if(igetCampaignChoicesMade()){ + glColor4f(0.5,0,0,1); + endsize=.5; + } else { + glColor4f(1,0,0,1); + endsize=1; + } + startsize=.5; + + linestart+=fac*4*startsize; + lineend-=fac*4*endsize; + + glMatrixMode(GL_MODELVIEW); // Select The Modelview Matrix + glPushMatrix(); + glBegin(GL_QUADS); + glTexCoord2f(0,0); + glVertex3f(linestart.x-offset.x*startsize, linestart.y-offset.y*startsize, 0.0f); + glTexCoord2f(1,0); + glVertex3f(linestart.x+offset.x*startsize, linestart.y+offset.y*startsize, 0.0f); + glTexCoord2f(1,1); + glVertex3f(lineend.x+offset.x*endsize, lineend.y+offset.y*endsize, 0.0f); + glTexCoord2f(0,1); + glVertex3f(lineend.x-offset.x*endsize, lineend.y-offset.y*endsize, 0.0f); + glEnd(); + glPopMatrix(); + glEnable(GL_TEXTURE_2D); + } + + glBindTexture( GL_TEXTURE_2D, Mapcircletexture); + glTexParameterf( GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE ); + glTexParameterf( GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE ); + XYZ midpoint; + float itemsize; + itemsize=campaignlevels[i].getWidth()/2; + midpoint=campaignlevels[i].getCenter(); + if(i < accountactive->getCampaignChoicesMade()) { + glColor4f(0.5,0,0,1); + itemsize*=.5; + } else { + glColor4f(1,0,0,1); + } + glMatrixMode(GL_MODELVIEW); // Select The Modelview Matrix + glPushMatrix(); + glBegin(GL_QUADS); + glTexCoord2f(0,0); + glVertex3f(midpoint.x-itemsize, midpoint.y-itemsize, 0.0f); + glTexCoord2f(1,0); + glVertex3f(midpoint.x+itemsize, midpoint.y-itemsize, 0.0f); + glTexCoord2f(1,1); + glVertex3f(midpoint.x+itemsize, midpoint.y+itemsize, 0.0f); + glTexCoord2f(0,1); + glVertex3f(midpoint.x-itemsize, midpoint.y+itemsize, 0.0f); + glEnd(); + glPopMatrix(); + glEnable(GL_BLEND); + for(int j=0;j<10;j++) + { + if(1-((float)j)/10-(1-selectedlong[NB_CAMPAIGN_MENU_ITEM+i])>0) { + glColor4f(1,0,0,(1-((float)j)/10-(1-selectedlong[NB_CAMPAIGN_MENU_ITEM+i]))*.25); glMatrixMode(GL_MODELVIEW); // Select The Modelview Matrix glPushMatrix(); glBegin(GL_QUADS); glTexCoord2f(0,0); - glVertex3f(midpoint.x-itemsize, midpoint.y-itemsize, 0.0f); + glVertex3f(midpoint.x-itemsize-((float)j)*1/2, midpoint.y-itemsize-((float)j)*1/2, 0.0f); glTexCoord2f(1,0); - glVertex3f(midpoint.x+itemsize, midpoint.y-itemsize, 0.0f); + glVertex3f(midpoint.x+itemsize+((float)j)*1/2, midpoint.y-itemsize-((float)j)*1/2, 0.0f); glTexCoord2f(1,1); - glVertex3f(midpoint.x+itemsize, midpoint.y+itemsize, 0.0f); + glVertex3f(midpoint.x+itemsize+((float)j)*1/2, midpoint.y+itemsize+((float)j)*1/2, 0.0f); glTexCoord2f(0,1); - glVertex3f(midpoint.x-itemsize, midpoint.y+itemsize, 0.0f); + glVertex3f(midpoint.x-itemsize-((float)j)*1/2, midpoint.y+itemsize+((float)j)*1/2, 0.0f); glEnd(); glPopMatrix(); - glEnable(GL_BLEND); - //glDisable(GL_ALPHA_TEST); - if(j<4) glBlendFunc(GL_SRC_ALPHA,GL_ONE); // Black is transparent - for(i=0;i<10;i++) - { - if(1-((float)i)/10-(1-selectedlong[j])>0) - { - glColor4f(1,0,0,(1-((float)i)/10-(1-selectedlong[j]))*.25); - glMatrixMode(GL_MODELVIEW); // Select The Modelview Matrix - glPushMatrix(); - glBegin(GL_QUADS); - glTexCoord2f(0,0); - glVertex3f(midpoint.x-itemsize-((float)i)*1/2+offsetx[j]*((float)i)/2, midpoint.y-itemsize-((float)i)*1/2+offsety[j]*((float)i)/2, 0.0f); - glTexCoord2f(1,0); - glVertex3f(midpoint.x+itemsize+((float)i)*1/2+offsetx[j]*((float)i)/2, midpoint.y-itemsize-((float)i)*1/2+offsety[j]*((float)i)/2, 0.0f); - glTexCoord2f(1,1); - glVertex3f(midpoint.x+itemsize+((float)i)*1/2+offsetx[j]*((float)i)/2, midpoint.y+itemsize+((float)i)*1/2+offsety[j]*((float)i)/2, 0.0f); - glTexCoord2f(0,1); - glVertex3f(midpoint.x-itemsize-((float)i)*1/2+offsetx[j]*((float)i)/2, midpoint.y+itemsize+((float)i)*1/2+offsety[j]*((float)i)/2, 0.0f); - glEnd(); - glPopMatrix(); - } - } } - glPopMatrix(); - glPopMatrix(); - glMatrixMode(GL_PROJECTION); // Select The Projection Matrix + } glPopMatrix(); - glMatrixMode(GL_MODELVIEW); // Select The Modelview Matrix + glPopMatrix(); + glMatrixMode(GL_PROJECTION); // Select The Projection Matrix + glPopMatrix(); + glMatrixMode(GL_MODELVIEW); // Select The Modelview Matrix - if(j-NB_CAMPAIGN_MENU_ITEM-1>=(accountactive?accountactive->getCampaignChoicesMade():0)){ - text.glPrintOutlined(0.9,0,0,startx[j]+10,starty[j]-4,menustring[j],0,0.6,640,480); - glDisable(GL_DEPTH_TEST); - } - } + if(i>=accountactive->getCampaignChoicesMade()){ + text.glPrintOutlined(0.9,0,0,campaignlevels[i].getStartX()+10, + campaignlevels[i].getStartY()-4, + campaignlevels[i].description.c_str(),0,0.6,640,480); + glDisable(GL_DEPTH_TEST); } } + glMatrixMode(GL_PROJECTION); // Select The Projection Matrix glPopMatrix(); glMatrixMode(GL_MODELVIEW); // Select The Modelview Matrix glPopMatrix(); - if(mainmenu==1||mainmenu==2) { - //if(transition<.1||transition>.9) { - 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,640,0,480,-100,100); // Set Up An Ortho Screen - glMatrixMode(GL_MODELVIEW); // Select The Modelview Matrix - glPushMatrix(); // Store The Modelview Matrix - glLoadIdentity(); // Reset The Modelview Matrix - glPushMatrix(); - glDisable(GL_TEXTURE_2D); - //if(transition<.1) - //glColor4f(1,0,0,1-(transition*10)); - //if(transition>.9) - //glColor4f(1,0,0,1-((1-transition)*10)); - glColor4f(1,0,0,1); - glPopMatrix(); - glPopMatrix(); - glMatrixMode(GL_PROJECTION); // Select The Projection Matrix - glPopMatrix(); - //} - } - glMatrixMode(GL_PROJECTION); // Select The Projection Matrix glPushMatrix(); // Store The Projection Matrix glLoadIdentity(); // Reset The Projection Matrix @@ -3116,13 +2846,13 @@ void Game::DrawMenu() //glScalef(.25,.25,.25); glBegin(GL_QUADS); glTexCoord2f(0,0); - glVertex3f(-1, -1, 0.0f); + glVertex3f(-1, -1, 0.0f); glTexCoord2f(1,0); - glVertex3f(1, -1, 0.0f); + glVertex3f(1, -1, 0.0f); glTexCoord2f(1,1); - glVertex3f(1, 1, 0.0f); + glVertex3f(1, 1, 0.0f); glTexCoord2f(0,1); - glVertex3f(-1, 1, 0.0f); + glVertex3f(-1, 1, 0.0f); glEnd(); glPopMatrix(); glPopMatrix(); @@ -3134,7 +2864,6 @@ void Game::DrawMenu() if(flashamount>0) { - //printf("Flash amount: %f, delay %i\n", flashamount, flashdelay); if(flashamount>1)flashamount=1; if(flashdelay<=0)flashamount-=multiplier; flashdelay--;