X-Git-Url: https://git.jsancho.org/?a=blobdiff_plain;f=Source%2FAccount.cpp;h=1388b7e0e281e4d1fa4e57ef3b0295f2a311c72e;hb=5f49519e5b1863ad4fe169e42fd6889a6d17d2aa;hp=31e99af8c54efcaecdcbdf601e2476dfac870321;hpb=e31b70325214fa5bdd433c1fd2aa96a1eb6c6684;p=lugaru.git diff --git a/Source/Account.cpp b/Source/Account.cpp index 31e99af..1388b7e 100644 --- a/Source/Account.cpp +++ b/Source/Account.cpp @@ -1,6 +1,6 @@ /* Copyright (C) 2003, 2010 - Wolfire Games -Copyright (C) 2010 - MCMic +Copyright (C) 2010 - Côme BERNIGAUD This file is part of Lugaru. @@ -32,20 +32,26 @@ extern bool debugmode; vector Account::accounts = vector(); -Account::Account(string n) { +Account::Account(string n) : campaignProgress() { name = string(n); difficulty = 0; progress = 0; points = 0; - for(int i=0;i<50;highscore[i++] = 0); - for(int i=0;i<50;fasttime[i++] = 0); - for(int i=0;i<60;unlocked[i++] = 0); - campaignhighscore = 0; - campaignfasttime = 0; - campaignscore = 0; - campaigntime = 0; - campaignchoicesmade = 0; - for(int i=0;i<5000;campaignchoices[i++] = 0); + memset(highscore, 0, sizeof(highscore)); + memset(fasttime, 0, sizeof(fasttime)); + memset(unlocked, 0, sizeof(unlocked)); + + setCurrentCampaign("main"); +} + +void Account::setCurrentCampaign(string name) { + currentCampaign = name; + if(campaignProgress.find(name)==campaignProgress.end()) { + campaignProgress[name].highscore = 0; + campaignProgress[name].fasttime = 0; + campaignProgress[name].score = 0; + campaignProgress[name].time = 0; + } } Account* Account::add(string name) { @@ -54,7 +60,8 @@ Account* Account::add(string name) { } Account* Account::get(int i) { - if(i=0)&&(icampaigntime)); - 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;jcampaignchoicesmade;j++) - { - funpackf(tfile, "Bi", &(acc->campaignchoices[j])); - if (acc->campaignchoices[j] >= 10) + int nbCampaigns; + funpackf(tfile, "Bi", &nbCampaigns); + printf("loading %d campaign progress info\n",nbCampaigns); + + for(int k=0;kcampaignProgress[campaignName].time)); + funpackf(tfile, "Bf", &(acc->campaignProgress[campaignName].score)); + funpackf(tfile, "Bf", &(acc->campaignProgress[campaignName].fasttime)); + funpackf(tfile, "Bf", &(acc->campaignProgress[campaignName].highscore)); + int campaignchoicesmade,campaignchoice; + funpackf(tfile, "Bi", &campaignchoicesmade); + for(int j=0;jcampaignchoices[j] = 0; + funpackf(tfile, "Bi", &campaignchoice); + if (campaignchoice >= 10) // what is that for? + { + campaignchoice = 0; + } + acc->campaignProgress[campaignName].choices.push_back(campaignchoice); } } + 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;jname.append(1,ctemp); @@ -166,10 +191,9 @@ Account* Account::loadFile(string filename) { void Account::saveFile(string filename, Account* accountactive) { FILE *tfile; - int numaccounts; int j; - tfile=fopen(ConvertFileName(filename.c_str()), "wb" ); + tfile=fopen(ConvertFileName(filename.c_str(), "wb"), "wb" ); if(tfile) { printf("writing %d accounts :\n",getNbAccounts()); @@ -180,17 +204,28 @@ void Account::saveFile(string filename, Account* accountactive) { { 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;jcampaignchoicesmade;j++) - { - fpackf(tfile, "Bi", a->campaignchoices[j]); + fpackf(tfile, "Bi", a->campaignProgress.size()); + + map::const_iterator it; + for( it=a->campaignProgress.begin(); it!= a->campaignProgress.end(); ++it) { + fpackf(tfile, "Bi", it->first.size()); + for(j=0;jfirst.size();j++) + { + fpackf(tfile, "Bb", it->first[j]); + } + fpackf(tfile, "Bf", it->second.time); + fpackf(tfile, "Bf", it->second.score); + fpackf(tfile, "Bf", it->second.fasttime); + fpackf(tfile, "Bf", it->second.highscore); + fpackf(tfile, "Bi", it->second.choices.size()); + for(j=0;jsecond.choices.size();j++) + { + fpackf(tfile, "Bi", it->second.choices[j]); + } } + fpackf(tfile, "Bf", a->points); for(j=0;j<50;j++) {