fixed a memory leak. Not sure how it got introduced but the destructor for DeckManager now does the heavy lifting for memory cleanup and not the static method EndInstance().
reorganized DeckMetaData method LoadDeck so that it appears underneath the constructor.
This commit is contained in:
@@ -164,33 +164,7 @@ bool DeckManager::instanceFlag = false;
|
||||
|
||||
void DeckManager::EndInstance()
|
||||
{
|
||||
if (mInstance)
|
||||
{
|
||||
|
||||
map<string, StatsWrapper *>::iterator it;
|
||||
vector<DeckMetaData *>::iterator metaDataIter;
|
||||
|
||||
for (it = mInstance->aiDeckStatsMap.begin(); it != mInstance->aiDeckStatsMap.end(); it++){
|
||||
SAFE_DELETE(it->second);
|
||||
}
|
||||
for (it = mInstance->playerDeckStatsMap.begin(); it != mInstance->playerDeckStatsMap.end(); it++){
|
||||
SAFE_DELETE(it->second);
|
||||
}
|
||||
|
||||
for( metaDataIter = mInstance->aiDeckOrderList.begin(); metaDataIter != mInstance->aiDeckOrderList.end(); ++metaDataIter)
|
||||
{
|
||||
SAFE_DELETE( *metaDataIter );
|
||||
}
|
||||
for( metaDataIter = mInstance->playerDeckOrderList.begin(); metaDataIter != mInstance->playerDeckOrderList.end(); ++metaDataIter)
|
||||
{
|
||||
SAFE_DELETE( *metaDataIter );
|
||||
}
|
||||
mInstance->aiDeckOrderList.clear();
|
||||
mInstance->playerDeckOrderList.clear();
|
||||
mInstance->aiDeckStatsMap.clear();
|
||||
mInstance->playerDeckStatsMap.clear();
|
||||
SAFE_DELETE( mInstance );
|
||||
}
|
||||
SAFE_DELETE(mInstance);
|
||||
}
|
||||
|
||||
DeckManager* DeckManager::GetInstance()
|
||||
@@ -215,4 +189,28 @@ int DeckManager::getDifficultyRating(Player *statsPlayer, Player *player)
|
||||
DeckManager::~DeckManager()
|
||||
{
|
||||
instanceFlag = false;
|
||||
map<string, StatsWrapper *>::iterator it;
|
||||
vector<DeckMetaData *>::iterator metaDataIter;
|
||||
|
||||
for (it = mInstance->aiDeckStatsMap.begin(); it != mInstance->aiDeckStatsMap.end(); it++){
|
||||
SAFE_DELETE(it->second);
|
||||
}
|
||||
for (it = mInstance->playerDeckStatsMap.begin(); it != mInstance->playerDeckStatsMap.end(); it++){
|
||||
SAFE_DELETE(it->second);
|
||||
}
|
||||
|
||||
for( metaDataIter = mInstance->aiDeckOrderList.begin(); metaDataIter != mInstance->aiDeckOrderList.end(); ++metaDataIter)
|
||||
{
|
||||
SAFE_DELETE( *metaDataIter );
|
||||
}
|
||||
|
||||
for( metaDataIter = mInstance->playerDeckOrderList.begin(); metaDataIter != mInstance->playerDeckOrderList.end(); ++metaDataIter)
|
||||
{
|
||||
SAFE_DELETE( *metaDataIter );
|
||||
}
|
||||
|
||||
aiDeckOrderList.clear();
|
||||
playerDeckOrderList.clear();
|
||||
aiDeckStatsMap.clear();
|
||||
playerDeckStatsMap.clear();
|
||||
}
|
||||
|
||||
@@ -21,6 +21,30 @@ DeckMetaData::DeckMetaData(const string& filename, bool isAI)
|
||||
LoadDeck();
|
||||
}
|
||||
|
||||
|
||||
void DeckMetaData::LoadDeck()
|
||||
{
|
||||
if (!mDeckLoaded)
|
||||
{
|
||||
MTGDeck deck(mFilename.c_str(), NULL, 1);
|
||||
mName = trim(deck.meta_name);
|
||||
mDescription = trim(deck.meta_desc);
|
||||
mDeckId = atoi((mFilename.substr(mFilename.find("deck") + 4, mFilename.find(".txt"))).c_str());
|
||||
mDeckLoaded = true;
|
||||
if (!mIsAI)
|
||||
mAvatarFilename = "avatar.jpg";
|
||||
else
|
||||
{
|
||||
ostringstream avatarFilename;
|
||||
avatarFilename << "avatar" << getAvatarId() << ".jpg";
|
||||
mAvatarFilename = avatarFilename.str();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
void DeckMetaData::LoadStats()
|
||||
{
|
||||
if (!mStatsLoaded)
|
||||
@@ -73,28 +97,6 @@ int DeckMetaData::getAvatarId()
|
||||
return mDeckId % 100;
|
||||
}
|
||||
|
||||
void DeckMetaData::LoadDeck()
|
||||
{
|
||||
if (!mDeckLoaded)
|
||||
{
|
||||
MTGDeck deck(mFilename.c_str(), NULL, 1);
|
||||
mName = trim(deck.meta_name);
|
||||
mDescription = trim(deck.meta_desc);
|
||||
mDeckId = atoi((mFilename.substr(mFilename.find("deck") + 4, mFilename.find(".txt"))).c_str());
|
||||
mDeckLoaded = true;
|
||||
if (!mIsAI)
|
||||
mAvatarFilename = "avatar.jpg";
|
||||
else
|
||||
{
|
||||
ostringstream avatarFilename;
|
||||
avatarFilename << "avatar" << getAvatarId() << ".jpg";
|
||||
mAvatarFilename = avatarFilename.str();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
//Accessors
|
||||
|
||||
string DeckMetaData::getFilename()
|
||||
|
||||
Reference in New Issue
Block a user