From f205de72056db7950b86fa284c7ec87df97a4817 Mon Sep 17 00:00:00 2001 From: Anthony Calosa Date: Sat, 4 Mar 2017 09:15:50 +0800 Subject: [PATCH 1/6] minor fix --- projects/mtg/bin/Res/sets/primitives/mtg.txt | 11 +++++------ projects/mtg/src/AIPlayerBaka.cpp | 9 +++++++++ 2 files changed, 14 insertions(+), 6 deletions(-) diff --git a/projects/mtg/bin/Res/sets/primitives/mtg.txt b/projects/mtg/bin/Res/sets/primitives/mtg.txt index f004096cf..4c6afb3e7 100644 --- a/projects/mtg/bin/Res/sets/primitives/mtg.txt +++ b/projects/mtg/bin/Res/sets/primitives/mtg.txt @@ -7995,7 +7995,7 @@ type=Enchantment [/card] [card] name=Awe for the Guilds -auto=all(creature[-multicolor]) cantblock ueot +auto=all(creature[-multicolor;-colorless]) cantblock ueot text=Monocolored creatures can't block this turn. mana={2}{R} type=Sorcery @@ -51183,7 +51183,7 @@ toughness=4 [/card] [card] name=Guardian of the Guildpact -auto=protection from(*[-multicolor]) +auto=protection from(*[-multicolor;-colorless]) text=Protection from monocolored mana={3}{W} type=Creature @@ -61893,8 +61893,7 @@ toughness=2 [/card] [card] name=Kavu Runner -abilities=haste -auto=aslongas(creature[blue;white]|opponentBattlefield) -haste +auto=aslongas(creature[blue;white]|opponentBattlefield) haste <1 text=Kavu Runner has haste as long as no opponent controls a white or blue creature. mana={3}{R} type=Creature @@ -115127,7 +115126,7 @@ type=Artifact [/card] [card] name=Sultai Charm -auto=choice name(Destroy monocolored) destroy target(creature[-multicolor]) +auto=choice name(Destroy monocolored) destroy target(creature[-multicolor;-colorless]) auto=choice name(destroy artifact or enchantment) destroy target(artifact,enchantment) auto=choice name(Draw 2 and discard 1) draw:2 && transforms((,newability[target(*|myhand) reject])) forever text=Choose one: -- Destroy target monocolored creature. -- Destroy target artifact or enchantment. -- Draw two cards, then discard a card. @@ -125144,7 +125143,7 @@ toughness=2 [/card] [card] name=Ultimate Price -target=creature[-multicolor] +target=creature[-multicolor;-colorless] auto=destroy text=Destroy target monocolored creature. mana={1}{B} diff --git a/projects/mtg/src/AIPlayerBaka.cpp b/projects/mtg/src/AIPlayerBaka.cpp index 20566c6ae..61323df8c 100644 --- a/projects/mtg/src/AIPlayerBaka.cpp +++ b/projects/mtg/src/AIPlayerBaka.cpp @@ -2543,6 +2543,9 @@ MTGCardInstance * AIPlayerBaka::FindCardToPlay(ManaCost * pMana, const char * ty if (card->hasType(Subtypes::TYPE_LEGENDARY) && game->inPlay->findByName(card->name)) continue; + if (card->has(Constants::TREASON) && observer->getCurrentGamePhase() != MTG_PHASE_FIRSTMAIN) + continue; + if (card->hasType(Subtypes::TYPE_PLANESWALKER) && card->types.size() > 0 && game->inPlay->hasTypeSpecificInt(Subtypes::TYPE_PLANESWALKER,card->types[1])) continue; @@ -2691,6 +2694,9 @@ MTGCardInstance * AIPlayerBaka::FindCardToPlay(ManaCost * pMana, const char * ty if (card->hasType(Subtypes::TYPE_LEGENDARY) && game->inPlay->findByName(card->name)) continue; + if (card->has(Constants::TREASON) && observer->getCurrentGamePhase() != MTG_PHASE_FIRSTMAIN) + continue; + if (card->hasType(Subtypes::TYPE_PLANESWALKER) && card->types.size() > 0 && game->inPlay->hasTypeSpecificInt(Subtypes::TYPE_PLANESWALKER,card->types[1])) continue; @@ -2838,6 +2844,9 @@ MTGCardInstance * AIPlayerBaka::FindCardToPlay(ManaCost * pMana, const char * ty if (card->hasType(Subtypes::TYPE_LEGENDARY) && game->inPlay->findByName(card->name)) continue; + if (card->has(Constants::TREASON) && observer->getCurrentGamePhase() != MTG_PHASE_FIRSTMAIN) + continue; + if (card->hasType(Subtypes::TYPE_PLANESWALKER) && card->types.size() > 0 && game->inPlay->hasTypeSpecificInt(Subtypes::TYPE_PLANESWALKER,card->types[1])) continue; From 4bf5943ac5a4a82e67faaf4b26d5d383caf5195d Mon Sep 17 00:00:00 2001 From: Anthony Calosa Date: Sun, 5 Mar 2017 19:43:49 +0800 Subject: [PATCH 2/6] show large images on grid deck view user option also forced border targets and target source --- projects/mtg/include/GameOptions.h | 1 + projects/mtg/include/MTGCardInstance.h | 2 ++ projects/mtg/src/ActionStack.cpp | 19 +++++++++++++++++++ projects/mtg/src/CardGui.cpp | 8 ++++---- projects/mtg/src/GameObserver.cpp | 2 ++ projects/mtg/src/GameStateOptions.cpp | 3 ++- projects/mtg/src/GridDeckView.cpp | 12 +++--------- projects/mtg/src/GuiPlay.cpp | 4 ++-- projects/mtg/src/MTGCardInstance.cpp | 2 ++ 9 files changed, 37 insertions(+), 16 deletions(-) diff --git a/projects/mtg/include/GameOptions.h b/projects/mtg/include/GameOptions.h index 6b2187b5b..1ac304b61 100644 --- a/projects/mtg/include/GameOptions.h +++ b/projects/mtg/include/GameOptions.h @@ -46,6 +46,7 @@ public: CHEATMODEAIDECK, OSD, BLKBORDER, + GDVLARGEIMAGE, SHOWTOKENS, CLOSEDHAND, HANDDIRECTION, diff --git a/projects/mtg/include/MTGCardInstance.h b/projects/mtg/include/MTGCardInstance.h index 782a16d3c..f1fa7e554 100644 --- a/projects/mtg/include/MTGCardInstance.h +++ b/projects/mtg/include/MTGCardInstance.h @@ -273,6 +273,8 @@ public: int cardistargetted; bool isTargetter(); int cardistargetter; + int forcedBorder; + int forcedBorder2; int myconvertedcost; ManaCost * computeNewCost(MTGCardInstance * card,ManaCost * oldCost, ManaCost * refCost,bool noTrinisphere = false); int countTrini; diff --git a/projects/mtg/src/ActionStack.cpp b/projects/mtg/src/ActionStack.cpp index fa15d1c13..7e7b5266d 100644 --- a/projects/mtg/src/ActionStack.cpp +++ b/projects/mtg/src/ActionStack.cpp @@ -241,6 +241,8 @@ void StackAbility::Render() MTGCardInstance * source = ability->source; string alt1 = source->getName(); vector mytargetQuads; + vector myClones; + int fmLibrary = 0; int force = 0; @@ -262,6 +264,9 @@ void StackAbility::Render() { if( ((Damageable *)(tt))->type_as_damageable == Damageable::DAMAGEABLE_MTGCARDINSTANCE ) { + //fill vector + myClones.push_back(((MTGCardInstance*)(tt))); + if( source->has(Constants::HIDDENFACE) && !observer->isInLibrary(((MTGCardInstance *)(tt))) ) mytargetQuads.push_back( ((Damageable *)(tt))->getIcon() ); else if ( !source->has(Constants::HIDDENFACE) ) @@ -293,6 +298,20 @@ void StackAbility::Render() } } + //setborder test + if(myClones.size()) + { + source->forcedBorder2 = 1; + for(unsigned int kk = 0; kk < myClones.size(); kk++) + { + if(myClones[kk]) + { + myClones[kk]->forcedBorder = 1; + //JRenderer::GetInstance()->DrawLine(myClones[kk]->view->actX,myClones[kk]->view->actY,source->view->actX,source->view->actY,0.5f,ARGB(120, 255, 0, 0)); + } + } + } + if(source->has(Constants::HIDDENFACE) && fmLibrary) force = MTGAbility::HIDDENVIEW; diff --git a/projects/mtg/src/CardGui.cpp b/projects/mtg/src/CardGui.cpp index 57c1bf798..30300ea2c 100644 --- a/projects/mtg/src/CardGui.cpp +++ b/projects/mtg/src/CardGui.cpp @@ -270,12 +270,12 @@ void CardGui::Render() //draw border for highlighting if (game) { - if (card && card->isTargetted() && highlightborder) + if (card && (card->isTargetted()||card->forcedBorder) && highlightborder) { highlightborder->SetColor(ARGB(95,255,0,0)); renderer->RenderQuad(highlightborder.get(), actX, actY, actT, (30 * actZ + 1) / 16, 43 * actZ / 16); } - if (card && card->isTargetter() && highlightborder) + if (card && (card->isTargetter()||card->forcedBorder2) && highlightborder) { highlightborder->SetColor(ARGB(95,0,245,0)); renderer->RenderQuad(highlightborder.get(), actX, actY, actT, (30 * actZ + 1) / 16, 43 * actZ / 16); @@ -387,7 +387,7 @@ void CardGui::Render() } } - if (card && card->isTargetted()) + if (card && (card->isTargetted()||card->forcedBorder)) { if(card->isTapped()) { @@ -399,7 +399,7 @@ void CardGui::Render() else renderer->DrawRoundRect(actX - (scale * quad->mWidth / 2)-2,actY - (scale * quad->mHeight / 2)-2, (scale * quad->mWidth)-0.02f, (scale * quad->mHeight)-0.02f, 1.8f,ARGB(250,255,0,0)); } - if (card && card->isTargetter()) + if (card && (card->isTargetter()||card->forcedBorder2)) { if(card->isTapped()) { diff --git a/projects/mtg/src/GameObserver.cpp b/projects/mtg/src/GameObserver.cpp index 73ada9315..83ccfce0f 100644 --- a/projects/mtg/src/GameObserver.cpp +++ b/projects/mtg/src/GameObserver.cpp @@ -654,6 +654,8 @@ void GameObserver::gameStateBasedEffects() { zone->cards[c]->cardistargetted = 0; zone->cards[c]->cardistargetter = 0; + zone->cards[c]->forcedBorder = 0; + zone->cards[c]->forcedBorder2 = 0; } } diff --git a/projects/mtg/src/GameStateOptions.cpp b/projects/mtg/src/GameStateOptions.cpp index 31f5ef591..d635e7d44 100644 --- a/projects/mtg/src/GameStateOptions.cpp +++ b/projects/mtg/src/GameStateOptions.cpp @@ -82,7 +82,8 @@ void GameStateOptions::Start() optionsList->Add(NEW WGuiSplit(cPrf, cThm)); optionsList->Add(cStyle); optionsList->Add(NEW WGuiButton(NEW WGuiHeader("New Profile"), -102, GameStateOptionsConst::kNewProfileID, this)); - + //show large images + optionsList->Add(NEW OptionInteger(Options::GDVLARGEIMAGE, "Show Large Images in Grid Deck View (could crash PSP!)")); optionsList->Add(NEW WDecoCheat(NEW OptionInteger(Options::CHEATMODE, "Enable Cheat Mode"))); optionsList->Add(NEW WDecoCheat(NEW OptionInteger(Options::OPTIMIZE_HAND, "Optimize Starting Hand"))); optionsList->Add(NEW WDecoCheat(NEW OptionInteger(Options::CHEATMODEAIDECK, "Unlock All Ai Decks"))); diff --git a/projects/mtg/src/GridDeckView.cpp b/projects/mtg/src/GridDeckView.cpp index d93035e15..d892ce391 100644 --- a/projects/mtg/src/GridDeckView.cpp +++ b/projects/mtg/src/GridDeckView.cpp @@ -1,3 +1,4 @@ +#include "PrecompiledHeader.h" #include "GridDeckView.h" const float GridDeckView::scroll_animation_duration = 0.3f; @@ -125,17 +126,10 @@ void GridDeckView::Render() { if (WResourceManager::Instance()->IsThreaded()) { -#if !defined (PSP) WResourceManager::Instance()->RetrieveCard(mCards[i].card, RETRIEVE_NORMAL); -#else - WResourceManager::Instance()->RetrieveCard(mCards[i].card, RETRIEVE_THUMB); -#endif } -#if !defined (PSP) - renderCard(i, 255, false, true);//for psp, use lowres images if you can. -#else - renderCard(i, 255, true, true); -#endif + bool mode = options[Options::GDVLARGEIMAGE].number?false:true; + renderCard(i, 255, mode);//WARNING FOR PSP!!! } else { diff --git a/projects/mtg/src/GuiPlay.cpp b/projects/mtg/src/GuiPlay.cpp index 1a1c581f8..e1a9f51be 100644 --- a/projects/mtg/src/GuiPlay.cpp +++ b/projects/mtg/src/GuiPlay.cpp @@ -123,7 +123,7 @@ void GuiPlay::BattleField::reset(float x, float y) } void GuiPlay::BattleField::EnstackAttacker(CardView* card) { - if(card->card->getObserver() && card->card->getObserver()->getCurrentGamePhase() == MTG_PHASE_COMBATDAMAGE) + if(card->card->getObserver() && (card->card->getObserver()->getCurrentGamePhase() >= MTG_PHASE_COMBATDAMAGE) && (card->card->getObserver()->getCurrentGamePhase() < MTG_PHASE_ENDOFTURN)) return; //card->x = CARD_WIDTH + 20 + (currentAttacker * (HORZWIDTH) / (attackers+1)); card->x = x + (CARD_WIDTH/2.5f) + baseX; @@ -140,7 +140,7 @@ void GuiPlay::BattleField::EnstackAttacker(CardView* card) } void GuiPlay::BattleField::EnstackBlocker(CardView* card) { - if(card->card->getObserver() && card->card->getObserver()->getCurrentGamePhase() == MTG_PHASE_COMBATDAMAGE) + if(card->card->getObserver() && (card->card->getObserver()->getCurrentGamePhase() >= MTG_PHASE_COMBATDAMAGE) && (card->card->getObserver()->getCurrentGamePhase() < MTG_PHASE_ENDOFTURN)) return; MTGCardInstance * c = card->card; if (!c) diff --git a/projects/mtg/src/MTGCardInstance.cpp b/projects/mtg/src/MTGCardInstance.cpp index 42946e8d8..78d18f500 100644 --- a/projects/mtg/src/MTGCardInstance.cpp +++ b/projects/mtg/src/MTGCardInstance.cpp @@ -71,6 +71,8 @@ MTGCardInstance::MTGCardInstance(MTGCard * card, MTGPlayerCards * arg_belongs_to LKItoughness = toughness; cardistargetted = 0; cardistargetter = 0; + forcedBorder = 0; + forcedBorder2 = 0; myconvertedcost = getManaCost()->getConvertedCost(); revealedLast = NULL; MadnessPlay = false; From 00da0bd0d1fc6c3976fba1eeb0a8e4817a573304 Mon Sep 17 00:00:00 2001 From: Anthony Calosa Date: Sun, 5 Mar 2017 21:28:18 +0800 Subject: [PATCH 3/6] seperate tabs Misc setting that I added --- projects/mtg/include/MTGCardInstance.h | 4 ++-- projects/mtg/src/ActionStack.cpp | 21 ++++----------------- projects/mtg/src/CardGui.cpp | 8 ++++---- projects/mtg/src/GameObserver.cpp | 4 ++-- projects/mtg/src/GameStateOptions.cpp | 14 ++++++++++---- projects/mtg/src/GuiPlay.cpp | 4 ++-- projects/mtg/src/MTGCardInstance.cpp | 4 ++-- 7 files changed, 26 insertions(+), 33 deletions(-) diff --git a/projects/mtg/include/MTGCardInstance.h b/projects/mtg/include/MTGCardInstance.h index f1fa7e554..8e8fbf735 100644 --- a/projects/mtg/include/MTGCardInstance.h +++ b/projects/mtg/include/MTGCardInstance.h @@ -273,8 +273,8 @@ public: int cardistargetted; bool isTargetter(); int cardistargetter; - int forcedBorder; - int forcedBorder2; + int forcedBorderA; + int forcedBorderB; int myconvertedcost; ManaCost * computeNewCost(MTGCardInstance * card,ManaCost * oldCost, ManaCost * refCost,bool noTrinisphere = false); int countTrini; diff --git a/projects/mtg/src/ActionStack.cpp b/projects/mtg/src/ActionStack.cpp index 7e7b5266d..eda6060d4 100644 --- a/projects/mtg/src/ActionStack.cpp +++ b/projects/mtg/src/ActionStack.cpp @@ -241,7 +241,6 @@ void StackAbility::Render() MTGCardInstance * source = ability->source; string alt1 = source->getName(); vector mytargetQuads; - vector myClones; int fmLibrary = 0; int force = 0; @@ -251,7 +250,10 @@ void StackAbility::Render() { Targetable * t = ability->getActionTc()->getNextTarget(); if (t) + { + source->forcedBorderA = 1; _target = t; + } //test vector quads @@ -264,8 +266,7 @@ void StackAbility::Render() { if( ((Damageable *)(tt))->type_as_damageable == Damageable::DAMAGEABLE_MTGCARDINSTANCE ) { - //fill vector - myClones.push_back(((MTGCardInstance*)(tt))); + ((MTGCardInstance*)(tt))->forcedBorderB = 1; if( source->has(Constants::HIDDENFACE) && !observer->isInLibrary(((MTGCardInstance *)(tt))) ) mytargetQuads.push_back( ((Damageable *)(tt))->getIcon() ); @@ -298,20 +299,6 @@ void StackAbility::Render() } } - //setborder test - if(myClones.size()) - { - source->forcedBorder2 = 1; - for(unsigned int kk = 0; kk < myClones.size(); kk++) - { - if(myClones[kk]) - { - myClones[kk]->forcedBorder = 1; - //JRenderer::GetInstance()->DrawLine(myClones[kk]->view->actX,myClones[kk]->view->actY,source->view->actX,source->view->actY,0.5f,ARGB(120, 255, 0, 0)); - } - } - } - if(source->has(Constants::HIDDENFACE) && fmLibrary) force = MTGAbility::HIDDENVIEW; diff --git a/projects/mtg/src/CardGui.cpp b/projects/mtg/src/CardGui.cpp index 30300ea2c..4ce4f7174 100644 --- a/projects/mtg/src/CardGui.cpp +++ b/projects/mtg/src/CardGui.cpp @@ -270,12 +270,12 @@ void CardGui::Render() //draw border for highlighting if (game) { - if (card && (card->isTargetted()||card->forcedBorder) && highlightborder) + if (card && (card->isTargetted()||card->forcedBorderA) && highlightborder) { highlightborder->SetColor(ARGB(95,255,0,0)); renderer->RenderQuad(highlightborder.get(), actX, actY, actT, (30 * actZ + 1) / 16, 43 * actZ / 16); } - if (card && (card->isTargetter()||card->forcedBorder2) && highlightborder) + if (card && (card->isTargetter()||card->forcedBorderB) && highlightborder) { highlightborder->SetColor(ARGB(95,0,245,0)); renderer->RenderQuad(highlightborder.get(), actX, actY, actT, (30 * actZ + 1) / 16, 43 * actZ / 16); @@ -387,7 +387,7 @@ void CardGui::Render() } } - if (card && (card->isTargetted()||card->forcedBorder)) + if (card && (card->isTargetted()||card->forcedBorderA)) { if(card->isTapped()) { @@ -399,7 +399,7 @@ void CardGui::Render() else renderer->DrawRoundRect(actX - (scale * quad->mWidth / 2)-2,actY - (scale * quad->mHeight / 2)-2, (scale * quad->mWidth)-0.02f, (scale * quad->mHeight)-0.02f, 1.8f,ARGB(250,255,0,0)); } - if (card && (card->isTargetter()||card->forcedBorder2)) + if (card && (card->isTargetter()||card->forcedBorderB)) { if(card->isTapped()) { diff --git a/projects/mtg/src/GameObserver.cpp b/projects/mtg/src/GameObserver.cpp index 83ccfce0f..f2b9ef22c 100644 --- a/projects/mtg/src/GameObserver.cpp +++ b/projects/mtg/src/GameObserver.cpp @@ -654,8 +654,8 @@ void GameObserver::gameStateBasedEffects() { zone->cards[c]->cardistargetted = 0; zone->cards[c]->cardistargetter = 0; - zone->cards[c]->forcedBorder = 0; - zone->cards[c]->forcedBorder2 = 0; + zone->cards[c]->forcedBorderA = 0; + zone->cards[c]->forcedBorderB = 0; } } diff --git a/projects/mtg/src/GameStateOptions.cpp b/projects/mtg/src/GameStateOptions.cpp index d635e7d44..5cacd7443 100644 --- a/projects/mtg/src/GameStateOptions.cpp +++ b/projects/mtg/src/GameStateOptions.cpp @@ -51,13 +51,21 @@ void GameStateOptions::Start() // optionsList->Add(NEW OptionInteger(Options::INTERRUPTMYABILITIES, "Interrupt my abilities")); //this is a dev option, not meant for standard play. uncomment if you need to see abilities you own hitting the stack. optionsList->Add(NEW OptionInteger(Options::INTERRUPT_SECONDMAIN, "Interrupt opponent's end of turn")); - optionsList->Add(NEW OptionInteger(Options::SHOWTOKENS, "Show Tokens in Editor")); optionsTabs = NEW WGuiTabMenu(); optionsTabs->Add(optionsList); + optionsList = NEW WGuiList("Misc"); + optionsList->Add(NEW WGuiHeader("Card Display Options")); + //black border + optionsList->Add(NEW OptionInteger(Options::BLKBORDER, "All Black Border")); + //show tokens in editor + optionsList->Add(NEW OptionInteger(Options::SHOWTOKENS, "Show Tokens in Editor")); + //show large images + optionsList->Add(NEW OptionInteger(Options::GDVLARGEIMAGE, "Show Large Images in Grid Deck View (could crash PSP!)")); + optionsTabs->Add(optionsList); + optionsList = NEW WGuiList("Game"); optionsList->Add(NEW WGuiHeader("Interface Options")); - optionsList->Add(NEW OptionInteger(Options::BLKBORDER, "All Black Border")); optionsList->Add(NEW WDecoEnum(NEW OptionInteger(Options::CLOSEDHAND, "Closed hand", 1, 1, 0))); optionsList->Add(NEW WDecoEnum(NEW OptionInteger(Options::HANDDIRECTION, "Hand direction", 1, 1, 0))); optionsList->Add(NEW WDecoEnum(NEW OptionInteger(Options::MANADISPLAY, "Mana display", 3, 1, 0))); @@ -82,8 +90,6 @@ void GameStateOptions::Start() optionsList->Add(NEW WGuiSplit(cPrf, cThm)); optionsList->Add(cStyle); optionsList->Add(NEW WGuiButton(NEW WGuiHeader("New Profile"), -102, GameStateOptionsConst::kNewProfileID, this)); - //show large images - optionsList->Add(NEW OptionInteger(Options::GDVLARGEIMAGE, "Show Large Images in Grid Deck View (could crash PSP!)")); optionsList->Add(NEW WDecoCheat(NEW OptionInteger(Options::CHEATMODE, "Enable Cheat Mode"))); optionsList->Add(NEW WDecoCheat(NEW OptionInteger(Options::OPTIMIZE_HAND, "Optimize Starting Hand"))); optionsList->Add(NEW WDecoCheat(NEW OptionInteger(Options::CHEATMODEAIDECK, "Unlock All Ai Decks"))); diff --git a/projects/mtg/src/GuiPlay.cpp b/projects/mtg/src/GuiPlay.cpp index e1a9f51be..20eb13367 100644 --- a/projects/mtg/src/GuiPlay.cpp +++ b/projects/mtg/src/GuiPlay.cpp @@ -123,7 +123,7 @@ void GuiPlay::BattleField::reset(float x, float y) } void GuiPlay::BattleField::EnstackAttacker(CardView* card) { - if(card->card->getObserver() && (card->card->getObserver()->getCurrentGamePhase() >= MTG_PHASE_COMBATDAMAGE) && (card->card->getObserver()->getCurrentGamePhase() < MTG_PHASE_ENDOFTURN)) + if(card->card->getObserver() && ((card->card->getObserver()->getCurrentGamePhase() >= MTG_PHASE_COMBATDAMAGE) && (card->card->getObserver()->getCurrentGamePhase() < MTG_PHASE_ENDOFTURN))) return; //card->x = CARD_WIDTH + 20 + (currentAttacker * (HORZWIDTH) / (attackers+1)); card->x = x + (CARD_WIDTH/2.5f) + baseX; @@ -140,7 +140,7 @@ void GuiPlay::BattleField::EnstackAttacker(CardView* card) } void GuiPlay::BattleField::EnstackBlocker(CardView* card) { - if(card->card->getObserver() && (card->card->getObserver()->getCurrentGamePhase() >= MTG_PHASE_COMBATDAMAGE) && (card->card->getObserver()->getCurrentGamePhase() < MTG_PHASE_ENDOFTURN)) + if(card->card->getObserver() && ((card->card->getObserver()->getCurrentGamePhase() >= MTG_PHASE_COMBATDAMAGE) && (card->card->getObserver()->getCurrentGamePhase() < MTG_PHASE_ENDOFTURN))) return; MTGCardInstance * c = card->card; if (!c) diff --git a/projects/mtg/src/MTGCardInstance.cpp b/projects/mtg/src/MTGCardInstance.cpp index 78d18f500..bba5d8be0 100644 --- a/projects/mtg/src/MTGCardInstance.cpp +++ b/projects/mtg/src/MTGCardInstance.cpp @@ -71,8 +71,8 @@ MTGCardInstance::MTGCardInstance(MTGCard * card, MTGPlayerCards * arg_belongs_to LKItoughness = toughness; cardistargetted = 0; cardistargetter = 0; - forcedBorder = 0; - forcedBorder2 = 0; + forcedBorderA = 0; + forcedBorderB = 0; myconvertedcost = getManaCost()->getConvertedCost(); revealedLast = NULL; MadnessPlay = false; From 12155f9390ed19417e372cbdda0a66d346930ac1 Mon Sep 17 00:00:00 2001 From: Anthony Calosa Date: Sun, 5 Mar 2017 21:56:54 +0800 Subject: [PATCH 4/6] forgot this --- projects/mtg/src/GameOptions.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/projects/mtg/src/GameOptions.cpp b/projects/mtg/src/GameOptions.cpp index 2d4b1c81e..7cda2985c 100644 --- a/projects/mtg/src/GameOptions.cpp +++ b/projects/mtg/src/GameOptions.cpp @@ -22,6 +22,7 @@ const string Options::optionNames[] = { "cheatmodedecks", "displayOSD", "BlackBorder", + "GDVLargeImages" "ShowTokens", "closed_hand", "hand_direction", From e5ec92ac2aa65e36c355f8242dce3697d013d907 Mon Sep 17 00:00:00 2001 From: Anthony Calosa Date: Sun, 5 Mar 2017 22:09:12 +0800 Subject: [PATCH 5/6] corrected order of options --- projects/mtg/include/GameOptions.h | 4 ++-- projects/mtg/src/GameOptions.cpp | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/projects/mtg/include/GameOptions.h b/projects/mtg/include/GameOptions.h index 1ac304b61..6f294ae21 100644 --- a/projects/mtg/include/GameOptions.h +++ b/projects/mtg/include/GameOptions.h @@ -44,10 +44,10 @@ public: CHEATMODE, OPTIMIZE_HAND, CHEATMODEAIDECK, - OSD, BLKBORDER, - GDVLARGEIMAGE, SHOWTOKENS, + GDVLARGEIMAGE, + OSD, CLOSEDHAND, HANDDIRECTION, MANADISPLAY, diff --git a/projects/mtg/src/GameOptions.cpp b/projects/mtg/src/GameOptions.cpp index 7cda2985c..c98dc850b 100644 --- a/projects/mtg/src/GameOptions.cpp +++ b/projects/mtg/src/GameOptions.cpp @@ -20,10 +20,10 @@ const string Options::optionNames[] = { "cheatmode", "optimizedhand", "cheatmodedecks", - "displayOSD", "BlackBorder", - "GDVLargeImages" "ShowTokens", + "GDVLargeImages", + "displayOSD", "closed_hand", "hand_direction", "mana_display", From 84fe9fbc74e882f4ff215ef0a2cdb9dfb6954d62 Mon Sep 17 00:00:00 2001 From: Anthony Calosa Date: Sun, 5 Mar 2017 22:38:53 +0800 Subject: [PATCH 6/6] highlight border fix all selected/targeted cards ar bordered red while the source is green border --- projects/mtg/src/ActionStack.cpp | 21 +++++++++++++++++---- projects/mtg/src/CardGui.cpp | 8 ++++---- 2 files changed, 21 insertions(+), 8 deletions(-) diff --git a/projects/mtg/src/ActionStack.cpp b/projects/mtg/src/ActionStack.cpp index eda6060d4..73baff338 100644 --- a/projects/mtg/src/ActionStack.cpp +++ b/projects/mtg/src/ActionStack.cpp @@ -241,6 +241,7 @@ void StackAbility::Render() MTGCardInstance * source = ability->source; string alt1 = source->getName(); vector mytargetQuads; + vector myClones; int fmLibrary = 0; int force = 0; @@ -250,10 +251,7 @@ void StackAbility::Render() { Targetable * t = ability->getActionTc()->getNextTarget(); if (t) - { - source->forcedBorderA = 1; _target = t; - } //test vector quads @@ -266,7 +264,8 @@ void StackAbility::Render() { if( ((Damageable *)(tt))->type_as_damageable == Damageable::DAMAGEABLE_MTGCARDINSTANCE ) { - ((MTGCardInstance*)(tt))->forcedBorderB = 1; + //fill vector + myClones.push_back(((MTGCardInstance*)(tt))); if( source->has(Constants::HIDDENFACE) && !observer->isInLibrary(((MTGCardInstance *)(tt))) ) mytargetQuads.push_back( ((Damageable *)(tt))->getIcon() ); @@ -299,6 +298,20 @@ void StackAbility::Render() } } + //setborder test + if(myClones.size()) + { + source->forcedBorderB = 1; + for(unsigned int kk = 0; kk < myClones.size(); kk++) + { + if(myClones[kk]) + { + myClones[kk]->forcedBorderA = 1; + //JRenderer::GetInstance()->DrawLine(myClones[kk]->view->actX,myClones[kk]->view->actY,source->view->actX,source->view->actY,0.5f,ARGB(120, 255, 0, 0)); + } + } + } + if(source->has(Constants::HIDDENFACE) && fmLibrary) force = MTGAbility::HIDDENVIEW; diff --git a/projects/mtg/src/CardGui.cpp b/projects/mtg/src/CardGui.cpp index 4ce4f7174..43150b45f 100644 --- a/projects/mtg/src/CardGui.cpp +++ b/projects/mtg/src/CardGui.cpp @@ -270,12 +270,12 @@ void CardGui::Render() //draw border for highlighting if (game) { - if (card && (card->isTargetted()||card->forcedBorderA) && highlightborder) + if (card && card->forcedBorderA && highlightborder) { highlightborder->SetColor(ARGB(95,255,0,0)); renderer->RenderQuad(highlightborder.get(), actX, actY, actT, (30 * actZ + 1) / 16, 43 * actZ / 16); } - if (card && (card->isTargetter()||card->forcedBorderB) && highlightborder) + if (card && card->forcedBorderB && highlightborder) { highlightborder->SetColor(ARGB(95,0,245,0)); renderer->RenderQuad(highlightborder.get(), actX, actY, actT, (30 * actZ + 1) / 16, 43 * actZ / 16); @@ -387,7 +387,7 @@ void CardGui::Render() } } - if (card && (card->isTargetted()||card->forcedBorderA)) + if (card && card->forcedBorderA) { if(card->isTapped()) { @@ -399,7 +399,7 @@ void CardGui::Render() else renderer->DrawRoundRect(actX - (scale * quad->mWidth / 2)-2,actY - (scale * quad->mHeight / 2)-2, (scale * quad->mWidth)-0.02f, (scale * quad->mHeight)-0.02f, 1.8f,ARGB(250,255,0,0)); } - if (card && (card->isTargetter()||card->forcedBorderB)) + if (card && card->forcedBorderB) { if(card->isTapped()) {