diff --git a/projects/mtg/include/MTGPack.h b/projects/mtg/include/MTGPack.h index 7d3055eb1..d023e94c0 100644 --- a/projects/mtg/include/MTGPack.h +++ b/projects/mtg/include/MTGPack.h @@ -5,6 +5,7 @@ class ShopBooster; class MTGPackEntry{ public: + virtual ~MTGPackEntry() {}; virtual int addCard(WSrcCards * pool,MTGDeck * to) = 0; int copies; }; diff --git a/projects/mtg/src/MTGDeck.cpp b/projects/mtg/src/MTGDeck.cpp index 912370e3f..ff253743d 100644 --- a/projects/mtg/src/MTGDeck.cpp +++ b/projects/mtg/src/MTGDeck.cpp @@ -845,8 +845,7 @@ int MTGSets::size(){ //MTGSetInfo MTGSetInfo::~MTGSetInfo(){ - if(mPack != MTGPacks::getDefault()) - SAFE_DELETE(mPack); + SAFE_DELETE(mPack); } MTGSetInfo::MTGSetInfo(string _id) { string whitespaces (" \t\f\v\n\r"); diff --git a/projects/mtg/src/MTGPack.cpp b/projects/mtg/src/MTGPack.cpp index 430f1e6cb..9c4c38ccf 100644 --- a/projects/mtg/src/MTGPack.cpp +++ b/projects/mtg/src/MTGPack.cpp @@ -52,6 +52,8 @@ int MTGPackSlot::add(WSrcCards * ocean, MTGDeck *to, int carryover){ fails = entries[pos]->addCard(myPool,to); #endif } + if(myPool != ocean) + SAFE_DELETE(myPool); return fails; } @@ -232,7 +234,7 @@ void MTGPacks::loadAll(){ if(!p->isValid()){ SAFE_DELETE(p); continue; - } + } packs.push_back(p); } closedir(mDip); @@ -277,24 +279,24 @@ MTGPack * MTGPacks::getDefault(){ if(!defaultBooster.isValid()){ defaultBooster.load(RESPATH"/packs/default_booster.txt"); defaultBooster.unlockStatus = 1; - } - if(!defaultBooster.isValid()){ - MTGPackSlot * ps = NEW MTGPackSlot(); ps->copies = 1; - ps->addEntry(NEW MTGPackEntryRandom("rarity:mythic;")); - for(int i=0;i<7;i++) - ps->addEntry(NEW MTGPackEntryRandom("rarity:rare;")); - defaultBooster.slots.push_back(ps); - ps = NEW MTGPackSlot(); ps->copies = 3; - ps->addEntry(NEW MTGPackEntryRandom("rarity:uncommon;")); - defaultBooster.slots.push_back(ps); - ps = NEW MTGPackSlot(); ps->copies = 1; - ps->addEntry(NEW MTGPackEntryRandom("rarity:land;")); - defaultBooster.slots.push_back(ps); - ps = NEW MTGPackSlot(); ps->copies = 10; - ps->addEntry(NEW MTGPackEntryRandom("rarity:common;")); - defaultBooster.slots.push_back(ps); - defaultBooster.bValid = true; - defaultBooster.unlockStatus = 1; + if(!defaultBooster.isValid()){ + MTGPackSlot * ps = NEW MTGPackSlot(); ps->copies = 1; + ps->addEntry(NEW MTGPackEntryRandom("rarity:mythic;")); + for(int i=0;i<7;i++) + ps->addEntry(NEW MTGPackEntryRandom("rarity:rare;")); + defaultBooster.slots.push_back(ps); + ps = NEW MTGPackSlot(); ps->copies = 3; + ps->addEntry(NEW MTGPackEntryRandom("rarity:uncommon;")); + defaultBooster.slots.push_back(ps); + ps = NEW MTGPackSlot(); ps->copies = 1; + ps->addEntry(NEW MTGPackEntryRandom("rarity:land;&type:basic;")); + defaultBooster.slots.push_back(ps); + ps = NEW MTGPackSlot(); ps->copies = 10; + ps->addEntry(NEW MTGPackEntryRandom("rarity:common;")); + defaultBooster.slots.push_back(ps); + defaultBooster.bValid = true; + defaultBooster.unlockStatus = 1; + } } return &defaultBooster; }