initializespatch fix for issue 459. This patch encapsulates the metadata object more and initializes the stat values.
This commit is contained in:
@@ -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;
|
||||
}
|
||||
|
||||
@@ -35,11 +35,12 @@ vector<DeckMetaData *> GameState::getValidDeckMetaData( string path, string smal
|
||||
char smallDeckName[512];
|
||||
char deckDesc[512];
|
||||
sprintf(buffer, "%s/deck%i.txt",path.c_str(),nbDecks);
|
||||
if(DeckMetaData * meta = metas->get(buffer, statsPlayer)){
|
||||
|
||||
DeckMetaData * meta = metas->get(buffer, statsPlayer);
|
||||
if (meta)
|
||||
{
|
||||
found = 1;
|
||||
sprintf(smallDeckName, "%s_deck%i",smallDeckPrefix.c_str(),nbDecks);
|
||||
sprintf(deckDesc, "%s",meta->name.c_str());
|
||||
|
||||
if (statsPlayer){
|
||||
string smallDeckNameStr = string(smallDeckName);
|
||||
meta->loadStatsForPlayer( statsPlayer, smallDeckNameStr );
|
||||
@@ -47,16 +48,17 @@ vector<DeckMetaData *> GameState::getValidDeckMetaData( string path, string smal
|
||||
else
|
||||
{
|
||||
char playerStatsDeckName[512];
|
||||
|
||||
|
||||
sprintf(playerStatsDeckName, "stats/player_deck%i.txt", nbDecks);
|
||||
string deckstats = options.profileFile(playerStatsDeckName);
|
||||
meta->loadStatsForPlayer( NULL, deckstats );
|
||||
}
|
||||
|
||||
|
||||
deckDesc[16] = 0;
|
||||
retList.push_back( meta );
|
||||
nbDecks++;
|
||||
}
|
||||
meta = NULL;
|
||||
}
|
||||
|
||||
std::sort( retList.begin(), retList.end(), sortByName);
|
||||
@@ -75,7 +77,7 @@ void GameState::renderDeckMenu ( SimpleMenu * _menu, vector<DeckMetaData *> deck
|
||||
for (vector<DeckMetaData *>::iterator i = deckMetaDataList.begin(); i != deckMetaDataList.end(); i++)
|
||||
{
|
||||
DeckMetaData * deckMetaData = *i;
|
||||
string deckName = deckMetaData -> name;
|
||||
string deckName = deckMetaData -> getName();
|
||||
string deckDescription = deckMetaData -> getDescription();
|
||||
//translate decks desc
|
||||
it = t->deckValues.find(deckName);
|
||||
@@ -90,7 +92,7 @@ void GameState::renderDeckMenu ( SimpleMenu * _menu, vector<DeckMetaData *> deck
|
||||
// deck sorting routines
|
||||
bool sortByName( DeckMetaData * d1, DeckMetaData * d2 )
|
||||
{
|
||||
return strcmp( d1->name.c_str(), d2->name.c_str()) < 0;
|
||||
return strcmp( d1->getName().c_str(), d2->getName().c_str()) < 0;
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -1475,7 +1475,7 @@ void GameStateDeckViewer::ButtonPressed(int controllerId, int controlId)
|
||||
if (controlId == MENU_ITEM_NEW_DECK) // new deck option selected
|
||||
deckIdNumber = deckList->size() + 1;
|
||||
else if (deckListSize > 0 && controlId <= deckListSize)
|
||||
deckIdNumber = deckList->at(controlId - 1)->deckid;
|
||||
deckIdNumber = deckList->at(controlId - 1)-> getDeckId();
|
||||
else
|
||||
deckIdNumber = controlId;
|
||||
|
||||
|
||||
@@ -527,7 +527,7 @@ void GameStateDuel::ButtonPressed(int controllerId, int controlId) {
|
||||
break;
|
||||
}
|
||||
else if ( controlId != MENUITEM_EVIL_TWIN && aiDeckSize > 0) // evil twin
|
||||
deckNumber = deckManager->getAIDeckOrderList()->at( controlId - 1 )->deckid;
|
||||
deckNumber = deckManager->getAIDeckOrderList()->at( controlId - 1 )->getDeckId();
|
||||
|
||||
loadPlayer(1,deckNumber,1);
|
||||
OpponentsDeckid=deckNumber;
|
||||
@@ -542,7 +542,7 @@ void GameStateDuel::ButtonPressed(int controllerId, int controlId) {
|
||||
if ( controlId == MENUITEM_RANDOM_PLAYER ) // Random Player Deck Selection
|
||||
{
|
||||
vector<DeckMetaData *> * playerDeckList = deckManager->getPlayerDeckOrderList();
|
||||
deckNumber = playerDeckList->at(WRand() * 1001 % (playerDeckList->size()) )->deckid;
|
||||
deckNumber = playerDeckList->at(WRand() * 1001 % (playerDeckList->size()) )->getDeckId();
|
||||
loadPlayer( 0, deckNumber );
|
||||
deckmenu->Close();
|
||||
mGamePhase = DUEL_STATE_CHOOSE_DECK2_TO_PLAY;
|
||||
@@ -562,7 +562,7 @@ void GameStateDuel::ButtonPressed(int controllerId, int controlId) {
|
||||
if (mGamePhase == DUEL_STATE_CHOOSE_DECK1){
|
||||
vector<DeckMetaData *> * playerDeck = deckManager->getPlayerDeckOrderList();
|
||||
if ( !premadeDeck && controlId > 0 )
|
||||
deckNumber = playerDeck->at( controlId - 1 )->deckid;
|
||||
deckNumber = playerDeck->at( controlId - 1 )->getDeckId();
|
||||
loadPlayer(0,deckNumber);
|
||||
deckmenu->Close();
|
||||
mGamePhase = DUEL_STATE_CHOOSE_DECK1_TO_2;
|
||||
|
||||
Reference in New Issue
Block a user