[11313] | 1 | #include "Highscore.h" |
---|
| 2 | |
---|
| 3 | #include <vector> |
---|
| 4 | #include "core/CoreIncludes.h" |
---|
| 5 | #include "core/config/ConfigValueIncludes.h" |
---|
| 6 | #include "core/singleton/ScopedSingletonIncludes.h" |
---|
| 7 | |
---|
| 8 | namespace orxonox |
---|
| 9 | { |
---|
| 10 | |
---|
| 11 | ManageScopedSingleton(Highscore, ScopeID::ROOT, false); |
---|
| 12 | RegisterClassNoArgs(Highscore); |
---|
| 13 | |
---|
| 14 | Highscore::Highscore() |
---|
| 15 | { |
---|
| 16 | RegisterObject(Highscore); |
---|
| 17 | this->setConfigValues(); |
---|
| 18 | } |
---|
[11333] | 19 | /** |
---|
| 20 | * @brief set the config values in the orxonox.ini file |
---|
| 21 | */ |
---|
[11313] | 22 | void Highscore::setConfigValues() |
---|
| 23 | { |
---|
[11333] | 24 | SetConfigValue(highscores_, std::vector<std::string>()).description("Highscores saved as vector"); |
---|
| 25 | SetConfigValue(playerName_, "Player").description("Name of the player"); |
---|
[11315] | 26 | } |
---|
[11333] | 27 | /** |
---|
| 28 | * @brief Returns highest score of given game, if exists. |
---|
| 29 | * Else returns -1. |
---|
| 30 | */ |
---|
[11315] | 31 | int Highscore::getHighestScoreOfGame(std::string game){ |
---|
[11333] | 32 | std::string delimiter = "./."; //score save as "Playername./.game./.score" |
---|
[11315] | 33 | int best = -1; |
---|
[11333] | 34 | //check for the highest Score of given game |
---|
[11315] | 35 | for (std::string score : this->highscores_) |
---|
| 36 | { |
---|
[11333] | 37 | //filter the game string from given highscore |
---|
[11315] | 38 | score.erase(0, score.find(delimiter) + delimiter.length()); |
---|
| 39 | if(game.compare(score.substr(0,score.find(delimiter))) == 0){ |
---|
| 40 | score.erase(0, score.find(delimiter) + delimiter.length()); |
---|
| 41 | int possibleBest = std::stoi(score); |
---|
| 42 | if(possibleBest > best) best = possibleBest; |
---|
| 43 | } |
---|
| 44 | |
---|
| 45 | |
---|
| 46 | } |
---|
| 47 | |
---|
| 48 | return best; |
---|
| 49 | |
---|
[11313] | 50 | } |
---|
[11333] | 51 | /** |
---|
| 52 | * @brief stores a new highscore in the orxonox.ini file |
---|
| 53 | */ |
---|
| 54 | void Highscore::storeHighscore(std::string level, int points){ |
---|
| 55 | ModifyConfigValue(highscores_, add, playerName_+"./."+level+"./."+std::to_string(points)); |
---|
[11313] | 56 | } |
---|
[11333] | 57 | |
---|
[11313] | 58 | } |
---|