vector<Account*> Account::accounts = vector<Account*>();
-Account::Account(string n) {
+Account::Account(string n) : campaignProgress() {
name = string(n);
difficulty = 0;
progress = 0;
memset(fasttime, 0, sizeof(fasttime));
memset(unlocked, 0, sizeof(unlocked));
- currentCampaign = "main";
+ setCurrentCampaign("main");
+}
+
+void Account::setCurrentCampaign(string name) {
+ currentCampaign = name;
+ campaignProgress[name].highscore = 0;
+ campaignProgress[name].fasttime = 0;
+ campaignProgress[name].score = 0;
+ campaignProgress[name].time = 0;
}
Account* Account::add(string name) {
FILE *tfile;
int numaccounts;
int accountactive;
- int j;
tfile=fopen(ConvertFileName(filename.c_str()), "rb" );
int t;
char c;
funpackf(tfile, "Bi", &t);
- for(j=0;j<t;j++)
+ for(int j=0;j<t;j++)
{
funpackf(tfile, "Bb", &c);
campaignName.append(1,c);
funpackf(tfile, "Bf", &(acc->campaignProgress[campaignName].highscore));
int campaignchoicesmade,campaignchoice;
funpackf(tfile, "Bi", &campaignchoicesmade);
- for(j=0;j<campaignchoicesmade;j++)
+ for(int j=0;j<campaignchoicesmade;j++)
{
funpackf(tfile, "Bi", &campaignchoice);
if (campaignchoice >= 10) // what is that for?
}
funpackf(tfile, "Bf", &(acc->points));
- for(j=0;j<50;j++)
+ for(int i=0;i<50;i++)
{
- funpackf(tfile, "Bf", &(acc->highscore[j]));
- funpackf(tfile, "Bf", &(acc->fasttime[j]));
+ funpackf(tfile, "Bf", &(acc->highscore[i]));
+ funpackf(tfile, "Bf", &(acc->fasttime[i]));
}
- for(j=0;j<60;j++)
+ for(int i=0;i<60;i++)
{
- funpackf(tfile, "Bb", &(acc->unlocked[j]));
+ funpackf(tfile, "Bb", &(acc->unlocked[i]));
}
int temp;
char ctemp;
funpackf(tfile, "Bi", &temp);
- for(j=0;j<temp;j++)
+ for(int i=0;i<temp;i++)
{
funpackf(tfile, "Bb", &ctemp);
acc->name.append(1,ctemp);
float getHighScore(int i) { return highscore[i]; };
float getFastTime(int i) { return fasttime[i]; };
int getProgress() { return progress; };
+ void setCurrentCampaign(std::string name);
static int getNbAccounts() { return accounts.size(); };
private:
static float projmatrix[16];
static float mvmatrix[16];
static float clip[16];
- static float t;
glGetFloatv(GL_PROJECTION_MATRIX, projmatrix);
glGetFloatv(GL_MODELVIEW_MATRIX, mvmatrix);
scoreadded = 0;
numchallengelevels = 0;
- console = 0;
+ console = false;
archiveselected = 0;
memset(consoletext, 0, sizeof(consoletext));
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]){
+ 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!=6) ) selected=i;
}
}
if(console){
emit_sound_np(consolesuccesssound);
freeze=0;
- console=0;
+ console=false;
}
if(!stealthloading){
displaytime[i]+=multiplier;
}
- keyboardfrozen=0;
+ keyboardfrozen=false;
Input::Tick();
if(Input::isKeyPressed(SDLK_F6)){
if(mainmenu&&endgame==1)
mainmenu=10;
//go to level select after completing a campaign level
- if(campaign&&winfreeze&&mainmenu==0&&campaignchoosenext[campaignchoicewhich[whichchoice]]==1){
+ if(campaign&&winfreeze&&mainmenu==0&&campaignchoosenext[campaignchoicewhich[whichchoice]]==1) {
mainmenu=5;
gameon=0;
winfreeze=0;
emit_stream_np(stream_menutheme);
pause_sound(leveltheme);
}
+ LoadCampaign();
}
//escape key pressed
//TODO: there must be code somewhere else that handles clicking the Back button, merge it with this
if(Input::isKeyPressed(SDLK_ESCAPE)&&
- (gameon||mainmenu==0||(mainmenu>=3&&mainmenu!=8&&!(mainmenu==7&&entername)))){
+ (gameon||mainmenu==0||(mainmenu>=3&&mainmenu!=8&&!(mainmenu==7&&entername)))) {
selected=-1;
if(mainmenu==0&&!winfreeze)
mainmenu=2; //pause
}
}
if(chatting)
- keyboardfrozen=1;
+ keyboardfrozen=true;
if(Input::isKeyPressed(SDLK_BACKQUOTE)&&debugmode){
- console=1-console;
+ console=!console;
if(console){
OPENAL_SetFrequency(OPENAL_ALL, 0.001);
} else {
winfreeze=0;
if((Input::isKeyDown(SDLK_ESCAPE))&&!campaign&&gameon){
if(console){
- console=0;
+ console=false;
freeze=0;
- }else if(winfreeze){
+ } else if(winfreeze) {
mainmenu=9;
gameon=0;
}
killhotspot=0;
}
- if(!editorenabled&&gameon&&!mainmenu){
+ if(!editorenabled&&gameon&&!mainmenu) {
if(changedelay!=-999)
changedelay-=multiplier/7;
if(player[0].dead)
(player[0].dead||
(alldead&&maptype==mapkilleveryone)||
(winhotspot)||
- (killhotspot))&&
- !winfreeze)
+ (killhotspot)))
loading=1;
if((player[0].dead||
(alldead&&maptype==mapkilleveryone)||
(winhotspot)||
(windialogue)||
(killhotspot))&&
- changedelay<=0){
- if(whichlevel!=-2&&!loading&&!player[0].dead){
- winfreeze=1;
+ changedelay<=0) {
+ if(whichlevel!=-2&&!loading&&!player[0].dead) {
+ winfreeze=true;
changedelay=-999;
}
if(player[0].dead)
}
}
- if(campaign){
+ if(campaign) {
// campaignchoosenext determines what to do when the level is complete:
// 0 = load next level
// 1 = go back to level select screen
if(mainmenu==0&&winfreeze&&(campaignchoosenext[campaignchoicewhich[whichchoice]])==1){
if(campaignnumnext[campaignchoicewhich[whichchoice]]==0)
endgame=1;
- }else if(mainmenu==0&&winfreeze){
- if(campaignchoosenext[campaignchoicewhich[whichchoice]]==2)
- stealthloading=1;
- else
- stealthloading=0;
+ } else if(mainmenu==0&&winfreeze) {
+ stealthloading = (campaignchoosenext[campaignchoicewhich[whichchoice]]==2);
if(!stealthloading){
fireSound(firestartsound);
}
bool Input::isKeyDown(int k) {
- if(keyboardfrozen||k>=SDLK_LAST+6) // vraiment utile? à vérifier
+ if(keyboardfrozen||k>=SDLK_LAST+6) // really useful? check that.
return false;
return keyDown[k];
}
inline Vector MakeEulerAnglesFromQ(Quaternion q)
{
- double r11, r21, r31, r32, r33, r12, r13;
+ double r11, r21, r31, r32, r33;
double q00, q11, q22, q33;
double tmp;
Vector u;
tmp = fabs(r31);
if(tmp > 0.999999)
{
- r12 = 2 * (q.v.x*q.v.y - q.n*q.v.z);
- r13 = 2 * (q.v.x*q.v.z + q.n*q.v.y);
+ double r12 = 2 * (q.v.x*q.v.y - q.n*q.v.z);
+ double r13 = 2 * (q.v.x*q.v.z + q.n*q.v.y);
u.x = RadiansToDegrees(0.0f); //roll
u.y = RadiansToDegrees((float) (-(pi/2) * r31/tmp)); // pitch