X-Git-Url: https://git.jsancho.org/?a=blobdiff_plain;f=Source%2FAccount.h;h=f68c52b484e1663437e4e8f0daf1ab32f7b81b73;hb=3de67c0db8c3c74f5fb487579936a07770d253a1;hp=599384cea8a8718faaf9b4a97ee16537c1403ee0;hpb=6e5fc0433956e44ba9ae92b544e51ac15c27c451;p=lugaru.git diff --git a/Source/Account.h b/Source/Account.h index 599384c..f68c52b 100644 --- a/Source/Account.h +++ b/Source/Account.h @@ -1,23 +1,21 @@ /* Copyright (C) 2003, 2010 - Wolfire Games -Copyright (C) 2010 - Côme BERNIGAUD +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 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, +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. +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. +along with Lugaru. If not, see . */ #ifndef _Account_H_ @@ -28,70 +26,105 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. #include #include -typedef struct { - float highscore; - float fasttime; - float score; - float time; - std::vector choices; -} campaign_progress_t; +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 destroy(int i); + static Account* destroy(Account* a); + static Account* add(const std::string& name); + static Account* get(int i); + static Account* loadFile(std::string filename); + static void saveFile(std::string filename); + static int indice(Account* a); + + static Account* active; + + 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); + + static int getNbAccounts() { + return accounts.size(); + }; +private: + Account(const std::string& name = ""); + 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; -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 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; - - //statics - static std::vector accounts; + //statics + static std::vector accounts; }; #endif