diff --git a/projects/mtg/include/DuelLayers.h b/projects/mtg/include/DuelLayers.h index 45310d6c1..6f8f11f60 100644 --- a/projects/mtg/include/DuelLayers.h +++ b/projects/mtg/include/DuelLayers.h @@ -32,7 +32,7 @@ public: ActionStack * stackLayer(); void init(); virtual void Update(float dt, Player * player); - + void CheckUserInput(int isAI); void Render(); void Add(GuiLayer * layer); void Remove(); diff --git a/projects/mtg/include/TestSuiteAI.h b/projects/mtg/include/TestSuiteAI.h index 4aaf37973..9a423fd2d 100644 --- a/projects/mtg/include/TestSuiteAI.h +++ b/projects/mtg/include/TestSuiteAI.h @@ -80,6 +80,7 @@ class TestSuiteAI:public AIPlayer{ public: TestSuite * suite; float timer; + int humanMode; TestSuiteAI(TestSuite * suite, int playerId); virtual int Act(float dt); virtual int displayStack(){return 1;} diff --git a/projects/mtg/src/DuelLayers.cpp b/projects/mtg/src/DuelLayers.cpp index 66bf01947..561fa9bb2 100644 --- a/projects/mtg/src/DuelLayers.cpp +++ b/projects/mtg/src/DuelLayers.cpp @@ -43,12 +43,8 @@ void DuelLayers::init(){ Add(NEW GuiBackground()); } -void DuelLayers::Update(float dt, Player * currentPlayer) -{ - for (int i = 0; i < nbitems; ++i) objects[i]->Update(dt); - int isAI = currentPlayer->isAI(); +void DuelLayers::CheckUserInput(int isAI){ u32 key; - GameObserver * game = GameObserver::GetInstance(); while ((key = JGE::GetInstance()->ReadButton())){ if ((!isAI) && (0 != key)) { @@ -59,7 +55,16 @@ void DuelLayers::Update(float dt, Player * currentPlayer) if (cs->CheckUserInput(key)) break; } } +} + +void DuelLayers::Update(float dt, Player * currentPlayer) +{ + for (int i = 0; i < nbitems; ++i) objects[i]->Update(dt); + int isAI = currentPlayer->isAI(); + GameObserver * game = GameObserver::GetInstance(); if (isAI) currentPlayer->Act(dt); + + CheckUserInput(isAI); } ActionStack * DuelLayers::stackLayer(){ diff --git a/projects/mtg/src/TestSuiteAI.cpp b/projects/mtg/src/TestSuiteAI.cpp index c478fa04a..a64dbfd18 100644 --- a/projects/mtg/src/TestSuiteAI.cpp +++ b/projects/mtg/src/TestSuiteAI.cpp @@ -10,7 +10,8 @@ using std::string; TestSuiteAI::TestSuiteAI(TestSuite * _suite, int playerId):AIPlayer(_suite->buildDeck(playerId),"testsuite", "testsuite"){ suite = _suite; - timer= 0; + timer = 0; + humanMode = 0; mAvatarTex = JRenderer::GetInstance()->LoadTexture("ai/baka/avatar.jpg", TEX_TYPE_USE_VRAM); if (mAvatarTex){ mAvatar = NEW JQuad(mAvatarTex, 0, 0, 35, 50); @@ -58,6 +59,12 @@ Interruptible * TestSuite::getActionByMTGId(int mtgid){ int TestSuiteAI::Act(float dt){ GameObserver * g = GameObserver::GetInstance(); g->gameOver = NULL; // Prevent draw rule from losing the game + if (humanMode){ + g->mLayers->CheckUserInput(0); + return 1; + } + + timer+= dt; if (AManaProducer::currentlyTapping || timer < suite->timerLimit) return 1; timer = 0; @@ -89,6 +96,11 @@ int TestSuiteAI::Act(float dt){ if (g->getCurrentGamePhase() != Constants::MTG_PHASE_CLEANUP) suite->currentAction--; g->userRequestNextGamePhase(); } + else if (action.compare("human")==0){ + OutputDebugString("You have control"); + humanMode = 1; + return 1; + } else if (action.compare("next")==0){ /* if (drl->orderingIsNeeded){