Also fixed the project includes so that we don't need to always use the indirect include path, ie: #include "../include/foo.h" -> #include "foo.h" I'm don't know much about make files - if I busted the linux build, mea culpa, but I think we're okay on that front too. For future reference, here's the most straightforward link on the topic of adding pch support to make files: http://www.mercs-eng.com/~hulud/index.php?2008/06/13/6-writing-a-good-makefile-for-a-c-project
84 lines
1.8 KiB
C++
84 lines
1.8 KiB
C++
#include "PrecompiledHeader.h"
|
|
|
|
#include "GameOptions.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
|
|
|
|
std::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);
|
|
}
|