moar achievement stuff

git-svn-id: svn+ssh://svn.code.sf.net/p/supertuxkart/code/main/branches/uni@13612 178a84e3-b1eb-0310-8ba1-8eac791a3b58
This commit is contained in:
unitraxx 2013-08-31 02:06:56 +00:00
parent cd7e986486
commit 046269cebb
2 changed files with 49 additions and 10 deletions

View File

@ -46,16 +46,42 @@ void AchievementsManager::deallocate()
// ============================================================================
AchievementsManager::AchievementsManager()
{
parseAchievements();
parse();
}
// ============================================================================
AchievementsManager::~AchievementsManager()
{
}
// ============================================================================
void AchievementsManager::save()
{
std::string filename = file_manager->getConfigDir() + ("/challenges.xml");
std::ofstream achievements_file(filename.c_str(), std::ios::out);
if (!achievements_file.is_open())
{
Log::warn("AchievementsManager::save",
"Failed to open '%s' for writing, achievements won't be saved\n",
filename.c_str());
return;
}
achievements_file << "<?xml version=\"1.0\"?>\n";
achievements_file << "<achievements>\n";
for (int i = 0; i < m_slots.size(); i++)
{
m_slots[i].save();
}
achievements_file << "</achievements>\n\n";
achievements_file.close();
}
// ============================================================================
void AchievementsManager::parseAchievements()
void AchievementsManager::AchievementsSlot::parse()
{
const std::string file_name = file_manager->getDataFile("items.xml");
const XMLNode *root = file_manager->createXMLTree(file_name);

View File

@ -35,17 +35,30 @@
*/
class AchievementsManager
{
private :
private:
AchievementsManager ();
~AchievementsManager ();
void parseAchievements();
class AchievementsSlot
{
std::map<uint32_t, * Achievement> m_achievements;
public :
void parse();
void load();
void save();
};
std::vector<AchievementsSlot> m_slots;
AchievementsManager ();
~AchievementsManager ();
public:
/**Singleton */
static AchievementsManager * get();
static void deallocate();
public:
/**Singleton */
static AchievementsManager * get();
static void deallocate();
void parse();
void save();
void load();
}; // class AchievementsManager
#endif