#ifndef _TESTSUITE_AI_H_ #define _TESTSUITE_AI_H_ #ifdef TESTSUITE #define MAX_TESTSUITE_ACTIONS 100 #define MAX_TESTUITE_CARDS 100 #include "AIPlayer.h" class TestSuiteActions { public: int nbitems; string actions[MAX_TESTSUITE_ACTIONS]; void add(string action); TestSuiteActions(); void cleanup(); }; class TestSuitePlayerZone { public: int cards[MAX_TESTUITE_CARDS]; int nbitems; void add(int cardid); TestSuitePlayerZone(); void cleanup(); }; class TestSuitePlayerData { public: int life; ManaCost * manapool; TestSuitePlayerZone zones[5]; TestSuitePlayerData(); ~TestSuitePlayerData(); void cleanup(); }; class TestSuite; class TestSuiteState { public: int phase; void parsePlayerState(int playerId, string s); TestSuiteState(); TestSuitePlayerData playerData[2]; void cleanup(); }; class TestSuitePregame { public: virtual void performTest() = 0; }; class TestSuite { public: MTGAllCards* collection; int summoningSickness; bool forceAbility; int gameType; float timerLimit; unsigned int seed; int aiMaxCalls; int currentAction; TestSuiteState initState; TestSuiteState endState; TestSuiteActions actions; string files[1024]; int nbfiles; int currentfile; int nbFailed, nbTests, nbAIFailed, nbAITests; int load(const char * filename); TestSuite(const char * filename,MTGAllCards* _collection); void initGame(); void pregameTests(); int assertGame(); MTGPlayerCards * buildDeck(int playerId); string getNextAction(); Interruptible * getActionByMTGId(int mtgid); int loadNext(); void cleanup(); static int Log(const char * text); }; class TestSuiteAI:public AIPlayerBaka { public: TestSuite * suite; float timer; TestSuiteAI(TestSuite * suite, int playerId); virtual int Act(float dt); MTGCardInstance * getCard(string action); virtual int displayStack(); }; #endif #endif