X-Git-Url: https://git.jsancho.org/?a=blobdiff_plain;f=Source%2FGameDraw.cpp;h=dd74893d7a9e80aa6b0b1f43e3247113f7eb3f02;hb=710fa624080c2f2db7923832e2fd9945f4dd8254;hp=64e9288597014ce51fc43e756181fbadc7d41801;hpb=4530800e22022aaa7bb3172b3d23db69fc1661c5;p=lugaru.git diff --git a/Source/GameDraw.cpp b/Source/GameDraw.cpp index 64e9288..dd74893 100644 --- a/Source/GameDraw.cpp +++ b/Source/GameDraw.cpp @@ -24,6 +24,8 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. #include "Input.h" #include "Awards.h" +#include + using namespace std; extern XYZ viewer; @@ -129,8 +131,6 @@ int Game::DrawGLScene(StereoSide side) static float texviewwidth, texviewheight; static int i,j,k,l; static GLubyte color; - static float newbrightness; - static float changespeed; static XYZ checkpoint; static float tempmult; float tutorialopac; @@ -1435,11 +1435,11 @@ int Game::DrawGLScene(StereoSide side) float maxdistance=0; float tempdist; - int whichclosest; + //~ int whichclosest; for(i=0;imaxdistance){ - whichclosest=i; + //~ whichclosest=i; maxdistance=tempdist; } } @@ -1447,7 +1447,7 @@ int Game::DrawGLScene(StereoSide side) if(!player[i].dead){ tempdist=findDistancefast(¢er,&player[i].coords); if(tempdist>maxdistance){ - whichclosest=i; + //~ whichclosest=i; maxdistance=tempdist; } } @@ -1998,6 +1998,95 @@ int Game::DrawGLScene(StereoSide side) return 0; } +vector Game::ListCampaigns() { + DIR *campaigns = opendir(ConvertFileName(":Data:Campaigns")); + struct dirent *campaign = NULL; + if(!campaigns) { + perror("Problem while loading campaigns"); + cerr << "campaign folder was : " << ConvertFileName(":Data:Campaigns") << endl; + exit(EXIT_FAILURE); + } + vector campaignNames; + while ((campaign = readdir(campaigns)) != NULL) { + string name(campaign->d_name); + if(name.length()<5) + continue; + if(!name.compare(name.length()-4,4,".txt")) { + campaignNames.push_back(name.substr(0,name.length()-4)); + } + } + 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]; + } + ipstream.close(); + + 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){ + accountactive->setCampaignScore(0); + accountactive->resetFasttime(); + campaignchoicenum=1; + campaignchoicewhich[0]=0; + } + else + { + campaignchoicenum=campaignnumnext[levelorder[whichlevelstart]]; + for(int i=0;i.5||oldmainmenu!=mainmenu){ if(mainmenu==5){ - ifstream ipstream(ConvertFileName(":Data:Campaigns:main.txt")); - ipstream.ignore(256,':'); - ipstream >> campaignnumlevels; - for(i=0;i> campaignmapname[i]; - ipstream.ignore(256,':'); - ipstream >> campaigndescription[i]; - for(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(j=0;j> campaignnextlevel[i][j]; - campaignnextlevel[i][j]-=1; - } - ipstream.ignore(256,':'); - ipstream >> campaignlocationx[i]; - ipstream.ignore(256,':'); - ipstream >> campaignlocationy[i]; - } - ipstream.close(); - - for(i=0;igetCampaignChoicesMade():0);i++){ - levelorder[i+1]=campaignnextlevel[levelorder[i]][accountactive->getCampaignChoice(i)]; - levelvisible[levelorder[i+1]]=1; - } - int whichlevelstart = (accountactive?accountactive->getCampaignChoicesMade():0)-1; - if(whichlevelstart<0){ - accountactive->setCampaignScore(0); - accountactive->resetFasttime(); - campaignchoicenum=1; - campaignchoicewhich[0]=0; - } - else - { - campaignchoicenum=campaignnumnext[levelorder[whichlevelstart]]; - for(i=0;i(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); @@ -2165,8 +2199,6 @@ void Game::DrawMenu() starty[0]=440; endx[0]=startx[0]+strlen(menustring[0])*10; endy[0]=starty[0]+20; - movex[0]=0; - movey[0]=0; if(newdetail==2)sprintf (menustring[1], "Detail: High"); else if(newdetail==1)sprintf (menustring[1], "Detail: Medium"); @@ -2175,8 +2207,6 @@ void Game::DrawMenu() starty[1]=405; endx[1]=startx[1]+strlen(menustring[1])*10; endy[1]=starty[1]+20; - movex[1]=0; - movey[1]=0; if(bloodtoggle==2)sprintf (menustring[2], "Blood: On, high detail (slower)"); if(bloodtoggle==1)sprintf (menustring[2], "Blood: On, low detail"); @@ -2185,8 +2215,6 @@ void Game::DrawMenu() starty[2]=370; endx[2]=startx[2]+strlen(menustring[2])*10; endy[2]=starty[2]+20; - movex[2]=0; - movey[2]=0; if(difficulty==2)sprintf (menustring[3], "Difficulty: Insane"); if(difficulty==1)sprintf (menustring[3], "Difficulty: Difficult"); @@ -2195,8 +2223,6 @@ void Game::DrawMenu() starty[3]=335-1000; endx[3]=startx[3]+strlen(menustring[3])*10; endy[3]=starty[3]+20; - movex[3]=0; - movey[3]=0; if(ismotionblur==1)sprintf (menustring[4], "Blur Effects: Enabled (less compatible)"); if(ismotionblur==0)sprintf (menustring[4], "Blur Effects: Disabled (more compatible)"); @@ -2204,8 +2230,6 @@ void Game::DrawMenu() starty[4]=335; endx[4]=startx[4]+strlen(menustring[4])*10; endy[4]=starty[4]+20; - movex[4]=0; - movey[4]=0; if(decals==1)sprintf (menustring[5], "Decals: Enabled (slower)"); if(decals==0)sprintf (menustring[5], "Decals: Disabled"); @@ -2213,8 +2237,6 @@ void Game::DrawMenu() starty[5]=300; endx[5]=startx[5]+strlen(menustring[5])*10; endy[5]=starty[5]+20; - movex[5]=0; - movey[5]=0; if(musictoggle==1)sprintf (menustring[6], "Music: Enabled"); if(musictoggle==0)sprintf (menustring[6], "Music: Disabled"); @@ -2222,8 +2244,6 @@ void Game::DrawMenu() starty[6]=265; endx[6]=startx[6]+strlen(menustring[6])*10; endy[6]=starty[6]+20; - movex[6]=0; - movey[6]=0; if(invertmouse==1)sprintf (menustring[9], "Invert mouse: Yes"); if(invertmouse==0)sprintf (menustring[9], "Invert mouse: No"); @@ -2231,48 +2251,36 @@ void Game::DrawMenu() starty[9]=230; endx[9]=startx[9]+strlen(menustring[9])*10; endy[9]=starty[9]+20; - movex[9]=0; - movey[9]=0; 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; - movex[10]=0; - movey[10]=0; 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; - movex[11]=0; - movey[11]=0; 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; - movex[13]=0; - movey[13]=0; 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; - movex[7]=0; - movey[7]=0; 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; - movex[12]=0; - movey[12]=0; 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)"); @@ -2280,8 +2288,6 @@ void Game::DrawMenu() endx[8]=startx[8]+strlen(menustring[8])*10; starty[8]=10; endy[8]=starty[8]+20; - movex[8]=0; - movey[8]=0; } if(mainmenu==4){ @@ -2292,8 +2298,6 @@ void Game::DrawMenu() starty[0]=400; endx[0]=startx[0]+strlen(menustring[0])*10; endy[0]=starty[0]+20; - movex[0]=0; - movey[0]=0; if(keyselect!=1)sprintf (menustring[1], "Back: %s",Input::keyToChar(backkey)); else sprintf (menustring[1], "Back: _"); @@ -2301,8 +2305,6 @@ void Game::DrawMenu() starty[1]=360; endx[1]=startx[1]+strlen(menustring[1])*10; endy[1]=starty[1]+20; - movex[1]=0; - movey[1]=0; if(keyselect!=2)sprintf (menustring[2], "Left: %s",Input::keyToChar(leftkey)); else sprintf (menustring[2], "Left: _"); @@ -2310,8 +2312,6 @@ void Game::DrawMenu() starty[2]=320; endx[2]=startx[2]+strlen(menustring[2])*10; endy[2]=starty[2]+20; - movex[2]=0; - movey[2]=0; if(keyselect!=3)sprintf (menustring[3], "Right: %s",Input::keyToChar(rightkey)); else sprintf (menustring[3], "Right: _"); @@ -2319,8 +2319,6 @@ void Game::DrawMenu() starty[3]=280; endx[3]=startx[3]+strlen(menustring[3])*10; endy[3]=starty[3]+20; - movex[3]=0; - movey[3]=0; if(keyselect!=4)sprintf (menustring[4], "Crouch: %s",Input::keyToChar(crouchkey)); else sprintf (menustring[4], "Crouch: _"); @@ -2328,8 +2326,6 @@ void Game::DrawMenu() starty[4]=240; endx[4]=startx[4]+strlen(menustring[4])*10; endy[4]=starty[4]+20; - movex[4]=0; - movey[4]=0; if(keyselect!=5)sprintf (menustring[5], "Jump: %s",Input::keyToChar(jumpkey)); else sprintf (menustring[5], "Jump: _"); @@ -2337,8 +2333,6 @@ void Game::DrawMenu() starty[5]=200; endx[5]=startx[5]+strlen(menustring[5])*10; endy[5]=starty[5]+20; - movex[5]=0; - movey[5]=0; if(keyselect!=6)sprintf (menustring[6], "Draw: %s",Input::keyToChar(drawkey)); else sprintf (menustring[6], "Draw: _"); @@ -2346,8 +2340,6 @@ void Game::DrawMenu() starty[6]=160; endx[6]=startx[6]+strlen(menustring[6])*10; endy[6]=starty[6]+20; - movex[6]=0; - movey[6]=0; if(keyselect!=7)sprintf (menustring[7], "Throw: %s",Input::keyToChar(throwkey)); else sprintf (menustring[7], "Throw: _"); @@ -2355,8 +2347,6 @@ void Game::DrawMenu() starty[7]=120; endx[7]=startx[7]+strlen(menustring[7])*10; endy[7]=starty[7]+20; - movex[7]=0; - movey[7]=0; if(keyselect!=8)sprintf (menustring[8], "Attack: %s",Input::keyToChar(attackkey)); else sprintf (menustring[8], "Attack: _"); @@ -2364,8 +2354,6 @@ void Game::DrawMenu() starty[8]=80; endx[8]=startx[8]+strlen(menustring[8])*10; endy[8]=starty[8]+20; - movex[8]=0; - movey[8]=0; @@ -2374,92 +2362,81 @@ void Game::DrawMenu() endx[9]=startx[9]+strlen(menustring[9])*10; starty[9]=10; endy[9]=starty[9]+20; - movex[9]=0; - movey[9]=0; } + if(mainmenu==5){ - nummenuitems=7+(accountactive?accountactive->getCampaignChoicesMade():0)+campaignchoicenum; + 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; - movex[0]=0; - movey[0]=0; sprintf (menustring[1], "Tutorial"); startx[1]=5; starty[1]=300; endx[1]=startx[1]+strlen(menustring[1])*10; endy[1]=starty[1]+20; - movex[1]=0; - movey[1]=0; sprintf (menustring[2], "Challenge"); startx[2]=5; starty[2]=240; endx[2]=startx[2]+strlen(menustring[2])*10; endy[2]=starty[2]+20; - movex[2]=0; - movey[2]=0; sprintf (menustring[3], "Delete User"); startx[3]=400; starty[3]=10; endx[3]=startx[3]+strlen(menustring[3])*10; endy[3]=starty[3]+20; - movex[3]=0; - movey[3]=0; sprintf (menustring[4], "Main Menu"); startx[4]=5; starty[4]=10; endx[4]=startx[4]+strlen(menustring[4])*10; endy[4]=starty[4]+20; - movex[4]=0; - movey[4]=0; sprintf (menustring[5], "Change User"); startx[5]=5; endx[5]=startx[5]+strlen(menustring[5])*10; starty[5]=180; endy[5]=starty[5]+20; - movex[5]=0; - movey[5]=0; + + 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[6], "World"); - startx[6]=30+120; - starty[6]=30+480-400-50; - endx[6]=startx[6]+400; - endy[6]=30+480-50; - movex[6]=0; - movey[6]=0; + 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[7+i], "%s", campaigndescription[levelorder[i]]); - startx[7+i]=30+120+campaignlocationx[levelorder[i]]*400/512; - starty[7+i]=30+30+(512-campaignlocationy[levelorder[i]])*400/512; - endx[7+i]=startx[7+i]+10; - endy[7+i]=starty[7+i]+10; - movex[7+i]=0; - movey[7+i]=0; + 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) + if(campaignchoicenum>0) { for(i=(accountactive?accountactive->getCampaignChoicesMade():0);i<(accountactive?accountactive->getCampaignChoicesMade():0)+campaignchoicenum;i++){ - sprintf (menustring[7+i], "%s", campaigndescription[levelorder[i]]); - startx[7+i]=30+120+campaignlocationx[campaignchoicewhich[i-((accountactive?accountactive->getCampaignChoicesMade():0))]]*400/512; - starty[7+i]=30+30+(512-campaignlocationy[campaignchoicewhich[i-((accountactive?accountactive->getCampaignChoicesMade():0))]])*400/512; - endx[7+i]=startx[7+i]+10; - endy[7+i]=starty[7+i]+10; - movex[7+i]=0; - movey[7+i]=0; + 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){ @@ -2470,48 +2447,36 @@ void Game::DrawMenu() starty[0]=400; endx[0]=startx[0]+strlen(menustring[0])*10; endy[0]=starty[0]+20; - movex[0]=0; - movey[0]=0; sprintf (menustring[1], "Yes"); startx[1]=10; starty[1]=360; endx[1]=startx[1]+strlen(menustring[1])*10; endy[1]=starty[1]+20; - movex[1]=0; - movey[1]=0; sprintf (menustring[2], "No"); startx[2]=10; starty[2]=320; endx[2]=startx[2]+strlen(menustring[2])*10; endy[2]=starty[2]+20; - movex[2]=0; - movey[2]=0; sprintf (menustring[3], "Extra 4"); startx[3]=10; starty[3]=280; endx[3]=startx[3]+strlen(menustring[3])*10; endy[3]=starty[3]+20; - movex[3]=0; - movey[3]=0; sprintf (menustring[4], "Extra 5"); startx[4]=10; starty[4]=240; endx[4]=startx[4]+strlen(menustring[4])*10; endy[4]=starty[4]+20; - movex[4]=0; - movey[4]=0; sprintf (menustring[5], "Back"); startx[5]=10; endx[5]=startx[5]+strlen(menustring[5])*10; starty[5]=10; endy[5]=starty[5]+20; - movex[5]=0; - movey[5]=0; } if(mainmenu==7){ @@ -2527,8 +2492,6 @@ void Game::DrawMenu() starty[0]=400; endx[0]=startx[0]+strlen(menustring[0])*10; endy[0]=starty[0]+20; - movex[0]=0; - movey[0]=0; if(entername) startx[0]+=10; @@ -2541,8 +2504,6 @@ void Game::DrawMenu() starty[num]=360-20-20*num; endx[num]=startx[num]+strlen(menustring[num])*10; endy[num]=starty[num]+20; - movex[num]=0; - movey[num]=0; num++; } @@ -2552,8 +2513,6 @@ void Game::DrawMenu() endx[num]=startx[num]+strlen(menustring[num])*10; starty[num]=10; endy[num]=starty[num]+20; - movex[num]=0; - movey[num]=0; } if(mainmenu==8){ nummenuitems=3; @@ -2563,27 +2522,20 @@ void Game::DrawMenu() starty[0]=400; endx[0]=startx[0]+strlen(menustring[0])*10; endy[0]=starty[0]+20; - movex[0]=0; - movey[0]=0; sprintf (menustring[1], "Difficult"); startx[1]=10; starty[1]=360; endx[1]=startx[1]+strlen(menustring[1])*10; endy[1]=starty[1]+20; - movex[1]=0; - movey[1]=0; sprintf (menustring[2], "Insane"); startx[2]=10; starty[2]=320; endx[2]=startx[2]+strlen(menustring[2])*10; endy[2]=starty[2]+20; - movex[2]=0; - movey[2]=0; } if(mainmenu==9){ - int tempncl; nummenuitems=2+numchallengelevels; char temp[255]; @@ -2607,8 +2559,6 @@ void Game::DrawMenu() starty[j]=400-j*25; endx[j]=startx[j]+strlen(menustring[j])*10; endy[j]=starty[j]+20; - movex[j]=0; - movey[j]=0; } sprintf (menustring[numchallengelevels], "Back"); @@ -2616,16 +2566,12 @@ void Game::DrawMenu() endx[numchallengelevels]=startx[numchallengelevels]+strlen(menustring[numchallengelevels])*10; starty[numchallengelevels]=10; endy[numchallengelevels]=starty[numchallengelevels]+20; - movex[numchallengelevels]=0; - movey[numchallengelevels]=0; 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; - movex[numchallengelevels+1]=0; - movey[numchallengelevels+1]=0; //numchallengelevels=tempncl; @@ -2639,32 +2585,24 @@ void Game::DrawMenu() starty[0]=330; endx[0]=startx[0]+strlen(menustring[0])*10; endy[0]=starty[0]+20; - movex[0]=0; - movey[0]=0; 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; - movex[1]=0; - movey[1]=0; 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; - movex[2]=0; - movey[2]=0; sprintf (menustring[3], "Back"); startx[3]=10; endx[3]=startx[3]+strlen(menustring[3])*10; starty[3]=10; endy[3]=starty[3]+20; - movex[3]=0; - movey[3]=0; for(i=0;i<255;i++)menustring[4][i]='\0'; sprintf (temp, "Your score:"); @@ -2677,8 +2615,6 @@ void Game::DrawMenu() endx[4]=startx[4]+strlen(menustring[4])*10; starty[4]=200; endy[4]=starty[4]+20; - movex[4]=0; - movey[4]=0; for(i=0;i<255;i++)menustring[5][i]='\0'; sprintf (temp, "Highest score:"); strcpy(menustring[5],temp); @@ -2690,8 +2626,6 @@ void Game::DrawMenu() endx[5]=startx[5]+strlen(menustring[5])*10; starty[5]=180; endy[5]=starty[5]+20; - movex[5]=0; - movey[5]=0; } if (mainmenu==18) { nummenuitems=4; @@ -2700,65 +2634,49 @@ void Game::DrawMenu() starty[0]=400; endx[0]=startx[0]+strlen(menustring[0])*10; endy[0]=starty[0]+20; - movex[0]=0; - movey[0]=0; 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; - movex[1]=0; - movey[1]=0; 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; - movex[2]=0; - movey[2]=0; sprintf (menustring[3], "Back"); startx[3]=10; endx[3]=startx[3]+strlen(menustring[3])*10; starty[3]=10; endy[3]=starty[3]+20; - movex[3]=0; - movey[3]=0; } } if(mainmenu==1||mainmenu==2){ - nummenuitems=7; + nummenuitems=4; startx[0]=150; starty[0]=480-128; endx[0]=150+256; endy[0]=480; - movex[0]=0; - movey[0]=0; startx[1]=18; starty[1]=480-152-32; endx[1]=18+128; endy[1]=480-152; - movex[1]=0; - movey[1]=0; startx[2]=18; starty[2]=480-228-32; endx[2]=2+128; endy[2]=480-228; - movex[2]=0; - movey[2]=0; if(mainmenu==1){ startx[3]=18; starty[3]=480-306-32; endx[3]=22+64; endy[3]=480-306; - movex[3]=0; - movey[3]=0; } if(mainmenu==2){ @@ -2766,144 +2684,18 @@ void Game::DrawMenu() starty[3]=480-306-32; endx[3]=22+128; endy[3]=480-306; - movex[3]=0; - movey[3]=0; } - /*startx[4]=150; - starty[4]=480-256; - endx[4]=150+256; - endy[4]=480; - */ - if(anim==0){ - startx[4]=380; - starty[4]=480-140-256; - endx[4]=380+256; - endy[4]=480-140; - movex[4]=80; - movey[4]=0; - - startx[5]=145; - starty[5]=480-138-256; - endx[5]=145+256; - endy[5]=480-138; - movex[5]=40; - movey[5]=0; - - startx[6]=254; - starty[6]=480-144-256; - endx[6]=254+256; - endy[6]=480-144; - movex[6]=20; - movey[6]=0; - } - if(anim==1){ - startx[4]=180; - starty[4]=480-140-256; - endx[4]=180+256; - endy[4]=480-140; - movex[4]=80; - movey[4]=0; - - startx[5]=500; - starty[5]=480-138-256; - endx[5]=500+256; - endy[5]=480-138; - movex[5]=40; - movey[5]=0; - - startx[6]=340; - starty[6]=480-144-256; - endx[6]=340+256; - endy[6]=480-144; - movex[6]=20; - movey[6]=0; - } - if(anim==2){ - startx[4]=460; - starty[4]=480-140-256; - endx[4]=460+256; - endy[4]=480-140; - movex[4]=50; - movey[4]=0; - - startx[5]=295; - starty[5]=480-150-256; - endx[5]=295+256; - endy[5]=480-138; - movex[5]=-10; - movey[5]=0; - - startx[6]=204; - starty[6]=480-144-256; - endx[6]=204+256; - endy[6]=480-144; - movex[6]=-30; - movey[6]=0; - } - if(anim==3){ - startx[4]=150; - starty[4]=480-140-256; - endx[4]=200+256; - endy[4]=480-140; - movex[4]=80; - movey[4]=0; - - startx[5]=350; - starty[5]=480-150-256; - endx[5]=350+256; - endy[5]=480-138; - movex[5]=5; - movey[5]=0; - - startx[6]=500; - starty[6]=480-144-256; - endx[6]=500+256; - endy[6]=480-144; - movex[6]=-10; - movey[6]=0; - } - if(anim==4){ - startx[4]=190; - starty[4]=480-100-256; - endx[4]=190+256; - endy[4]=480-100; - movex[4]=-30; - movey[4]=0; - - startx[5]=185; - starty[5]=480-120-256; - endx[5]=185+256; - endy[5]=480-120; - movex[5]=-5; - movey[5]=0; - - startx[6]=400; - starty[6]=480-144-256; - endx[6]=400+256; - endy[6]=480-144; - movex[6]=20; - movey[6]=0; - } } selected=-1; - if(mainmenu==1||mainmenu==2) - for(i=1;i<4;i++){ - if((mousecoordh/screenwidth*640)>startx[i]&&(mousecoordh/screenwidth*640)starty[i]&&480-(mousecoordv/screenheight*480)startx[i]&&(mousecoordh/screenwidth*640)starty[i]&&480-(mousecoordv/screenheight*480)startx[i]&&(mousecoordh/screenwidth*640)starty[i]&&480-(mousecoordv/screenheight*480)0) && (i!=NB_CAMPAIGN_MENU_ITEM) ) selected=i; } + } for(i=0;i=4&&(mainmenu==1||mainmenu==2)){ - selectedlong[i]=0; - offsetx[i]=(startx[i]+endx[i]+movex[i]*transition)/2-(640+190)/2; - offsety[i]=(starty[i]+endy[i]+movey[i]*transition)/2-(336+150)/2; - offsetx[i]*=.06f; - offsety[i]*=.06f; - } } if(mainmenu==1||mainmenu==2){ @@ -3018,8 +2803,6 @@ void Game::DrawMenu() glEnable(GL_TEXTURE_2D); for(j=0;j3 && (mainmenu==1||mainmenu==2)) - continue; //glDisable(GL_BLEND); glEnable(GL_ALPHA_TEST); glEnable(GL_BLEND); @@ -3036,18 +2819,18 @@ void Game::DrawMenu() glPushMatrix(); glBegin(GL_QUADS); glTexCoord2f(0,0); - glVertex3f(startx[j]+movex[j]*transition, starty[j]+movey[j]*transition, 0.0f); + glVertex3f(startx[j], starty[j], 0.0f); glTexCoord2f(1,0); - glVertex3f(endx[j]+movex[j]*transition, starty[j]+movey[j]*transition, 0.0f); + glVertex3f(endx[j], starty[j], 0.0f); glTexCoord2f(1,1); - glVertex3f(endx[j]+movex[j]*transition, endy[j]+movey[j]*transition, 0.0f); + glVertex3f(endx[j], endy[j], 0.0f); glTexCoord2f(0,1); - glVertex3f(startx[j]+movex[j]*transition, endy[j]+movey[j]*transition, 0.0f); + glVertex3f(startx[j], endy[j], 0.0f); glEnd(); glPopMatrix(); glEnable(GL_BLEND); //glDisable(GL_ALPHA_TEST); - if(j<4)glBlendFunc(GL_SRC_ALPHA,GL_ONE); + glBlendFunc(GL_SRC_ALPHA,GL_ONE); for(i=0;i<10;i++) { if(1-((float)i)/10-(1-selectedlong[j])>0) @@ -3057,13 +2840,13 @@ void Game::DrawMenu() glPushMatrix(); glBegin(GL_QUADS); glTexCoord2f(0,0); - glVertex3f(startx[j]-((float)i)*1/2+offsetx[j]*((float)i)/2+movex[j]*transition, starty[j]-((float)i)*1/2+offsety[j]*((float)i)/2+movey[j]*transition, 0.0f); + 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); glTexCoord2f(1,0); - glVertex3f(endx[j]+((float)i)*1/2+offsetx[j]*((float)i)/2+movex[j]*transition, starty[j]-((float)i)*1/2+offsety[j]*((float)i)/2+movey[j]*transition, 0.0f); + 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); glTexCoord2f(1,1); - glVertex3f(endx[j]+((float)i)*1/2+offsetx[j]*((float)i)/2+movex[j]*transition, endy[j]+((float)i)*1/2+offsety[j]*((float)i)/2+movey[j]*transition, 0.0f); + 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); glTexCoord2f(0,1); - glVertex3f(startx[j]-((float)i)*1/2+offsetx[j]*((float)i)/2+movex[j]*transition, endy[j]+((float)i)*1/2+offsety[j]*((float)i)/2+movey[j]*transition, 0.0f); + 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); glEnd(); glPopMatrix(); } @@ -3071,7 +2854,7 @@ 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||j<6) + if(mainmenu!=5||jaccountactive->getProgress() && (j6&&jNB_CAMPAIGN_MENU_ITEM&&j=6+(accountactive?accountactive->getCampaignChoicesMade():0)){ + if(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; } @@ -3163,7 +2951,7 @@ void Game::DrawMenu() Normalise(&offset); glDisable(GL_TEXTURE_2D); - if(j<6+(accountactive?accountactive->getCampaignChoicesMade():0)){ + if(jgetCampaignChoicesMade():0)){ glColor4f(0.5,0,0,1); endsize=.5; } else { @@ -3175,7 +2963,7 @@ void Game::DrawMenu() linestart+=fac*4*startsize; lineend-=fac*4*endsize; - if(!(j>7+(accountactive?accountactive->getCampaignChoicesMade():0)+campaignchoicenum)){ + if(!(j>NB_CAMPAIGN_MENU_ITEM+1+(accountactive?accountactive->getCampaignChoicesMade():0)+campaignchoicenum)){ glMatrixMode(GL_MODELVIEW); // Select The Modelview Matrix glPushMatrix(); glBegin(GL_QUADS); @@ -3194,38 +2982,41 @@ void Game::DrawMenu() } - if(j==6)glBindTexture( GL_TEXTURE_2D, Mainmenuitems[7]); + 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-7<(accountactive?accountactive->getCampaignChoicesMade():0))glColor4f(0.5,0,0,1); - if(j-7>=(accountactive?accountactive->getCampaignChoicesMade():0))glColor4f(1,0,0,1); - if(j==6)glColor4f(1,1,1,1); + 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>6&&(j-7<(accountactive?accountactive->getCampaignChoicesMade():0)))itemsize*=.5; - if(!(j-7>(accountactive?accountactive->getCampaignChoicesMade():0)+campaignchoicenum)) + 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)) { glMatrixMode(GL_MODELVIEW); // Select The Modelview Matrix glPushMatrix(); glBegin(GL_QUADS); glTexCoord2f(0,0); - glVertex3f(midpoint.x-itemsize+movex[j]*transition, midpoint.y-itemsize+movey[j]*transition, 0.0f); + glVertex3f(midpoint.x-itemsize, midpoint.y-itemsize, 0.0f); glTexCoord2f(1,0); - glVertex3f(midpoint.x+itemsize+movex[j]*transition, midpoint.y-itemsize+movey[j]*transition, 0.0f); + glVertex3f(midpoint.x+itemsize, midpoint.y-itemsize, 0.0f); glTexCoord2f(1,1); - glVertex3f(midpoint.x+itemsize+movex[j]*transition, midpoint.y+itemsize+movey[j]*transition, 0.0f); + glVertex3f(midpoint.x+itemsize, midpoint.y+itemsize, 0.0f); glTexCoord2f(0,1); - glVertex3f(midpoint.x-itemsize+movex[j]*transition, midpoint.y+itemsize+movey[j]*transition, 0.0f); + glVertex3f(midpoint.x-itemsize, midpoint.y+itemsize, 0.0f); glEnd(); glPopMatrix(); glEnable(GL_BLEND); //glDisable(GL_ALPHA_TEST); - if(j<4)glBlendFunc(GL_SRC_ALPHA,GL_ONE); + 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) @@ -3235,13 +3026,13 @@ void Game::DrawMenu() glPushMatrix(); glBegin(GL_QUADS); glTexCoord2f(0,0); - glVertex3f(midpoint.x-itemsize-((float)i)*1/2+offsetx[j]*((float)i)/2+movex[j]*transition, midpoint.y-itemsize-((float)i)*1/2+offsety[j]*((float)i)/2+movey[j]*transition, 0.0f); + 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+movex[j]*transition, midpoint.y-itemsize-((float)i)*1/2+offsety[j]*((float)i)/2+movey[j]*transition, 0.0f); + 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+movex[j]*transition, midpoint.y+itemsize+((float)i)*1/2+offsety[j]*((float)i)/2+movey[j]*transition, 0.0f); + 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+movex[j]*transition, midpoint.y+itemsize+((float)i)*1/2+offsety[j]*((float)i)/2+movey[j]*transition, 0.0f); + 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(); } @@ -3253,7 +3044,7 @@ void Game::DrawMenu() glPopMatrix(); glMatrixMode(GL_MODELVIEW); // Select The Modelview Matrix - if(j-7>=(accountactive?accountactive->getCampaignChoicesMade():0)){ + 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); } @@ -3265,8 +3056,8 @@ void Game::DrawMenu() glMatrixMode(GL_MODELVIEW); // Select The Modelview Matrix glPopMatrix(); - if(mainmenu==1||mainmenu==2) - if(transition<.1||transition>.9){ + if(mainmenu==1||mainmenu==2) { + //if(transition<.1||transition>.9) { glClear(GL_DEPTH_BUFFER_BIT); glEnable(GL_ALPHA_TEST); glAlphaFunc(GL_GREATER, 0.001f); @@ -3284,15 +3075,17 @@ void Game::DrawMenu() 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)); + //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