From 85848cfe41f8d5105a273494425ecf8afa72c492 Mon Sep 17 00:00:00 2001 From: "techdragon.nguyen@gmail.com" Date: Mon, 6 Feb 2012 09:07:37 +0000 Subject: [PATCH] resolution to issue 794. Non-classic games crashed at the completion of the game. --- projects/mtg/include/GameObserver.h | 7 ++++++- projects/mtg/include/Player.h | 5 +---- projects/mtg/src/Player.cpp | 6 ++++++ projects/mtg/src/TestSuiteAI.cpp | 2 +- 4 files changed, 14 insertions(+), 6 deletions(-) diff --git a/projects/mtg/include/GameObserver.h b/projects/mtg/include/GameObserver.h index af72f4361..87bebdcf8 100644 --- a/projects/mtg/include/GameObserver.h +++ b/projects/mtg/include/GameObserver.h @@ -28,6 +28,8 @@ using namespace std; class GameObserver{ protected: + + GameType mGameType; MTGCardInstance * cardWaitingForTargets; queue eventsQueue; // used when we're running to log actions @@ -84,10 +86,13 @@ class GameObserver{ vector players; //created outside time_t startedAt; Rules * mRules; - GameType mGameType; MTGCardInstance* ExtraRules; Trash* mTrash; + GameType gameType() const + { + return mGameType; + }; TargetChooser * getCurrentTargetChooser(); void stackObjectClicked(Interruptible * action); diff --git a/projects/mtg/include/Player.h b/projects/mtg/include/Player.h index 78dae78ba..e2b382904 100644 --- a/projects/mtg/include/Player.h +++ b/projects/mtg/include/Player.h @@ -105,10 +105,7 @@ class HumanPlayer: public Player { public: HumanPlayer(GameObserver *observer, string deckFile, string deckFileSmall, bool premade = false, MTGDeck * deck = NULL); - void End(){ - if(!premade && opponent()) - DeckStats::GetInstance()->saveStats(this, opponent(), observer); - }; + void End(); friend ostream& operator<<(ostream&, const HumanPlayer&); }; diff --git a/projects/mtg/src/Player.cpp b/projects/mtg/src/Player.cpp index e498e707c..7266982a9 100644 --- a/projects/mtg/src/Player.cpp +++ b/projects/mtg/src/Player.cpp @@ -314,6 +314,12 @@ bool Player::parseLine(const string& s) return false; } +void HumanPlayer::End() +{ + if(!premade && opponent() && (observer->gameType() == GAME_TYPE_CLASSIC)) + DeckStats::GetInstance()->saveStats(this, opponent(), observer); +} + ostream& operator<<(ostream& out, const Player& p) { out << "mode=" << p.playMode << endl; diff --git a/projects/mtg/src/TestSuiteAI.cpp b/projects/mtg/src/TestSuiteAI.cpp index 43c98b157..ef2492d9b 100644 --- a/projects/mtg/src/TestSuiteAI.cpp +++ b/projects/mtg/src/TestSuiteAI.cpp @@ -767,7 +767,7 @@ void TestSuite::ThreadProc(void* inParam) while(!theGame.observer->gameOver) theGame.observer->Update(counter++); - if(theGame.observer->mGameType != GAME_TYPE_MOMIR) + if(theGame.observer->gameType() != GAME_TYPE_MOMIR) { stringstream stream; stream << *(theGame.observer);