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;