X-Git-Url: https://git.jsancho.org/?a=blobdiff_plain;f=Source%2FUser%2FAccount.hpp;fp=Source%2FUser%2FAccount.hpp;h=3c9e2e2f03b176ffa28966f3777ef7ae06204d7b;hb=ed3662c0852c4312a612b4fc35bd03aba8d13db7;hp=0000000000000000000000000000000000000000;hpb=b84825978803615f45a9f128232e62431042aec0;p=lugaru.git diff --git a/Source/User/Account.hpp b/Source/User/Account.hpp new file mode 100644 index 0000000..3c9e2e2 --- /dev/null +++ b/Source/User/Account.hpp @@ -0,0 +1,133 @@ +/* +Copyright (C) 2003, 2010 - Wolfire Games +Copyright (C) 2010-2016 - Lugaru contributors (see AUTHORS file) + +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. + +Lugaru 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 Lugaru. If not, see . +*/ + +#ifndef _ACCOUNT_HPP_ +#define _ACCOUNT_HPP_ + +#include +#include +#include +#include + +struct CampaignProgress { + float highscore; + float fasttime; + float score; + float time; + std::vector choices; + CampaignProgress() { + highscore = 0; + fasttime = 0; + score = 0; + time = 0; + } +}; + +class Account +{ +public: + static void destroyActive(); + static void setActive(int i); + static void add(const std::string& name); + static Account& get(int i); + static void loadFile(std::string filename); + static void saveFile(std::string filename); + static int getNbAccounts(); + + static bool hasActive(); + static Account& active(); + + Account(const std::string& name = ""); + Account(FILE* tfile); + + 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 std::string& getName() { + return name; + }; + 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) { + campaignProgress[currentCampaign].score = s; + if (s > campaignProgress[currentCampaign].highscore) + campaignProgress[currentCampaign].highscore = s; + }; + void setCampaignFinalTime(float t) { + campaignProgress[currentCampaign].time = t; + if ((t < campaignProgress[currentCampaign].fasttime) || ((campaignProgress[currentCampaign].fasttime == 0) && (t != 0))) + campaignProgress[currentCampaign].fasttime = t; + }; + 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(const std::string& name); + +private: + //statics + static std::vector accounts; + static int i_active; + + void save(FILE* tfile); + + int difficulty; + int progress; // progress in challenge levels + float points; + float highscore[50]; + float fasttime[50]; + bool unlocked[60]; + std::string name; + + std::string currentCampaign; + std::map campaignProgress; +}; + +#endif