Erwan
- Reward system in Story mode (currently, either credits or random set) - Rules now accept for player 2 to start (see story mode "block" stage) - Story mode now has an autosave/autoload mechanism. This is for convenience but also to prevent people from abusing the reward mechanism too easily. - possibility to choose an avatar for both players through the rules (see example in story mode)
This commit is contained in:
@@ -5,7 +5,19 @@
|
||||
#include <string.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
|
||||
|
||||
@@ -17,23 +29,50 @@ PlayerData::PlayerData(MTGAllCards * allcards){
|
||||
}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();
|
||||
}
|
||||
|
||||
//COLLECTION
|
||||
collection = NEW MTGDeck(options.profileFile(PLAYER_COLLECTION).c_str(), allcards);
|
||||
taskList = NEW TaskList(options.profileFile(PLAYER_TASKS).c_str());
|
||||
}
|
||||
|
||||
int PlayerData::save(){
|
||||
std::ofstream file(options.profileFile(PLAYER_SAVEFILE).c_str());
|
||||
char writer[64];
|
||||
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();
|
||||
}
|
||||
collection->save();
|
||||
if (collection) collection->save();
|
||||
taskList->save();
|
||||
return 1;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user