Jeck - fixed issue 354, cleaned up mixed boosters, fixed a few issues with pack loading (slot pools weren't working), fixed TSP boosters to use 'S' rarity, removed some unused code.

This commit is contained in:
wagic.jeck
2010-02-19 20:10:30 +00:00
parent c67390be88
commit afffd4509f
12 changed files with 117 additions and 89 deletions
+38 -5
View File
@@ -11,6 +11,8 @@
#include "../include/MTGPack.h"
#include "../../../JGE/src/tinyxml/tinyxml.h"
MTGPack MTGPacks::defaultBooster;
int MTGPackEntryRandom::addCard(WSrcCards *pool, MTGDeck *to){
int fails = 0;
if(!pool) return 1;
@@ -39,7 +41,7 @@ int MTGPackSlot::add(WSrcCards * ocean, MTGDeck *to, int carryover){
int amt = copies + carryover;
WSrcCards * myPool = NULL;
if(pool.size())
MTGPack::getPool(pool);
myPool = MTGPack::getPool(pool);
if(!myPool) myPool = ocean;
for(int i=0;i<amt;i++){
size_t pos = rand() % entries.size();
@@ -90,8 +92,8 @@ void MTGPackSlot::addEntry(MTGPackEntry*item){
int MTGPack::assemblePack(MTGDeck *to){
int carryover = 0;
WSrcCards * p = getPool(pool);
if(!p)
return -1;
if(!p) return -1;
p->Shuffle();
for(size_t i=0;i<slots.size();i++){
carryover = slots[i]->add(p,to,carryover);
@@ -140,7 +142,9 @@ void MTGPack::load(string filename){
holder = pPack->Attribute("pool");
if(holder) pool = holder; else pool = "";
holder = pPack->Attribute("type");
if(holder) type = holder; else type = "Booster";
if(holder){
type = holder;
}else type = "Booster";
holder = pPack->Attribute("name");
if(holder) name = holder; else name = "Special";
holder = pPack->Attribute("requires");
@@ -160,6 +164,8 @@ void MTGPack::load(string filename){
holder = pSlot->Attribute("copies");
if(holder) s->copies = atoi(holder);
else s->copies = 1;
holder = pSlot->Attribute("pool");
if(holder) s->pool = holder;
for(pEntry = pSlot->FirstChildElement();pEntry!=NULL;pEntry=pEntry->NextSiblingElement()){
tag = pEntry->Value();
@@ -221,7 +227,8 @@ void MTGPacks::loadAll(){
while ((mDit = readdir(mDip))){
char myFilename[4096];
sprintf(myFilename, RESPATH"/packs/%s", mDit->d_name);
if(myFilename[0] == '.') continue;
if(mDit->d_name[0] == '.') continue;
if(!strcmp(mDit->d_name,"default_booster.txt")) continue;
MTGPack * p = NEW MTGPack(myFilename);
if(!p->isValid()){
SAFE_DELETE(p);
@@ -267,6 +274,32 @@ bool MTGPack::isUnlocked(){
return (unlockStatus > 0);
}
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;
}
return &defaultBooster;
}
void MTGPacks::refreshUnlocked(){
for(size_t t=0;t<packs.size();t++){
if(packs[t]->unlockStatus < 0)