Fixed issue 752.

This commit is contained in:
Xawotihs
2011-11-15 22:20:58 +00:00
parent ae3d97dbeb
commit ee700623d5
4 changed files with 28 additions and 4 deletions
+1 -2
View File
@@ -112,8 +112,7 @@ class AIPlayerBaka: public AIPlayer{
INFO_CREATURESATTACKINGPOWER INFO_CREATURESATTACKINGPOWER
}; };
vector<MTGAbility*>gotPayments; vector<MTGAbility*>gotPayments;
int deckId;
AIPlayerBaka(GameObserver *observer, string deckFile, string deckfileSmall, string avatarFile, MTGDeck * deck = NULL); AIPlayerBaka(GameObserver *observer, string deckFile, string deckfileSmall, string avatarFile, MTGDeck * deck = NULL);
virtual int Act(float dt); virtual int Act(float dt);
void initTimer(); void initTimer();
+1
View File
@@ -28,6 +28,7 @@ public:
MODE_AI MODE_AI
}; };
int deckId;
string mAvatarName; string mAvatarName;
Mode playMode; Mode playMode;
bool nomaxhandsize; bool nomaxhandsize;
+1 -1
View File
@@ -249,7 +249,7 @@ AIPlayer * AIPlayerFactory::createAIPlayer(GameObserver *observer, MTGAllCards *
} }
if (!nbdecks) if (!nbdecks)
return NULL; return NULL;
deckid = 1 + observer->getRandomGenerator()->random() % (nbdecks); deckid = 1 + WRand() % (nbdecks);
} }
sprintf(deckFile, "ai/baka/deck%i.txt", deckid); sprintf(deckFile, "ai/baka/deck%i.txt", deckid);
DeckMetaData *aiMeta = DeckManager::GetInstance()->getDeckMetaDataByFilename( deckFile, true); DeckMetaData *aiMeta = DeckManager::GetInstance()->getDeckMetaDataByFilename( deckFile, true);
+25 -1
View File
@@ -4,6 +4,8 @@
#include "GameObserver.h" #include "GameObserver.h"
#include "DeckStats.h" #include "DeckStats.h"
#include "ManaCost.h" #include "ManaCost.h"
#include "DeckMetaData.h"
#include "DeckManager.h"
#ifdef TESTSUITE #ifdef TESTSUITE
#include "TestSuiteAI.h" #include "TestSuiteAI.h"
@@ -240,8 +242,9 @@ bool Player::parseLine(const string& s)
return true; return true;
} }
else if (areaS.compare("avatar") == 0) else if (areaS.compare("avatar") == 0)
{ // We don't load directly for now {
mAvatarName = s.substr(limiter + 1); mAvatarName = s.substr(limiter + 1);
loadAvatar(mAvatarName, "bakaAvatar");
return true; return true;
} }
else if (areaS.compare("customphasering") == 0) else if (areaS.compare("customphasering") == 0)
@@ -257,6 +260,27 @@ bool Player::parseLine(const string& s)
else if (areaS.compare("deckfile") == 0) else if (areaS.compare("deckfile") == 0)
{ {
deckFile = s.substr(limiter + 1); deckFile = s.substr(limiter + 1);
if(playMode == Player::MODE_AI)
{
sscanf(deckFile.c_str(), "ai/baka/deck%i.txt", &deckId);
int deckSetting = EASY;
if ( opponent() )
{
bool isOpponentAI = opponent()->isAI() == 1;
DeckMetaData *meta = DeckManager::GetInstance()->getDeckMetaDataByFilename( opponent()->deckFile, isOpponentAI);
if ( meta && meta->getVictoryPercentage() >= 65)
deckSetting = HARD;
}
SAFE_DELETE(mDeck);
SAFE_DELETE(game);
mDeck = NEW MTGDeck(deckFile.c_str(), MTGCollection(),0, deckSetting);
game = NEW MTGPlayerCards(mDeck);
// This automatically sets the observer pointer on all the deck cards
game->setOwner(this);
deckName = mDeck->meta_name;
}
return true; return true;
} }
else if (areaS.compare("deckfilesmall") == 0) else if (areaS.compare("deckfilesmall") == 0)