Files
wagic/projects/mtg/src/PlayerData.cpp

91 lines
2.0 KiB
C++

#include "PrecompiledHeader.h"
#include "PlayerData.h"
#include <stdio.h>
PlayerData::PlayerData()
{
init();
}
PlayerData::PlayerData(MTGAllCards * allcards)
{
init();
//COLLECTION
if (allcards) collection = NEW MTGDeck(options.profileFile(PLAYER_COLLECTION).c_str(), allcards);
}
void PlayerData::init()
{
collection = NULL;
//CREDITS
credits = 3000; //Default value
wagic::ifstream file(options.profileFile(PLAYER_SAVEFILE).c_str());
std::string s;
if (file)
{
if (std::getline(file, s))
{
credits = atoi(s.c_str());
}
else
{
//TODO error management
}
//Story Saves
while (std::getline(file, s))
{
if (!s.size()) continue;
if (s[s.size() - 1] == '\r') s.erase(s.size() - 1); //Handle DOS files
if (s.size() && s[0] == '#') continue;
size_t i = s.find_first_of("=");
if (i == string::npos) continue;
string key = s.substr(0, i);
string value = s.substr(i + 1);
if (key.size() < 3) continue;
if (key[0] != 's') continue;
key = key.substr(2);
storySaves[key] = value;
}
file.close();
}
taskList = NEW TaskList(options.profileFile(PLAYER_TASKS).c_str());
}
int PlayerData::save()
{
std::ofstream file(options.profileFile(PLAYER_SAVEFILE).c_str());
char writer[512];
if (file)
{
sprintf(writer, "%i\n", credits);
file << writer;
//Story Saves
for (map<string, string>::iterator it = storySaves.begin(); it != storySaves.end(); ++it)
{
sprintf(writer, "s %s=%s\n", it->first.c_str(), it->second.c_str());
file << writer;
}
file.close();
}
if (collection) collection->save();
taskList->save();
return 1;
}
PlayerData::~PlayerData()
{
SAFE_DELETE(collection);
SAFE_DELETE(taskList);
}