extern bool devtools;
vector<Account*> Account::accounts = vector<Account*>();
+Account* Account::active = nullptr;
Account::Account(const string& name) : name(name), campaignProgress()
{
{
FILE *tfile;
int numaccounts;
- int accountactive;
+ int iactive;
errno = 0;
tfile = fopen(filename.c_str(), "rb" );
if (tfile) {
funpackf(tfile, "Bi", &numaccounts);
- funpackf(tfile, "Bi", &accountactive);
+ funpackf(tfile, "Bi", &iactive);
printf("number of accounts %d\n", numaccounts);
for (int i = 0; i < numaccounts; i++) {
printf("loading account %d/%d\n", i, numaccounts);
}
fclose(tfile);
- return get(accountactive);
+ return get(iactive);
} else {
perror(("Couldn't load users from " + filename).c_str());
return NULL;
}
}
-void Account::saveFile(string filename, Account* accountactive)
+void Account::saveFile(string filename)
{
FILE *tfile;
errno = 0;
tfile = fopen(filename.c_str(), "wb" );
if (tfile) {
fpackf(tfile, "Bi", getNbAccounts());
- fpackf(tfile, "Bi", indice(accountactive));
+ fpackf(tfile, "Bi", indice(Account::active));
for (int i = 0; i < getNbAccounts(); i++) {
Account* a = Account::get(i);
void LoadCampaign()
{
- if (!accountactive)
+ if (!Account::active)
return;
- std::ifstream ipstream(Folders::getResourcePath("Campaigns/" + accountactive->getCurrentCampaign() + ".txt"));
+ std::ifstream ipstream(Folders::getResourcePath("Campaigns/" + Account::active->getCurrentCampaign() + ".txt"));
if (!ipstream.good()) {
- if (accountactive->getCurrentCampaign() == "main") {
+ if (Account::active->getCurrentCampaign() == "main") {
cerr << "Could not found main campaign!" << endl;
return;
}
- cerr << "Could not found campaign \"" << accountactive->getCurrentCampaign() << "\", falling back to main." << endl;
- accountactive->setCurrentCampaign("main");
+ cerr << "Could not found campaign \"" << Account::active->getCurrentCampaign() << "\", falling back to main." << endl;
+ Account::active->setCurrentCampaign("main");
return LoadCampaign();
}
ipstream.ignore(256, ':');
}
ipstream.close();
- std::ifstream test(Folders::getResourcePath("Textures/" + accountactive->getCurrentCampaign() + "/World.png"));
+ std::ifstream test(Folders::getResourcePath("Textures/" + Account::active->getCurrentCampaign() + "/World.png"));
if (test.good()) {
- Mainmenuitems[7].load("Textures/" + accountactive->getCurrentCampaign() + "/World.png", 0);
+ Mainmenuitems[7].load("Textures/" + Account::active->getCurrentCampaign() + "/World.png", 0);
} else {
Mainmenuitems[7].load("Textures/World.png", 0);
}
- if (accountactive->getCampaignChoicesMade() == 0) {
- accountactive->setCampaignScore(0);
- accountactive->resetFasttime();
+ if (Account::active->getCampaignChoicesMade() == 0) {
+ Account::active->setCampaignScore(0);
+ Account::active->resetFasttime();
}
}
break;
case 5: {
LoadCampaign();
- addLabel(-1, accountactive->getName(), 5, 400);
+ addLabel(-1, Account::active->getName(), 5, 400);
addButton(1, "Tutorial", 5, 300);
addButton(2, "Challenge", 5, 240);
addButton(3, "Delete User", 400, 10);
addButton(4, "Main Menu", 5, 10);
addButton(5, "Change User", 5, 180);
- addButton(6, "Campaign : " + accountactive->getCurrentCampaign(), 200, 420);
+ addButton(6, "Campaign : " + Account::active->getCurrentCampaign(), 200, 420);
//show campaign map
//with (2,-5) offset from old code
addImage(-1, Mainmenuitems[7], 150 + 2, 60 - 5, 400, 400);
//show levels
- int numlevels = accountactive->getCampaignChoicesMade();
+ int numlevels = Account::active->getCampaignChoicesMade();
numlevels += numlevels > 0 ? campaignlevels[numlevels - 1].nextlevel.size() : 1;
for (int i = 0; i < numlevels; i++) {
XYZ midpoint = campaignlevels[i].getCenter();
float itemsize = campaignlevels[i].getWidth();
- const bool active = i >= accountactive->getCampaignChoicesMade();
+ const bool active = i >= Account::active->getCampaignChoicesMade();
if (!active)
itemsize /= 2;
if (name.size() < 17) {
name.append((17 - name.size()), ' ');
}
- name += to_string(int(accountactive->getHighScore(i)));
+ name += to_string(int(Account::active->getHighScore(i)));
if (name.size() < 32) {
name.append((32 - name.size()), ' ');
}
- int fasttime = (int)round(accountactive->getFastTime(i));
+ int fasttime = (int)round(Account::active->getFastTime(i));
name += to_string(int((fasttime - fasttime % 60) / 60));
name += ":";
if (fasttime % 60 < 10)
name += "0";
name += to_string(fasttime % 60);
- addButton(i, name, 10, 400 - i * 25, i > accountactive->getProgress() ? 0.5 : 1, 0, 0);
+ addButton(i, name, 10, 400 - i * 25, i > Account::active->getProgress() ? 0.5 : 1, 0, 0);
}
addButton(-1, " High Score Best Time", 10, 440);
addLabel(1, "You have avenged your family and", 140, 300);
addLabel(2, "restored peace to the island of Lugaru.", 110, 270);
addButton(3, "Back", 10, 10);
- addLabel(4, string("Your score: ") + to_string((int)accountactive->getCampaignScore()), 190, 200);
- addLabel(5, string("Highest score: ") + to_string((int)accountactive->getCampaignHighScore()), 190, 180);
+ addLabel(4, string("Your score: ") + to_string((int)Account::active->getCampaignScore()), 190, 200);
+ addLabel(5, string("Highest score: ") + to_string((int)Account::active->getCampaignHighScore()), 190, 180);
}
break;
case 18:
// some specific case where we do something even if the left mouse button is not pressed.
if ((mainmenu == 5) && (endgame == 2)) {
- accountactive->endGame();
+ Account::active->endGame();
endgame = 0;
}
if (mainmenu == 10)
} else { //new game
fireSound(firestartsound);
flash();
- mainmenu = (accountactive ? 5 : 7);
+ mainmenu = (Account::active ? 5 : 7);
selected = -1;
}
break;
case 5:
fireSound();
flash();
- if ((selected - NB_CAMPAIGN_MENU_ITEM >= accountactive->getCampaignChoicesMade())) {
+ if ((selected - NB_CAMPAIGN_MENU_ITEM >= Account::active->getCampaignChoicesMade())) {
startbonustotal = 0;
loading = 2;
TickOnceAfter();
else
LoadStuff();
- whichchoice = selected - NB_CAMPAIGN_MENU_ITEM - accountactive->getCampaignChoicesMade();
- actuallevel = (accountactive->getCampaignChoicesMade() > 0 ? campaignlevels[accountactive->getCampaignChoicesMade() - 1].nextlevel[whichchoice] : 0);
+ whichchoice = selected - NB_CAMPAIGN_MENU_ITEM - Account::active->getCampaignChoicesMade();
+ actuallevel = (Account::active->getCampaignChoicesMade() > 0 ? campaignlevels[Account::active->getCampaignChoicesMade() - 1].nextlevel[whichchoice] : 0);
visibleloading = 1;
stillloading = 1;
Loadlevel(campaignlevels[actuallevel].mapname.c_str());
case 6:
vector<string> campaigns = ListCampaigns();
vector<string>::iterator c;
- if ((c = find(campaigns.begin(), campaigns.end(), accountactive->getCurrentCampaign())) == campaigns.end()) {
+ if ((c = find(campaigns.begin(), campaigns.end(), Account::active->getCurrentCampaign())) == campaigns.end()) {
if (!campaigns.empty())
- accountactive->setCurrentCampaign(campaigns.front());
+ Account::active->setCurrentCampaign(campaigns.front());
} else {
c++;
if (c == campaigns.end())
c = campaigns.begin();
- accountactive->setCurrentCampaign(*c);
+ Account::active->setCurrentCampaign(*c);
}
Load();
break;
fireSound();
if (selected == 1) {
flash();
- accountactive = Account::destroy(accountactive);
+ Account::active = Account::destroy(Account::active);
mainmenu = 7;
} else if (selected == 2) {
flash();
} else if (selected < Account::getNbAccounts() + 1) {
flash();
mainmenu = 5;
- accountactive = Account::get(selected - 1);
+ Account::active = Account::get(selected - 1);
} else if (selected == Account::getNbAccounts() + 1) {
flash();
- if (accountactive)
+ if (Account::active)
mainmenu = 5;
else
mainmenu = 1;
fireSound();
flash();
if (selected <= 2)
- accountactive->setDifficulty(selected);
+ Account::active->setDifficulty(selected);
mainmenu = 5;
break;
case 9:
- if (selected < numchallengelevels && selected <= accountactive->getProgress()) {
+ if (selected < numchallengelevels && selected <= Account::active->getProgress()) {
fireSound();
flash();
inputText(displaytext[0], &displayselected);
if (!waiting) { // the input as finished
if (!displaytext[0].empty()) { // with enter
- accountactive = Account::add(string(displaytext[0]));
+ Account::active = Account::add(string(displaytext[0]));
mainmenu = 8;