diff --git a/projects/mtg/bin/Res/graphics/white.png b/projects/mtg/bin/Res/graphics/white.png new file mode 100644 index 000000000..ecc2538e4 Binary files /dev/null and b/projects/mtg/bin/Res/graphics/white.png differ diff --git a/projects/mtg/bin/Res/test/_tests.txt b/projects/mtg/bin/Res/test/_tests.txt index cc0e0ab81..0bf94df60 100644 --- a/projects/mtg/bin/Res/test/_tests.txt +++ b/projects/mtg/bin/Res/test/_tests.txt @@ -1,4 +1,8 @@ ######################## +#Internal tests +######################## ++pregametests +######################## #Generic engine features ######################## generic/attacks_each_turn.txt diff --git a/projects/mtg/src/CardGui.cpp b/projects/mtg/src/CardGui.cpp index e3b2f9b15..7986ea65c 100644 --- a/projects/mtg/src/CardGui.cpp +++ b/projects/mtg/src/CardGui.cpp @@ -165,6 +165,54 @@ void CardGui::Render() renderer->RenderQuad(extracostshadow.get(), actX + (actZ - 1) * 15, actY + (actZ - 1) * 15, actT, 28 * actZ / 16, 40 * actZ / 16); } + // Am I a parent of a selected card, or am I a parent and myself being selected? + bool isActiveConnectedParent = mHasFocus && card->childrenCards.size(); + if (!isActiveConnectedParent) + { + for (size_t i = 0; i < card->childrenCards.size(); ++i) + { + MTGCardInstance * child = card->childrenCards[i]; + if (CardView* cv = dynamic_cast(child->view)) + { + if (cv->mHasFocus) + { + isActiveConnectedParent = true; + break; + } + } + } + } + if (isActiveConnectedParent) + { + JQuadPtr white = WResourceManager::Instance()->GetQuad("white"); + white->SetColor(ARGB(255,230,50,50)); + renderer->RenderQuad(white.get(), actX, actY, actT, 30 * actZ / 16, 42 * actZ / 16); + } + + // Am I a child of a selected card, or am I a child and myself being selected? + bool isActiveConnectedChild = mHasFocus && card->parentCards.size(); + if (!isActiveConnectedChild) + { + for (size_t i = 0; i < card->parentCards.size(); ++i) + { + MTGCardInstance * parent = card->parentCards[i]; + if (CardView* cv = dynamic_cast(parent->view)) + { + if (cv->mHasFocus) + { + isActiveConnectedChild = true; + break; + } + } + } + } + if (isActiveConnectedChild) + { + JQuadPtr white = WResourceManager::Instance()->GetQuad("white"); + white->SetColor(ARGB(255,0,0,255)); + renderer->RenderQuad(white.get(), actX, actY, actT, 30 * actZ / 16, 42 * actZ / 16); + } + if (quad) { quad->SetColor(ARGB(static_cast(actA),255,255,255)); diff --git a/projects/mtg/src/GameApp.cpp b/projects/mtg/src/GameApp.cpp index 67ad9b331..313510fad 100644 --- a/projects/mtg/src/GameApp.cpp +++ b/projects/mtg/src/GameApp.cpp @@ -208,6 +208,7 @@ void GameApp::Create() WResourceManager::Instance()->RetrieveTexture("BattleIcon.png", RETRIEVE_MANAGE); WResourceManager::Instance()->RetrieveTexture("DefenderIcon.png", RETRIEVE_MANAGE); WResourceManager::Instance()->RetrieveTexture("shadow.png", RETRIEVE_MANAGE); + WResourceManager::Instance()->RetrieveTexture("white.png", RETRIEVE_MANAGE); WResourceManager::Instance()->RetrieveTexture("extracostshadow.png", RETRIEVE_MANAGE); WResourceManager::Instance()->RetrieveTexture("morph.jpg", RETRIEVE_MANAGE); @@ -218,6 +219,9 @@ void GameApp::Create() if (jq) jq->SetHotSpot(12, 12); jq = WResourceManager::Instance()->RetrieveQuad("shadow.png", 0, 0, 16, 16, "shadow", RETRIEVE_MANAGE); + if (jq) + jq->SetHotSpot(8, 8); + jq = WResourceManager::Instance()->RetrieveQuad("white.png", 0, 0, 16, 16, "white", RETRIEVE_MANAGE); if (jq) jq->SetHotSpot(8, 8); jq = WResourceManager::Instance()->RetrieveQuad("extracostshadow.png", 0, 0, 16, 16, "extracostshadow", RETRIEVE_MANAGE); diff --git a/projects/mtg/src/GameStateDuel.cpp b/projects/mtg/src/GameStateDuel.cpp index 91efefc1c..4a3a08481 100644 --- a/projects/mtg/src/GameStateDuel.cpp +++ b/projects/mtg/src/GameStateDuel.cpp @@ -380,7 +380,6 @@ void GameStateDuel::Update(float dt) { loadTestSuitePlayers(); setGamePhase(DUEL_STATE_PLAY); - testSuite->pregameTests(); testSuite->initGame(); } else diff --git a/projects/mtg/src/TestSuiteAI.cpp b/projects/mtg/src/TestSuiteAI.cpp index 671196af0..62e02a34e 100644 --- a/projects/mtg/src/TestSuiteAI.cpp +++ b/projects/mtg/src/TestSuiteAI.cpp @@ -576,6 +576,7 @@ TestSuite::TestSuite(const char * filename) { if (!s.size()) continue; if (s[s.size() - 1] == '\r') s.erase(s.size() - 1); //Handle DOS files + if (!s.size()) continue; if (s[0] == '/' && s[1] == '*') comment = 1; if (s[0] && s[0] != '#' && !comment) { @@ -616,7 +617,15 @@ int TestSuite::loadNext() if (!nbfiles) return 0; if (currentfile >= nbfiles) return 0; currentfile++; - if (!load(files[currentfile - 1].c_str())) + + string currFilename = files[currentfile - 1]; + if (currFilename == "+pregametests") + { + pregameTests(); + return loadNext(); + } + + if (!load(currFilename.c_str())) return loadNext(); else cout << "Starting test : " << files[currentfile - 1] << endl;