set(LUGARU_SRCS
${SRCDIR}/Frustum.cpp
+ ${SRCDIR}/Account.cpp
${SRCDIR}/GameDraw.cpp
${SRCDIR}/GameInitDispose.cpp
${SRCDIR}/GameTick.cpp
set(LUGARU_H
${SRCDIR}/Constants.h
${SRCDIR}/Frustum.h
+ ${SRCDIR}/Account.h
${SRCDIR}/Game.h
${SRCDIR}/Lights.h
${SRCDIR}/LinkedList.h
--- /dev/null
+/*
+Copyright (C) 2003, 2010 - Wolfire Games
+Copyright (C) 2010 - MCMic
+
+This file is part of Lugaru.
+
+Lugaru is free software; you can redistribute it and/or
+modify it under the terms of the GNU General Public License
+as published by the Free Software Foundation; either version 2
+of the License, or (at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+
+See the GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+*/
+
+#include "Account.h"
+#include "binio.h"
+#include <fstream>
+#include "MacCompatibility.h"
+#include "string.h"
+
+using namespace std;
+
+extern bool debugmode;
+
+vector<Account*> Account::accounts = vector<Account*>();
+
+Account::Account(string n) {
+ name = string(n);
+ difficulty = 0;
+ progress = 0;
+ points = 0;
+ memset(highscore, 0, sizeof(highscore));
+ memset(fasttime, 0, sizeof(fasttime));
+ memset(unlocked, 0, sizeof(unlocked));
+ campaignhighscore = 0;
+ campaignfasttime = 0;
+ campaignscore = 0;
+ campaigntime = 0;
+ campaignchoicesmade = 0;
+ memset(campaignchoices, 0, sizeof(campaignchoices));
+}
+
+Account* Account::add(string name) {
+ accounts.push_back(new Account(name));
+ return accounts.back();
+}
+
+Account* Account::get(int i) {
+ if(i<accounts.size()) {
+ return accounts[i];
+ } else
+ return NULL;
+}
+
+void Account::destroy(int i) {
+ accounts.erase(accounts.begin()+i);
+}
+Account* Account::destroy(Account* a) {
+ for(int i=0; i<accounts.size(); i++) {
+ if(accounts[i]==a) {
+ accounts.erase(accounts.begin()+i);
+ return NULL;
+ }
+ }
+ printf("Unexpected error : User %s not found %d\n",a->getName(),a);
+ return accounts.front();
+}
+
+int Account::getDifficulty() {
+ return difficulty;
+}
+
+void Account::endGame() {
+ campaignchoicesmade=0;
+ campaignscore=0;
+ campaigntime=0;
+}
+
+void Account::winCampaignLevel(int choice, float score, float time) {
+ campaignchoices[campaignchoicesmade++] = choice;
+ setCampaignScore(campaignscore+score);
+ campaigntime = time;
+}
+
+void Account::winLevel(int level, float score, float time) {
+ if(!debugmode) {
+ if(score>highscore[level])
+ highscore[level]=score;
+ if(time<fasttime[level]||fasttime[level]==0)
+ fasttime[level]=time;
+ }
+ if(progress<level+1)
+ progress=level+1;
+}
+
+Account* Account::loadFile(string filename) {
+ FILE *tfile;
+ int numaccounts;
+ int accountactive;
+ int j;
+
+ tfile=fopen(ConvertFileName(filename.c_str()), "rb" );
+
+ if(tfile)
+ {
+ funpackf(tfile, "Bi", &numaccounts);
+ funpackf(tfile, "Bi", &accountactive);
+ printf("number of accounts %d\n",numaccounts);
+ for(int i=0;i<numaccounts;i++)
+ {
+ printf("loading account %d/%d\n",i,numaccounts);
+ Account* acc = new Account();
+ funpackf(tfile, "Bf", &(acc->campaigntime));
+ funpackf(tfile, "Bf", &(acc->campaignscore));
+ funpackf(tfile, "Bf", &(acc->campaignfasttime));
+ funpackf(tfile, "Bf", &(acc->campaignhighscore));
+ funpackf(tfile, "Bi", &(acc->difficulty));
+ funpackf(tfile, "Bi", &(acc->progress));
+ funpackf(tfile, "Bi", &(acc->campaignchoicesmade));
+ for(j=0;j<acc->campaignchoicesmade;j++)
+ {
+ funpackf(tfile, "Bi", &(acc->campaignchoices[j]));
+ if (acc->campaignchoices[j] >= 10)
+ {
+ acc->campaignchoices[j] = 0;
+ }
+ }
+ funpackf(tfile, "Bf", &(acc->points));
+ for(j=0;j<50;j++)
+ {
+ funpackf(tfile, "Bf", &(acc->highscore[j]));
+ funpackf(tfile, "Bf", &(acc->fasttime[j]));
+ }
+ for(j=0;j<60;j++)
+ {
+ funpackf(tfile, "Bb", &(acc->unlocked[j]));
+ }
+ int temp;
+ char ctemp;
+ funpackf(tfile, "Bi", &temp);
+ for(j=0;j<temp;j++)
+ {
+ funpackf(tfile, "Bb", &ctemp);
+ acc->name.append(1,ctemp);
+ }
+ if(!strcmp(acc->name.c_str(),""))
+ acc->name="Lugaru Player"; // no empty player name security.
+ accounts.push_back(acc);
+ }
+
+ fclose(tfile);
+ return get(accountactive);
+ } else {
+ printf("filenotfound\n");
+ return NULL;
+ }
+}
+
+void Account::saveFile(string filename, Account* accountactive) {
+ FILE *tfile;
+ int numaccounts;
+ int j;
+
+ tfile=fopen(ConvertFileName(filename.c_str()), "wb" );
+ if(tfile)
+ {
+ printf("writing %d accounts :\n",getNbAccounts());
+ fpackf(tfile, "Bi", getNbAccounts());
+ fpackf(tfile, "Bi", indice(accountactive));
+
+ for(int i=0;i<getNbAccounts();i++)
+ {
+ Account* a = Account::get(i);
+ printf("writing account %d/%d (%s)\n",i+1,getNbAccounts(),a->getName());
+ fpackf(tfile, "Bf", a->campaigntime);
+ fpackf(tfile, "Bf", a->campaignscore);
+ fpackf(tfile, "Bf", a->campaignfasttime);
+ fpackf(tfile, "Bf", a->campaignhighscore);
+ fpackf(tfile, "Bi", a->difficulty);
+ fpackf(tfile, "Bi", a->progress);
+ fpackf(tfile, "Bi", a->campaignchoicesmade);
+ for(j=0;j<a->campaignchoicesmade;j++)
+ {
+ fpackf(tfile, "Bi", a->campaignchoices[j]);
+ }
+ fpackf(tfile, "Bf", a->points);
+ for(j=0;j<50;j++)
+ {
+ fpackf(tfile, "Bf", a->highscore[j]);
+ fpackf(tfile, "Bf", a->fasttime[j]);
+ }
+ for(j=0;j<60;j++)
+ {
+ fpackf(tfile, "Bb", a->unlocked[j]);
+ }
+ fpackf(tfile, "Bi", a->name.size());
+ for(j=0;j<a->name.size();j++)
+ {
+ fpackf(tfile, "Bb", a->name[j]);
+ }
+ }
+
+ fclose(tfile);
+ }
+}
+
+int Account::indice(Account* a) {
+ for(int i=0; i < accounts.size(); i++) {
+ if(accounts[i]==a)
+ return i;
+ }
+ return -1;
+}
--- /dev/null
+/*
+Copyright (C) 2003, 2010 - Wolfire Games
+Copyright (C) 2010 - MCMic
+
+This file is part of Lugaru.
+
+Lugaru is free software; you can redistribute it and/or
+modify it under the terms of the GNU General Public License
+as published by the Free Software Foundation; either version 2
+of the License, or (at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+
+See the GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program; if not, write to the Free Software
+Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+*/
+
+#ifndef _Account_H_
+#define _Account_H_
+
+#include <vector>
+#include <string>
+#include <fstream>
+
+
+class Account {
+ public:
+ static void destroy(int i);
+ static Account* destroy(Account* a);
+ static Account* add(std::string name);
+ static Account* get(int i);
+ static Account* loadFile(std::string filename);
+ static void saveFile(std::string filename, Account* accountactive);
+ static int indice(Account* a);
+
+ void endGame();
+ void winCampaignLevel(int choice, float score, float time);
+ void winLevel(int level, float score, float time);
+
+ // getter and setters
+ int getDifficulty();
+ void setDifficulty(int i) { difficulty = i; };
+ const char* getName() { return name.c_str(); };
+ float getCampaignScore() { return campaignscore; };
+ int getCampaignChoicesMade() { return campaignchoicesmade; };
+ int getCampaignChoice(int i) { return campaignchoices[i]; };
+ void setCampaignScore(int s) {
+ campaignscore=s;
+ if(s>campaignhighscore)
+ campaignhighscore=s;
+ };
+ void setCampaignFinalTime(float t) {
+ campaigntime = t;
+ if((t<campaignfasttime) || (campaignfasttime==0) && (t!=0))
+ campaignfasttime = t;
+ };
+ float getCampaignFasttime() { return campaignfasttime; };
+ void resetFasttime() { campaignfasttime = 0; };
+ float getCampaignHighScore() { return campaignhighscore; };
+ float getHighScore(int i) { return highscore[i]; };
+ float getFastTime(int i) { return fasttime[i]; };
+ int getProgress() { return progress; };
+
+ static int getNbAccounts() { return accounts.size(); };
+ private:
+ Account(std::string n="");
+ int difficulty;
+ int progress;
+ float points;
+ float highscore[50];
+ float fasttime[50];
+ bool unlocked[60];
+ std::string name;
+ float campaignhighscore;
+ float campaignfasttime;
+ float campaignscore;
+ float campaigntime;
+ int campaignchoicesmade;
+ int campaignchoices[5000]; // should really disappear. I'd use a vector or something like that.
+
+ //statics
+ static std::vector<Account*> accounts;
+};
+
+#endif
extern int hotspottype[40];
extern float hotspotsize[40];
extern char hotspottext[40][256];
-extern int currenthotspot;
-
-extern int numaccounts;
-extern int accountactive;
-extern int accountdifficulty[10];
-extern int accountprogress[10];
-extern float accountpoints[10];
-extern float accounthighscore[10][50];
-extern float accountfasttime[10][50];
-extern bool accountunlocked[10][60];
-extern char accountname[10][256];
+extern int currenthotspot;;
extern int numfalls;
extern int numflipfail;
extern float dialoguetime;
extern int dialoguegonethrough[20];
-extern int accountcampaignchoicesmade[10];
-extern int accountcampaignchoices[10][5000];
-
-extern float accountcampaignhighscore[10];
-extern float accountcampaignfasttime[10];
-extern float accountcampaignscore[10];
-extern float accountcampaigntime[10];
-
extern bool gamestarted;
extern bool showdamagebar;
if(!tutoriallevel&&!winfreeze&&indialogue==-1&&!mainmenu){
if(campaign){
- if(!scoreadded)sprintf (string, "Score: %d", (int)accountcampaignscore[accountactive]+(int)bonustotal);//(int)bonustotal);
- if(scoreadded)sprintf (string, "Score: %d", (int)accountcampaignscore[accountactive]);//(int)bonustotal);
+ if(!scoreadded)sprintf (string, "Score: %d", (int)accountactive->getCampaignScore()+(int)bonustotal);//(int)bonustotal);
+ if(scoreadded)sprintf (string, "Score: %d", (int)accountactive->getCampaignScore());//(int)bonustotal);
}
if(!campaign)sprintf (string, "Score: %d", (int)bonustotal);
glColor4f(0,0,0,1);
if(mainmenu==5){
ifstream ipstream(ConvertFileName(":Data:Campaigns:main.txt"));
//campaignnumlevels=0;
- //accountcampaignchoicesmade[accountactive]=0;
+ //accountactive->getCampaignChoicesMade()=0;
ipstream.ignore(256,':');
ipstream >> campaignnumlevels;
for(i=0;i<campaignnumlevels;i++){
levelorder[0]=0;
levelvisible[0]=1;
- if(accountcampaignchoicesmade[accountactive])
- for(i=0;i<accountcampaignchoicesmade[accountactive];i++){
- levelorder[i+1]=campaignnextlevel[levelorder[i]][accountcampaignchoices[accountactive][i]];
+ if(accountactive->getCampaignChoicesMade())
+ for(i=0;i<accountactive->getCampaignChoicesMade();i++){
+ levelorder[i+1]=campaignnextlevel[levelorder[i]][accountactive->getCampaignChoice(i)];
levelvisible[levelorder[i+1]]=1;
}
int whichlevelstart;
- whichlevelstart=accountcampaignchoicesmade[accountactive]-1;
+ whichlevelstart=accountactive->getCampaignChoicesMade()-1;
if(whichlevelstart<0){
- accountcampaignscore[accountactive]=0;
- accountcampaignfasttime[accountactive]=0;
+ accountactive->setCampaignScore(0);
+ accountactive->resetFasttime();
campaignchoicenum=1;
campaignchoicewhich[0]=0;
}
{
campaignchoicenum=campaignnumnext[levelorder[whichlevelstart]];
if(campaignchoicenum==0){
- if(accountcampaignscore[accountactive]>accountcampaignhighscore[accountactive])accountcampaignhighscore[accountactive]=accountcampaignscore[accountactive];
- if(accountcampaignfasttime[accountactive]==0||accountcampaigntime[accountactive]<accountcampaignfasttime[accountactive])accountcampaignfasttime[accountactive]=accountcampaigntime[accountactive];
+ //if(accountactive->getCampaignFasttime()==0||accountcampaigntime[accountactive]<accountactive->getCampaignFasttime())accountactive->getCampaignFasttime()=accountcampaigntime[accountactive];
}
if(campaignchoicenum)
for(i=0;i<campaignchoicenum;i++){
movey[9]=0;
}
if(mainmenu==5){
- nummenuitems=7+accountcampaignchoicesmade[accountactive]+campaignchoicenum;
+ nummenuitems=7+accountactive->getCampaignChoicesMade()+campaignchoicenum;
- sprintf (menustring[0], "%s",accountname[accountactive]);
+ sprintf (menustring[0], "%s",accountactive->getName());
startx[0]=5;
starty[0]=400;
endx[0]=startx[0]+strlen(menustring[0])*10;
movex[6]=0;
movey[6]=0;
- if(accountcampaignchoicesmade[accountactive])
- for(i=0;i<accountcampaignchoicesmade[accountactive];i++){
+ if(accountactive->getCampaignChoicesMade())
+ for(i=0;i<accountactive->getCampaignChoicesMade();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;
}
if(campaignchoicenum>0)
- for(i=accountcampaignchoicesmade[accountactive];i<accountcampaignchoicesmade[accountactive]+campaignchoicenum;i++){
+ for(i=accountactive->getCampaignChoicesMade();i<accountactive->getCampaignChoicesMade()+campaignchoicenum;i++){
sprintf (menustring[7+i], "%s", campaigndescription[levelorder[i]]);
- startx[7+i]=30+120+campaignlocationx[campaignchoicewhich[i-(accountcampaignchoicesmade[accountactive])]]*400/512;
- starty[7+i]=30+30+(512-campaignlocationy[campaignchoicewhich[i-(accountcampaignchoicesmade[accountactive])]])*400/512;
+ startx[7+i]=30+120+campaignlocationx[campaignchoicewhich[i-(accountactive->getCampaignChoicesMade())]]*400/512;
+ starty[7+i]=30+30+(512-campaignlocationy[campaignchoicewhich[i-(accountactive->getCampaignChoicesMade())]])*400/512;
endx[7+i]=startx[7+i]+10;
endy[7+i]=starty[7+i]+10;
movex[7+i]=0;
movey[5]=0;
}
- if(mainmenu==7){
- nummenuitems=numaccounts+2;
+ if(mainmenu==7){
+ nummenuitems=Account::getNbAccounts()+2;
int num;
- if(numaccounts<8)
+ if(Account::getNbAccounts()<8)
sprintf (menustring[0], "New User");
else
sprintf (menustring[0], "No More Users");
num=1;
- if(numaccounts)
- for(i=0;i<numaccounts;i++){
- sprintf (menustring[num], "%s",accountname[i]);
- startx[num]=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++;
- }
-
- sprintf (menustring[num], "Back");
+ for(i=0;i<Account::getNbAccounts();i++){
+ sprintf (menustring[num], "%s",Account::get(i)->getName());
startx[num]=10;
+ starty[num]=360-20-20*num;
endx[num]=startx[num]+strlen(menustring[num])*10;
- starty[num]=10;
endy[num]=starty[num]+20;
movex[num]=0;
movey[num]=0;
+
+ num++;
+ }
+
+ sprintf (menustring[num], "Back");
+ startx[num]=10;
+ 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;
strcpy(menustring[j],temp);
for(i=0;i<17;i++)if(menustring[j][i]=='\0')menustring[j][i]=' ';
menustring[j][17]='\0';
- sprintf (temp, "%d",(int)accounthighscore[accountactive][j]);
+ sprintf (temp, "%d",(int)accountactive->getHighScore(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)accountfasttime[accountactive][j]-(int)(accountfasttime[accountactive][j])%60)/60));
+ sprintf (temp, "%d:",(int)(((int)accountactive->getFastTime(j)-(int)(accountactive->getFastTime(j))%60)/60));
strcat(menustring[j],temp);
- if((int)(accountfasttime[accountactive][j])%60<10)strcat(menustring[j],"0");
- sprintf (temp, "%d",(int)(accountfasttime[accountactive][j])%60);
+ 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;
strcpy(menustring[j],temp);
for(i=0;i<17;i++)if(menustring[j][i]=='\0')menustring[j][i]=' ';
menustring[j][17]='\0';
- sprintf (temp, "%d",(int)accounthighscore[accountactive][j]);
+ sprintf (temp, "%d",(int)accountactive->getHighScore(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)accountfasttime[accountactive][j]-(int)(accountfasttime[accountactive][j])%60)/60));
+ sprintf (temp, "%d:",(int)(((int)accountactive->getFastTime(j)-(int)(accountactive->getFastTime(j))%60)/60));
strcat(menustring[j],temp);
- if((int)(accountfasttime[accountactive][j])%60<10)strcat(menustring[j],"0");
- sprintf (temp, "%d",(int)(accountfasttime[accountactive][j])%60);
+ 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;
strcpy(menustring[4],temp);
for(i=0;i<20;i++)if(menustring[4][i]=='\0')menustring[4][i]=' ';
menustring[4][20]='\0';
- sprintf (temp, "%d",(int)accountcampaignscore[accountactive]);
+ sprintf (temp, "%d",(int)accountactive->getCampaignScore());
strcat(menustring[4],temp);
startx[4]=190;
endx[4]=startx[4]+strlen(menustring[4])*10;
strcpy(menustring[5],temp);
for(i=0;i<20;i++)if(menustring[5][i]=='\0')menustring[5][i]=' ';
menustring[5][20]='\0';
- sprintf (temp, "%d",(int)accountcampaignhighscore[accountactive]);
+ sprintf (temp, "%d",(int)accountactive->getCampaignHighScore());
strcat(menustring[5],temp);
startx[5]=190;
endx[5]=startx[5]+strlen(menustring[5])*10;
strcpy(menustring[7],temp);
for(i=0;i<20;i++)if(menustring[7][i]=='\0')menustring[7][i]=' ';
menustring[7][20]='\0';
- sprintf (temp, "%d",(int)accountcampaignfasttime[accountactive]);
+ sprintf (temp, "%d",(int)accountactive->getCampaignFasttime());
strcat(menustring[7],temp);
startx[7]=200;
endx[7]=startx[7]+strlen(menustring[7])*10;
if(mainmenu!=5||j<6)
{
glColor4f(1,0,0,1);
- if(mainmenu==9&&j>accountprogress[accountactive]&&j<numchallengelevels)glColor4f(0.5,0,0,1);
- if(mainmenu==11&&j>accountprogress[accountactive]&&j<numchallengelevels)glColor4f(0.5,0,0,1);
+ if(mainmenu==9&&j>accountactive->getProgress()&&j<numchallengelevels)glColor4f(0.5,0,0,1);
+ if(mainmenu==11&&j>accountactive->getProgress()&&j<numchallengelevels)glColor4f(0.5,0,0,1);
//if(1-((float)i)/10-(1-selectedlong[j])>0){
glMatrixMode(GL_MODELVIEW); // Select The Modelview Matrix
glPushMatrix();
if(1-((float)i)/15-(1-selectedlong[j])>0)
{
glColor4f(1,0,0,(1-((float)i)/10-(1-selectedlong[j]))*.25);
- if(mainmenu==9&&j>accountprogress[accountactive]&&j<numchallengelevels)glColor4f(0.5,0,0,(1-((float)i)/10-(1-selectedlong[j]))*.25);
- if(mainmenu==11&&j>accountprogress[accountactive]&&j<numchallengelevels)glColor4f(0.5,0,0,(1-((float)i)/10-(1-selectedlong[j]))*.25);
+ if(mainmenu==9&&j>accountactive->getProgress()&&j<numchallengelevels)glColor4f(0.5,0,0,(1-((float)i)/10-(1-selectedlong[j]))*.25);
+ if(mainmenu==11&&j>accountactive->getProgress()&&j<numchallengelevels)glColor4f(0.5,0,0,(1-((float)i)/10-(1-selectedlong[j]))*.25);
if(mainmenu==3)text.glPrint(startx[j]-((float)i)+offsetx[j]*((float)i)/4-((/*1*/+((float)i)/70)*strlen(menustring[j]))*3,starty[j]/*-i*1/2*/+offsety[j]*((float)i)/4,menustring[j],0,1+((float)i)/70,640,480);
if(mainmenu==4)text.glPrint(startx[j]-((float)i)+offsetx[j]*((float)i)/4/*-((((float)i)/70)*strlen(menustring[j]))*3*/,starty[j]/*-i*1/2*/+offsety[j]*((float)i)/4,menustring[j],0,1+((float)i)/70,640,480);
if(mainmenu==5)text.glPrint(startx[j]-((float)i)+offsetx[j]*((float)i)/4/*-((((float)i)/70)*strlen(menustring[j]))*3*/,starty[j]/*-i*1/2*/+offsety[j]*((float)i)/4,menustring[j],0,1+((float)i)/70,640,480);
//float linestartx,lineendx,linestarty,lineendy,offsetx,offsety;
linestart.x=(startx[j]+endx[j])/2;
linestart.y=(starty[j]+endy[j])/2;
- if(j>=6+accountcampaignchoicesmade[accountactive]){
- linestart.x=(startx[6+accountcampaignchoicesmade[accountactive]]+endx[6+accountcampaignchoicesmade[accountactive]])/2;
- linestart.y=(starty[6+accountcampaignchoicesmade[accountactive]]+endy[6+accountcampaignchoicesmade[accountactive]])/2;
+ if(j>=6+accountactive->getCampaignChoicesMade()){
+ linestart.x=(startx[6+accountactive->getCampaignChoicesMade()]+endx[6+accountactive->getCampaignChoicesMade()])/2;
+ linestart.y=(starty[6+accountactive->getCampaignChoicesMade()]+endy[6+accountactive->getCampaignChoicesMade()])/2;
}
lineend.x=(startx[j+1]+endx[j+1])/2;
lineend.y=(starty[j+1]+endy[j+1])/2;
Normalise(&offset);
glDisable(GL_TEXTURE_2D);
- if(j<6+accountcampaignchoicesmade[accountactive]){
+ if(j<6+accountactive->getCampaignChoicesMade()){
glColor4f(0.5,0,0,1);
startsize=.5;
endsize=.5;
}
- if(j>=6+accountcampaignchoicesmade[accountactive]){
+ if(j>=6+accountactive->getCampaignChoicesMade()){
glColor4f(1,0,0,1);
endsize=1;
startsize=.5;
linestart+=fac*4*startsize;
lineend-=fac*4*endsize;
- if(!(j>7+accountcampaignchoicesmade[accountactive]+campaignchoicenum)){
+ if(!(j>7+accountactive->getCampaignChoicesMade()+campaignchoicenum)){
glMatrixMode(GL_MODELVIEW); // Select The Modelview Matrix
glPushMatrix();
glBegin(GL_QUADS);
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<accountcampaignchoicesmade[accountactive])glColor4f(0.5,0,0,1);
- if(j-7>=accountcampaignchoicesmade[accountactive])glColor4f(1,0,0,1);
+ if(j-7<accountactive->getCampaignChoicesMade())glColor4f(0.5,0,0,1);
+ if(j-7>=accountactive->getCampaignChoicesMade())glColor4f(1,0,0,1);
if(j==6)glColor4f(1,1,1,1);
XYZ midpoint;
float itemsize;
midpoint=0;
midpoint.x=(startx[j]+endx[j])/2;
midpoint.y=(starty[j]+endy[j])/2;
- if(j>6&&(j-7<accountcampaignchoicesmade[accountactive]))itemsize*=.5;
- if(!(j-7>accountcampaignchoicesmade[accountactive]+campaignchoicenum))
+ if(j>6&&(j-7<accountactive->getCampaignChoicesMade()))itemsize*=.5;
+ if(!(j-7>accountactive->getCampaignChoicesMade()+campaignchoicenum))
{
glMatrixMode(GL_MODELVIEW); // Select The Modelview Matrix
glPushMatrix();
glPopMatrix();
glMatrixMode(GL_MODELVIEW); // Select The Modelview Matrix
- if(j-7>=accountcampaignchoicesmade[accountactive]){
+ if(j-7>=accountactive->getCampaignChoicesMade()){
//glColor4f(0,0,0,1);
//text.glPrintOutline(startx[j]+10-1.5,starty[j]-4-1.5,menustring[j],0,0.6*1.25,640,480);
//glColor4f(1,0,0,1);
extern char mapname[256];
extern bool gamestarted;
-extern int numaccounts;
-extern int accountactive;
-extern int accountdifficulty[10];
-extern int accountprogress[10];
-extern float accountpoints[10];
-extern float accounthighscore[10][50];
-extern float accountfasttime[10][50];
-extern bool accountunlocked[10][60];
-extern char accountname[10][256];
-
extern int numdialogues;
extern int numdialogueboxes[20];
extern int dialoguetype[20];
LOGFUNC;
if(endgame==2){
- accountcampaignchoicesmade[accountactive]=0;
- accountcampaignscore[accountactive]=0;
- accountcampaigntime[accountactive]=0;
+ accountactive->endGame();
endgame=0;
}
-
- sprintf (mapname, ":Data:Users");
-
- FILE *tfile;
- tfile=fopen( ConvertFileName(mapname), "wb" );
- if (tfile)
- {
- fpackf(tfile, "Bi", numaccounts);
- fpackf(tfile, "Bi", accountactive);
- if(numaccounts>0)
- {
- for(i=0;i<numaccounts;i++)
- {
- fpackf(tfile, "Bf", accountcampaigntime[i]);
- fpackf(tfile, "Bf", accountcampaignscore[i]);
- fpackf(tfile, "Bf", accountcampaignfasttime[i]);
- fpackf(tfile, "Bf", accountcampaignhighscore[i]);
- fpackf(tfile, "Bi", accountdifficulty[i]);
- fpackf(tfile, "Bi", accountprogress[i]);
- fpackf(tfile, "Bi", accountcampaignchoicesmade[i]);
- for(j=0;j<accountcampaignchoicesmade[i];j++)
- {
- fpackf(tfile, "Bi", accountcampaignchoices[i][j]);
- }
- fpackf(tfile, "Bf", accountpoints[i]);
- for(j=0;j<50;j++)
- {
- fpackf(tfile, "Bf", accounthighscore[i][j]);
- fpackf(tfile, "Bf", accountfasttime[i][j]);
- }
- for(j=0;j<60;j++)
- {
- fpackf(tfile, "Bb", accountunlocked[i][j]);
- }
- fpackf(tfile, "Bi", strlen(accountname[i]));
- if(strlen(accountname[i])>0)
- {
- for(j=0;j<(int)strlen(accountname[i]);j++)
- {
- fpackf(tfile, "Bb", accountname[i][j]);
- }
- }
- }
- }
-
- fclose(tfile);
- }
+ Account::saveFile(":Data:Users", accountactive);
TexIter it = textures.begin();
for (; it != textures.end(); ++it)
numchallengelevels=14;
-
- FILE *tfile;
-
- accountactive=-1;
-
- sprintf (mapname, ":Data:Users");
- tfile=fopen( ConvertFileName(mapname), "rb" );
- if(tfile)
- {
- funpackf(tfile, "Bi", &numaccounts);
- funpackf(tfile, "Bi", &accountactive);
- if(numaccounts>0)
- {
- for(i=0;i<numaccounts;i++)
- {
- funpackf(tfile, "Bf", &accountcampaigntime[i]);
- funpackf(tfile, "Bf", &accountcampaignscore[i]);
- funpackf(tfile, "Bf", &accountcampaignfasttime[i]);
- funpackf(tfile, "Bf", &accountcampaignhighscore[i]);
- funpackf(tfile, "Bi", &accountdifficulty[i]);
- funpackf(tfile, "Bi", &accountprogress[i]);
- funpackf(tfile, "Bi", &accountcampaignchoicesmade[i]);
- for(j=0;j<accountcampaignchoicesmade[i];j++)
- {
- funpackf(tfile, "Bi", &accountcampaignchoices[i][j]);
- if (accountcampaignchoices[i][j] >= 10)
- {
- accountcampaignchoices[i][j] = 0;
- }
- }
- funpackf(tfile, "Bf", &accountpoints[i]);
- for(j=0;j<50;j++)
- {
- funpackf(tfile, "Bf", &accounthighscore[i][j]);
- funpackf(tfile, "Bf", &accountfasttime[i][j]);
- }
- for(j=0;j<60;j++)
- {
- funpackf(tfile, "Bb", &accountunlocked[i][j]);
- }
- int temp;
- funpackf(tfile, "Bi", &temp);
- if(temp>0)
- {
- for(j=0;j<temp;j++)
- {
- funpackf(tfile, "Bb", &accountname[i][j]);
- }
- }
- }
- }
-
- fclose(tfile);
- }
+ accountactive=Account::loadFile(":Data:Users");
tintr=1;
tintg=1;
extern int kBitsPerPixel;
extern int hostile;
-extern int numaccounts;
-extern int accountactive;
-extern int accountdifficulty[10];
-extern int accountprogress[10];
-extern float accountpoints[10];
-extern float accounthighscore[10][50];
-extern float accountfasttime[10][50];
-extern bool accountunlocked[10][60];
-extern char accountname[10][256];
-
extern bool stillloading;
extern bool winfreeze;
extern float oldgamespeed;
-extern float accountcampaignhighscore[10];
-extern float accountcampaignfasttime[10];
-extern float accountcampaignscore[10];
-extern float accountcampaigntime[10];
-
-extern int accountcampaignchoicesmade[10];
-extern int accountcampaignchoices[10][5000];
-
static const char *rabbitskin[] = {
":Data:Textures:Fur3.jpg",
":Data:Textures:Fur.jpg",
damagedealt=0;
damagetaken=0;
- if(accountactive!=-1)difficulty=accountdifficulty[accountactive];
+ if(accountactive)difficulty=accountactive->getDifficulty();
if(difficulty!=2)minimap=1;
else minimap=0;
}
mainmenutogglekeydown=1;
}
- if(!IsKeyDown(theKeyMap, MAC_ESCAPE_KEY)){
+ if(!Input::isKeyDown(SDLK_ESCAPE)){
mainmenutogglekeydown=0;
}
}
/*static bool minimaptogglekeydown;
- if(IsKeyDown(theKeyMap, MAC_TAB_KEY)&&!minimaptogglekeydown){
+ if(Input::isKeyDown(SDLK_TAB)&&!minimaptogglekeydown){
minimap=1-minimap;
minimaptogglekeydown=1;
}
- if(!IsKeyDown(theKeyMap, MAC_TAB_KEY)){
+ if(!Input::isKeyDown(SDLK_TAB)){
minimaptogglekeydown=0;
}
*/
static bool minimaptogglekeydown;
- if(IsKeyDown(theKeyMap, MAC_TAB_KEY)&&!minimaptogglekeydown&&tutoriallevel){
+ if(Input::isKeyDown(SDLK_TAB)&&!minimaptogglekeydown&&tutoriallevel){
if(tutorialstage!=51)
tutorialstagetime=tutorialmaxtime;
PlaySoundEx( consolefailsound, samp[consolefailsound], NULL, true);
OPENAL_SetPaused(channels[consolefailsound], false);
minimaptogglekeydown=1;
}
- if(!IsKeyDown(theKeyMap, MAC_TAB_KEY)){
+ if(!Input::isKeyDown(SDLK_TAB)){
minimaptogglekeydown=0;
}
if(mainmenu){
//menu buttons
if(mainmenu==1||mainmenu==2){
- if(Button()&&!oldbutton&&selected==1){
+ if(Input::Button()&&!oldbutton&&selected==1){
if(!gameon){
- float gLoc[3]={0,0,0};
- float vel[3]={0,0,0};
- OPENAL_Sample_SetMinMaxDistance(samp[firestartsound], 9999.0f, 99999.0f);
- PlaySoundEx( firestartsound, samp[firestartsound], NULL, true);
- OPENAL_3D_SetAttributes(channels[firestartsound], gLoc, vel);
- OPENAL_SetVolume(channels[firestartsound], 256);
- OPENAL_SetPaused(channels[firestartsound], false);
- OPENAL_Sample_SetMinMaxDistance(samp[firestartsound], 8.0f, 2000.0f);
-
- flashr=1;
- flashg=0;
- flashb=0;
- flashamount=1;
- flashdelay=1;
+ fireSound(firestartsound);
+
+ flash();
//new game
- if(accountactive!=-1)mainmenu=5;
- else mainmenu=7;
- /*
- startbonustotal=0;
-
- loading=2;
- loadtime=0;
- if(firstload)TickOnceAfter();
- if(!firstload)LoadStuff();
- else {
- Loadlevel(0);
+ if(accountactive) {
+ mainmenu=5;
+ } else {
+ mainmenu=7;
}
- mainmenu=0;
- gameon=1;
- OPENAL_SetPaused(channels[music3], true); */
+ selected=-1;
}
else
{
}
}
- if(Button()&&!oldbutton&&selected==2){
- float gLoc[3]={0,0,0};
- float vel[3]={0,0,0};
- OPENAL_Sample_SetMinMaxDistance(samp[firestartsound], 9999.0f, 99999.0f);
- PlaySoundEx( firestartsound, samp[firestartsound], NULL, true);
- OPENAL_3D_SetAttributes(channels[firestartsound], gLoc, vel);
- OPENAL_SetVolume(channels[firestartsound], 256);
- OPENAL_SetPaused(channels[firestartsound], false);
- OPENAL_Sample_SetMinMaxDistance(samp[firestartsound], 8.0f, 2000.0f);
+ if(Input::Button()&&!oldbutton&&selected==2){
+ fireSound();
- flashr=1;
- flashg=0;
- flashb=0;
- flashamount=1;
- flashdelay=1;
+ flash();
//options
if(newscreenheight<0)newscreenheight=screenheight;
}
- if(Button()&&!oldbutton&&selected==3){
- float gLoc[3]={0,0,0};
- float vel[3]={0,0,0};
- OPENAL_Sample_SetMinMaxDistance(samp[fireendsound], 9999.0f, 99999.0f);
- PlaySoundEx( fireendsound, samp[fireendsound], NULL, true);
- OPENAL_3D_SetAttributes(channels[fireendsound], gLoc, vel);
- OPENAL_SetVolume(channels[fireendsound], 256);
- OPENAL_SetPaused(channels[fireendsound], false);
- OPENAL_Sample_SetMinMaxDistance(samp[fireendsound], 8.0f, 2000.0f);
+ if(Input::Button()&&!oldbutton&&selected==3){
+ fireSound();
- flashr=1;
- flashg=0;
- flashb=0;
- flashamount=1;
- flashdelay=1;
+ flash();
if(!gameon){
//quit
mainmenu=1;
}
}
- if(Button())oldbutton=1;
- else oldbutton=0;
}
-
if(mainmenu==3){
- if(Button()&&!oldbutton&&selected!=-1){
- float gLoc[3]={0,0,0};
- float vel[3]={0,0,0};
- OPENAL_Sample_SetMinMaxDistance(samp[firestartsound], 9999.0f, 99999.0f);
- PlaySoundEx( firestartsound, samp[firestartsound], NULL, true);
- OPENAL_3D_SetAttributes(channels[firestartsound], gLoc, vel);
- OPENAL_SetVolume(channels[firestartsound], 256);
- OPENAL_SetPaused(channels[firestartsound], false);
- OPENAL_Sample_SetMinMaxDistance(samp[firestartsound], 8.0f, 2000.0f);
+ if(Input::Button()&&!oldbutton&&selected!=-1){
+ fireSound();
}
- if(Button()&&!oldbutton&&selected==0){
+ if(Input::Button()&&!oldbutton&&selected==0){
extern SDL_Rect **resolutions;
bool isCustomResolution = true;
if(mainmenu==5){
if(endgame==2){
- accountcampaignchoicesmade[accountactive]=0;
- accountcampaignscore[accountactive]=0;
- accountcampaigntime[accountactive]=0;
+ accountactive->endGame();
endgame=0;
}
mapname[8]='p';
mapname[9]='s';
mapname[10]=':';
- strcat(mapname,campaignmapname[campaignchoicewhich[selected-7-accountcampaignchoicesmade[accountactive]]]);
- whichchoice=selected-7-accountcampaignchoicesmade[accountactive];
+ strcat(mapname,campaignmapname[campaignchoicewhich[selected-7-accountactive->getCampaignChoicesMade()]]);
+ whichchoice=selected-7-accountactive->getCampaignChoicesMade();
visibleloading=1;
stillloading=1;
Loadlevel(mapname);
}
if(mainmenu==6){
- if(Button()&&!oldbutton&&selected!=-1){
- float gLoc[3]={0,0,0};
- float vel[3]={0,0,0};
- OPENAL_Sample_SetMinMaxDistance(samp[firestartsound], 9999.0f, 99999.0f);
- PlaySoundEx( firestartsound, samp[firestartsound], NULL, true);
- OPENAL_3D_SetAttributes(channels[firestartsound], gLoc, vel);
- OPENAL_SetVolume(channels[firestartsound], 256);
- OPENAL_SetPaused(channels[firestartsound], false);
- OPENAL_Sample_SetMinMaxDistance(samp[firestartsound], 8.0f, 2000.0f);
- }
- if(Button()&&!oldbutton&&selected==1){
- float gLoc[3]={0,0,0};
- float vel[3]={0,0,0};
- OPENAL_Sample_SetMinMaxDistance(samp[fireendsound], 9999.0f, 99999.0f);
- PlaySoundEx( fireendsound, samp[fireendsound], NULL, true);
- OPENAL_3D_SetAttributes(channels[fireendsound], gLoc, vel);
- OPENAL_SetVolume(channels[fireendsound], 256);
- OPENAL_SetPaused(channels[fireendsound], false);
- OPENAL_Sample_SetMinMaxDistance(samp[fireendsound], 8.0f, 2000.0f);
-
- flashr=1;
- flashg=0;
- flashb=0;
- flashamount=1;
- flashdelay=1;
-
- for(i=accountactive;i<numaccounts-1;i++){
- accountdifficulty[i]=accountdifficulty[i+1];
- accountcampaignchoicesmade[i]=accountcampaignchoicesmade[i+1];
- for(j=0;j<accountcampaignchoicesmade[i+1];j++){
- accountcampaignchoices[i][j]=accountcampaignchoices[i+1][j];
+ if(Input::Button()&&!oldbutton) {
+ if(selected>-1){
+ fireSound();
+ if(selected==1) {
+ flash();
+ accountactive = Account::destroy(accountactive);
+ mainmenu=7;
+ } else if(selected==2) {
+ flash();
+ mainmenu=5;
}
- accountpoints[i]=accountpoints[i+1];
- for(j=0;j<50;j++){
- accounthighscore[i][j]=accounthighscore[i+1][j];
- accountfasttime[i][j]=accountfasttime[i+1][j];
- }
- for(j=0;j<60;j++){
- accountunlocked[i][j]=accountunlocked[i+1][j];
- }
- for(j=0;j<256;j++){
- accountname[i][j]=accountname[i+1][j];
- }
- accountcampaignhighscore[i]=accountcampaignhighscore[i+1];
- accountprogress[i]=accountprogress[i+1];
- accountcampaignfasttime[i]=accountcampaignfasttime[i+1];
- accountcampaignscore[i]=accountcampaignscore[i+1];
- accountcampaigntime[i]=accountcampaigntime[i+1];
}
-
- numaccounts--;
- accountactive=-1;
-
-
- mainmenu=7;
- }
- if(Button()&&!oldbutton&&selected==2){
- float gLoc[3]={0,0,0};
- float vel[3]={0,0,0};
- OPENAL_Sample_SetMinMaxDistance(samp[fireendsound], 9999.0f, 99999.0f);
- PlaySoundEx( fireendsound, samp[fireendsound], NULL, true);
- OPENAL_3D_SetAttributes(channels[fireendsound], gLoc, vel);
- OPENAL_SetVolume(channels[fireendsound], 256);
- OPENAL_SetPaused(channels[fireendsound], false);
- OPENAL_Sample_SetMinMaxDistance(samp[fireendsound], 8.0f, 2000.0f);
-
- flashr=1;
- flashg=0;
- flashb=0;
- flashamount=1;
- flashdelay=1;
-
- mainmenu=5;
}
if(Button())oldbutton=1;
else oldbutton=0;
}
if(mainmenu==7){
- if(Button()&&!oldbutton&&selected!=-1){
- float gLoc[3]={0,0,0};
- float vel[3]={0,0,0};
- OPENAL_Sample_SetMinMaxDistance(samp[firestartsound], 9999.0f, 99999.0f);
- PlaySoundEx( firestartsound, samp[firestartsound], NULL, true);
- OPENAL_3D_SetAttributes(channels[firestartsound], gLoc, vel);
- OPENAL_SetVolume(channels[firestartsound], 256);
- OPENAL_SetPaused(channels[firestartsound], false);
- OPENAL_Sample_SetMinMaxDistance(samp[firestartsound], 8.0f, 2000.0f);
- }
- if(Button()&&!oldbutton&&selected==0&&numaccounts<8){
- entername=1;
- }
- if(Button()&&!oldbutton&&selected>0&&selected<numaccounts+1){
- accountactive=selected-1;
- mainmenu=5;
- flashr=1;
- flashg=0;
- flashb=0;
- flashamount=1;
- flashdelay=1;
- }
- if(Button()&&!oldbutton&&selected==numaccounts+1){
- float gLoc[3]={0,0,0};
- float vel[3]={0,0,0};
- OPENAL_Sample_SetMinMaxDistance(samp[fireendsound], 9999.0f, 99999.0f);
- PlaySoundEx( fireendsound, samp[fireendsound], NULL, true);
- OPENAL_3D_SetAttributes(channels[fireendsound], gLoc, vel);
- OPENAL_SetVolume(channels[fireendsound], 256);
- OPENAL_SetPaused(channels[fireendsound], false);
- OPENAL_Sample_SetMinMaxDistance(samp[fireendsound], 8.0f, 2000.0f);
-
- flashr=1;
- flashg=0;
- flashb=0;
- flashamount=1;
- flashdelay=1;
-
- mainmenu=1;
-
- for(j=0;j<255;j++){
- displaytext[0][j]=' ';
+ if(Input::Button()&&!oldbutton) {
+ if(selected!=-1){
+ fireSound();
+ if(selected==0&&Account::getNbAccounts()<8){
+ entername=1;
+ } else if (selected<Account::getNbAccounts()+1) {
+ accountactive=Account::get(selected-1);
+ mainmenu=5;
+ flash();
+ } else if (selected==Account::getNbAccounts()+1) {
+ flash();
+
+ mainmenu=1;
+
+ for(j=0;j<255;j++){
+ displaytext[0][j]=' ';
+ }
+ displaychars[0]=0;
+ displayselected=0;
+ entername=0;
+ }
}
- displaychars[0]=0;
- displayselected=0;
- entername=0;
}
if(Button())oldbutton=1;
else oldbutton=0;
}
if(mainmenu==8){
- if(Button()&&!oldbutton&&selected!=-1){
- float gLoc[3]={0,0,0};
- float vel[3]={0,0,0};
- OPENAL_Sample_SetMinMaxDistance(samp[firestartsound], 9999.0f, 99999.0f);
- PlaySoundEx( firestartsound, samp[firestartsound], NULL, true);
- OPENAL_3D_SetAttributes(channels[firestartsound], gLoc, vel);
- OPENAL_SetVolume(channels[firestartsound], 256);
- OPENAL_SetPaused(channels[firestartsound], false);
- OPENAL_Sample_SetMinMaxDistance(samp[firestartsound], 8.0f, 2000.0f);
+ if(Input::Button()&&!oldbutton&&selected>-1){
+ fireSound();
- if(selected==0)accountdifficulty[accountactive]=0;
- if(selected==1)accountdifficulty[accountactive]=1;
- if(selected==2)accountdifficulty[accountactive]=2;
+ if(selected<=2)
+ accountactive->setDifficulty(selected);
mainmenu=5;
- flashr=1;
- flashg=0;
- flashb=0;
- flashamount=1;
- flashdelay=1;
+ flash();
}
if(Button())oldbutton=1;
//high scores, awards, win
if(campaign){
won=1;
- accountcampaignchoices[accountactive][accountcampaignchoicesmade[accountactive]]=whichchoice;
- accountcampaignchoicesmade[accountactive]++;
+ accountactive->winCampaignLevel(whichchoice, bonustotal, leveltime);
+ /*accountcampaignchoices[accountactive][accountactive->getCampaignChoicesMade()]=whichchoice;
+ accountactive->getCampaignChoicesMade()++;
accountcampaignscore[accountactive]+=bonustotal;
- scoreadded=1;
accountcampaigntime[accountactive]+=leveltime;
- if(accountcampaignscore[accountactive]>accountcampaignhighscore[accountactive])accountcampaignhighscore[accountactive]=accountcampaignscore[accountactive];
-
- //if(accountprogress[accountactive]<whichlevel+1)accountprogress[accountactive]=whichlevel+1;
+ if(accountcampaignscore[accountactive]>accountcampaignhighscore[accountactive])
+ accountcampaignhighscore[accountactive]=accountcampaignscore[accountactive];*/
+ scoreadded=1;
}
else
{
won=1;
- if(!debugmode){
- if(bonustotal-startbonustotal>accounthighscore[accountactive][whichlevel])accounthighscore[accountactive][whichlevel]=bonustotal-startbonustotal;
- if(accountfasttime[accountactive][whichlevel]==0||leveltime<accountfasttime[accountactive][whichlevel])accountfasttime[accountactive][whichlevel]=leveltime;
- }
- if(accountprogress[accountactive]<whichlevel+1)accountprogress[accountactive]=whichlevel+1;
-
+ accountactive->winLevel(whichlevel,bonustotal-startbonustotal,leveltime);
}
}
}
mapname[8]='p';
mapname[9]='s';
mapname[10]=':';
- strcat(mapname,campaignmapname[levelorder[accountcampaignchoicesmade[accountactive]]]);//[campaignchoicewhich[whichchoice]]);
+ strcat(mapname,campaignmapname[levelorder[accountactive->getCampaignChoicesMade()]]);//[campaignchoicewhich[whichchoice]]);
Loadlevel(mapname);
OPENAL_Sample_SetMinMaxDistance(samp[fireendsound], 9999.0f, 99999.0f);
levelorder[0]=0;
levelvisible[0]=1;
- if(accountcampaignchoicesmade[accountactive])
- for(i=0;i<accountcampaignchoicesmade[accountactive];i++){
- levelorder[i+1]=campaignnextlevel[levelorder[i]][accountcampaignchoices[accountactive][i]];
+ if(accountactive->getCampaignChoicesMade())
+ for(i=0;i<accountactive->getCampaignChoicesMade();i++){
+ levelorder[i+1]=campaignnextlevel[levelorder[i]][accountactive->getCampaignChoice(i)];
levelvisible[levelorder[i+1]]=1;
}
int whichlevelstart;
- whichlevelstart=accountcampaignchoicesmade[accountactive]-1;
+ whichlevelstart=accountactive->getCampaignChoicesMade()-1;
if(whichlevelstart<0){
campaignchoicenum=1;
campaignchoicewhich[0]=0;
float startbonustotal = 0;
float bonustime = 0;
-int numaccounts = 0;
-int accountactive = 0;
-int accountdifficulty[10] = {0};
-int accountprogress[10] = {0};
-float accountpoints[10] = {0};
-float accounthighscore[10][50] = {0};
-float accountfasttime[10][50] = {0};
-bool accountunlocked[10][60] = {0};
-char accountname[10][256] = {0};
-float accountcampaignhighscore[10] = {0};
-float accountcampaignfasttime[10] = {0};
-float accountcampaignscore[10] = {0};
-float accountcampaigntime[10] = {0};
-int accountcampaignchoicesmade[10] = {0};int accountcampaignchoices[10][5000] = {0};
bool won = 0;