| 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 |     } | 
|---|
| 19 |     /** | 
|---|
| 20 |      * @brief set the config values in the orxonox.ini file | 
|---|
| 21 |      */ | 
|---|
| 22 |     void Highscore::setConfigValues() | 
|---|
| 23 |     { | 
|---|
| 24 |         SetConfigValue(highscores_, std::vector<std::string>()).description("Highscores saved as vector"); | 
|---|
| 25 |         SetConfigValue(playerName_, "Player").description("Name of the player"); | 
|---|
| 26 |     } | 
|---|
| 27 |     /** | 
|---|
| 28 |      * @brief Returns highest score of given game, if exists. | 
|---|
| 29 |      * Else returns -1. | 
|---|
| 30 |      */ | 
|---|
| 31 |     int Highscore::getHighestScoreOfGame(std::string game){ | 
|---|
| 32 |         std::string delimiter = "./."; //score save as "Playername./.game./.score" | 
|---|
| 33 |         int best = -1; | 
|---|
| 34 |         //check for the highest Score of given game | 
|---|
| 35 |         for (std::string score : this->highscores_) | 
|---|
| 36 |         { | 
|---|
| 37 |             //filter the game string from given highscore | 
|---|
| 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 |          | 
|---|
| 50 |     } | 
|---|
| 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)); | 
|---|
| 56 |     } | 
|---|
| 57 |      | 
|---|
| 58 | } | 
|---|