initializespatch fix for issue 459. This patch encapsulates the metadata object more and initializes the stat values.

This commit is contained in:
techdragon.nguyen
2010-09-24 11:27:34 +00:00
parent f7d2b774e3
commit 5eab87345a
5 changed files with 128 additions and 69 deletions

View File

@@ -22,64 +22,50 @@ DeckMetaData::DeckMetaData(string filename, Player * statsPlayer){
void DeckMetaData::loadStatsForPlayer( Player * statsPlayer, string deckStatsFileName )
{
DeckStats * stats = DeckStats::GetInstance();
if ( statsPlayer )
DeckStats * stats = DeckStats::GetInstance();
if ( statsPlayer )
{
stats->load(statsPlayer);
DeckStat * opponentDeckStats = stats->getDeckStat(deckStatsFileName);
if ( opponentDeckStats )
{
stats->load(statsPlayer);
DeckStat * opponentDeckStats = stats->getDeckStat(deckStatsFileName);
if ( opponentDeckStats )
_percentVictories = stats->percentVictories(deckStatsFileName);
_victories = opponentDeckStats->victories;
_nbGamesPlayed = opponentDeckStats->nbgames;
if (_percentVictories < 34)
{
percentVictories = stats->percentVictories(deckStatsFileName);
victories = opponentDeckStats->victories;
nbGamesPlayed = opponentDeckStats->nbgames;
if (percentVictories < 34){
difficulty = HARD;
}else if (percentVictories < 67){
difficulty = NORMAL;
}else{
difficulty = EASY;
}
_difficulty = HARD;
}
else if (_percentVictories < 67)
{
_difficulty = NORMAL;
}
else
{
_difficulty = EASY;
}
}
else
{
if(fileExists(deckStatsFileName.c_str())){
stats->load(deckStatsFileName.c_str());
nbGamesPlayed = stats->nbGames();
percentVictories = stats->percentVictories();
}
}
else
{
if(fileExists(deckStatsFileName.c_str())){
stats->load(deckStatsFileName.c_str());
_nbGamesPlayed = stats->nbGames();
_percentVictories = stats->percentVictories();
}
}
stats = NULL;
}
string DeckMetaData::getDescription()
{
char deckDesc[512];
string difficultyString = "";
switch( difficulty )
{
case HARD:
difficultyString = "Hard";
break;
case EASY:
difficultyString = "Easy";
break;
}
if ( nbGamesPlayed > 0 && difficultyString != "")
sprintf(deckDesc, "Difficulty: %s\nVictory %%: %i\nGames Played: %i\n\n%s", difficultyString.c_str(), percentVictories, nbGamesPlayed, desc.c_str() );
else if ( nbGamesPlayed > 0 )
sprintf(deckDesc, "Victory %%: %i\nGames Played: %i\n\n%s", percentVictories, nbGamesPlayed, desc.c_str() );
else
return desc.c_str();
return deckDesc;
}
void DeckMetaData::load(string filename){
MTGDeck * mtgd = NEW MTGDeck(filename.c_str(),NULL,1);
name = trim( mtgd->meta_name );
desc = trim( mtgd->meta_desc );
deckid = atoi( (filename.substr( filename.find("deck") + 4, filename.find(".txt") )).c_str() );
_name = trim( mtgd->meta_name );
_desc = trim( mtgd->meta_desc );
_deckid = atoi( (filename.substr( filename.find("deck") + 4, filename.find(".txt") )).c_str() );
_percentVictories = 0;
_nbGamesPlayed = 0;
_filename = filename;
_victories = 0;
delete(mtgd);
}
@@ -99,7 +85,6 @@ void DeckMetaDataList::invalidate(string filename){
}
}
DeckMetaData * DeckMetaDataList::get(string filename, Player * statsPlayer){
map<string,DeckMetaData *>::iterator it = values.find(filename);
if (it ==values.end()){
@@ -111,4 +96,64 @@ DeckMetaData * DeckMetaDataList::get(string filename, Player * statsPlayer){
return values[filename]; //this creates a NULL entry if the file does not exist
}
//Accessors
string DeckMetaData::getFilename()
{
return _filename;
}
string DeckMetaData::getName()
{
return _name;
}
int DeckMetaData::getDeckId()
{
return _deckid;
}
int DeckMetaData::getGamesPlayed()
{
return _nbGamesPlayed;
}
int DeckMetaData::getVictories()
{
return _victories;
}
int DeckMetaData::getVictoryPercentage()
{
return _percentVictories;
}
int DeckMetaData::getDifficulty()
{
return _difficulty;
}
string DeckMetaData::getDescription()
{
char deckDesc[512];
string difficultyString = "";
switch( _difficulty )
{
case HARD:
difficultyString = "Hard";
break;
case EASY:
difficultyString = "Easy";
break;
}
if ( _nbGamesPlayed > 0 && difficultyString != "")
sprintf(deckDesc, "Deck: %s\nDifficulty: %s\nVictory %%: %i\nGames Played: %i\n\n%s", _name.c_str(), difficultyString.c_str(), _percentVictories, _nbGamesPlayed, _desc.c_str() );
else if ( _nbGamesPlayed > 0 )
sprintf(deckDesc, "Deck: %s\nVictory %%: %i\nGames Played: %i\n\n%s", _name.c_str(), _percentVictories, _nbGamesPlayed, _desc.c_str() );
else
sprintf(deckDesc, "Deck: %s\n\n%s", _name.c_str(), _desc.c_str() );
return deckDesc;
}