/*
Copyright (C) 2003, 2010 - Wolfire Games
-Copyright (C) 2010 - MCMic
+Copyright (C) 2010 - Côme <MCMic> BERNIGAUD
This file is part of Lugaru.
#include <vector>
#include <string>
+#include <map>
#include <fstream>
+struct CampaignProgress {
+ float highscore;
+ float fasttime;
+ float score;
+ float time;
+ std::vector<int> choices;
+ CampaignProgress() {
+ highscore = 0;
+ fasttime = 0;
+ score = 0;
+ time = 0;
+ }
+};
class Account {
public:
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]; };
+ float getCampaignScore() { return campaignProgress[currentCampaign].score; };
+ int getCampaignChoicesMade() { return campaignProgress[currentCampaign].choices.size(); };
+ int getCampaignChoice(int i) { return campaignProgress[currentCampaign].choices[i]; };
void setCampaignScore(int s) {
- campaignscore=s;
- if(s>campaignhighscore)
- campaignhighscore=s;
+ campaignProgress[currentCampaign].score=s;
+ if(s>campaignProgress[currentCampaign].highscore)
+ campaignProgress[currentCampaign].highscore=s;
};
void setCampaignFinalTime(float t) {
- campaigntime = t;
- if((t<campaignfasttime) || (campaignfasttime==0) && (t!=0))
- campaignfasttime = t;
+ campaignProgress[currentCampaign].time = t;
+ if((t<campaignProgress[currentCampaign].fasttime) || (campaignProgress[currentCampaign].fasttime==0) && (t!=0))
+ campaignProgress[currentCampaign].fasttime = t;
};
- float getCampaignFasttime() { return campaignfasttime; };
- void resetFasttime() { campaignfasttime = 0; };
- float getCampaignHighScore() { return campaignhighscore; };
+ float getCampaignFasttime() { return campaignProgress[currentCampaign].fasttime; };
+ void resetFasttime() { campaignProgress[currentCampaign].fasttime = 0; };
+ float getCampaignHighScore() { return campaignProgress[currentCampaign].highscore; };
float getHighScore(int i) { return highscore[i]; };
float getFastTime(int i) { return fasttime[i]; };
int getProgress() { return progress; };
+ std::string getCurrentCampaign() { return currentCampaign; };
+ void setCurrentCampaign(std::string name);
static int getNbAccounts() { return accounts.size(); };
private:
Account(std::string n="");
int difficulty;
- int progress;
+ int progress; // progress in challenge levels
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.
+
+ std::string currentCampaign;
+ std::map<std::string,CampaignProgress> campaignProgress;
//statics
static std::vector<Account*> accounts;