#include "Input.h"
#include "Awards.h"
+#include <dirent.h>
+
using namespace std;
extern XYZ viewer;
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;
float maxdistance=0;
float tempdist;
- int whichclosest;
+ //~ int whichclosest;
for(i=0;i<objects.numobjects;i++){
tempdist=findDistancefast(¢er,&objects.position[i]);
if(tempdist>maxdistance){
- whichclosest=i;
+ //~ whichclosest=i;
maxdistance=tempdist;
}
}
if(!player[i].dead){
tempdist=findDistancefast(¢er,&player[i].coords);
if(tempdist>maxdistance){
- whichclosest=i;
+ //~ whichclosest=i;
maxdistance=tempdist;
}
}
return 0;
}
+vector<string> 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<string> 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() {
- ifstream ipstream(ConvertFileName(":Data:Campaigns:main.txt"));
+ if(!accountactive)
+ return;
+ ifstream ipstream(ConvertFileName((":Data:Campaigns:"+accountactive->getCurrentCampaign()+".txt").c_str()));
ipstream.ignore(256,':');
ipstream >> campaignnumlevels;
- for(int i=0;i<campaignnumlevels;i++){
+ for(int i=0;i<campaignnumlevels;i++) {
ipstream.ignore(256,':');
ipstream.ignore(256,':');
ipstream.ignore(256,' ');
levelorder[i+1]=campaignnextlevel[levelorder[i]][accountactive->getCampaignChoice(i)];
levelvisible[levelorder[i+1]]=1;
}
- int whichlevelstart = (accountactive?accountactive->getCampaignChoicesMade():0)-1;
+ int whichlevelstart = accountactive->getCampaignChoicesMade()-1;
if(whichlevelstart<0){
- if(accountactive) {
- accountactive->setCampaignScore(0);
- accountactive->resetFasttime();
- }
+ accountactive->setCampaignScore(0);
+ accountactive->resetFasttime();
campaignchoicenum=1;
campaignchoicewhich[0]=0;
}
oldmainmenu=mainmenu;
- if(mainmenu==3||mainmenu==4||mainmenu==5||mainmenu==6||mainmenu==7||mainmenu==8||mainmenu==9||mainmenu==10||mainmenu==119||mainmenu==18){
+ 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);
glPopMatrix();
glMatrixMode(GL_MODELVIEW); // Select The Modelview Matrix
- if(mainmenu==3){
+ 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);
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");
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");
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");
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)");
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");
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");
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");
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)");
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){
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: _");
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: _");
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: _");
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: _");
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: _");
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: _");
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: _");
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: _");
starty[8]=80;
endx[8]=startx[8]+strlen(menustring[8])*10;
endy[8]=starty[8]+20;
- movex[8]=0;
- movey[8]=0;
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){
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){
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;
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++;
}
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;
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];
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");
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;
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:");
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);
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;
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){
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)<endx[i]&&480-(mousecoordv/screenheight*480)>starty[i]&&480-(mousecoordv/screenheight*480)<endy[i]){
- selected=i;
- }
- }
-
- if(mainmenu==3||mainmenu==4||mainmenu==5||mainmenu==6||mainmenu==7||mainmenu==8||mainmenu==9||mainmenu==10||mainmenu==18)
- for(i=0;i<nummenuitems;i++){
- if((mousecoordh/screenwidth*640)>startx[i]&&(mousecoordh/screenwidth*640)<endx[i]&&480-(mousecoordv/screenheight*480)>starty[i]&&480-(mousecoordv/screenheight*480)<endy[i]){
- if(mainmenu!=5)selected=i;
- if(mainmenu==5&&(i!=0&&i!=6))selected=i;
- if(mainmenu==9&&(i!=numchallengelevels+1))selected=i; // seem useless, if mainmenu==9 then mainmenu!=5, so selected==i.
- }
+ for(i=0;i<nummenuitems;i++) {
+ if((mousecoordh/screenwidth*640)>startx[i]&&(mousecoordh/screenwidth*640)<endx[i]&&480-(mousecoordv/screenheight*480)>starty[i]&&480-(mousecoordv/screenheight*480)<endy[i]) {
+ if(mainmenu!=5) selected=i;
+ else if( (i>0) && (i!=NB_CAMPAIGN_MENU_ITEM) ) selected=i;
}
+ }
for(i=0;i<nummenuitems;i++){
if(selected==i) {
offsety[i]*=.06f;
offsetx[i]=0;
offsety[i]=0;
- if(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){
glEnable(GL_TEXTURE_2D);
for(j=0;j<nummenuitems;j++)
{
- if(j>3 && (mainmenu==1||mainmenu==2))
- continue;
//glDisable(GL_BLEND);
glEnable(GL_ALPHA_TEST);
glEnable(GL_BLEND);
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)
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();
}
}
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||j<NB_CAMPAIGN_MENU_ITEM)
{
glColor4f(1,0,0,1);
if( (mainmenu==9) && j>accountactive->getProgress() && (j<numchallengelevels) )
}
else
{
+ if(j==NB_CAMPAIGN_MENU_ITEM) {
+ //glBlendFunc(GL_SRC_ALPHA,GL_ONE_MINUS_SRC_ALPHA); // black background for the map
+ glBlendFunc(GL_SRC_ALPHA,GL_ONE); // no background
+ }
+
glClear(GL_DEPTH_BUFFER_BIT);
glEnable(GL_ALPHA_TEST);
glAlphaFunc(GL_GREATER, 0.001f);
glDisable(GL_DEPTH_TEST); // Disables Depth Testing
glDisable(GL_CULL_FACE);
glDisable(GL_LIGHTING);
- if(j==6)glColor4f(1,1,1,1);
+ if(j==NB_CAMPAIGN_MENU_ITEM) glColor4f(1,1,1,1);
else glColor4f(1,0,0,1);
glMatrixMode(GL_PROJECTION); // Select The Projection Matrix
//Draw world, draw map
glTranslatef(2,-5,0);
- if(j>6&&j<nummenuitems-1)
+ if(j>NB_CAMPAIGN_MENU_ITEM&&j<nummenuitems-1)
{
XYZ linestart,lineend,offset;
XYZ fac;
//float linestartx,lineendx,linestarty,lineendy,offsetx,offsety;
linestart.x=(startx[j]+endx[j])/2;
linestart.y=(starty[j]+endy[j])/2;
- if(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;
}
Normalise(&offset);
glDisable(GL_TEXTURE_2D);
- if(j<6+(accountactive?accountactive->getCampaignChoicesMade():0)){
+ if(j<NB_CAMPAIGN_MENU_ITEM+(accountactive?accountactive->getCampaignChoicesMade():0)){
glColor4f(0.5,0,0,1);
endsize=.5;
} else {
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);
}
- 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)
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();
}
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);
}
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);
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