From 066c40d9c1001e224cd9271098d81d4adfbb4eac Mon Sep 17 00:00:00 2001 From: zethfoxster Date: Wed, 6 Jul 2016 22:04:59 -0400 Subject: [PATCH] close library, exile, or graveyard after we "move" cards from it. --- projects/mtg/include/GameObserver.h | 1 + projects/mtg/src/GameObserver.cpp | 1 + projects/mtg/src/GuiStatic.cpp | 2 ++ projects/mtg/src/MTGGameZones.cpp | 11 +++++++++++ 4 files changed, 15 insertions(+) diff --git a/projects/mtg/include/GameObserver.h b/projects/mtg/include/GameObserver.h index 03fe778c2..0e1a096eb 100644 --- a/projects/mtg/include/GameObserver.h +++ b/projects/mtg/include/GameObserver.h @@ -81,6 +81,7 @@ class GameObserver{ int oldGamePhase; TargetChooser * targetChooser; CardDisplay * OpenedDisplay; + GuiGameZone * guiOpenDisplay; DuelLayers * mLayers; ReplacementEffects *replacementEffects; vector players; //created outside diff --git a/projects/mtg/src/GameObserver.cpp b/projects/mtg/src/GameObserver.cpp index 03463f74f..78db68e96 100644 --- a/projects/mtg/src/GameObserver.cpp +++ b/projects/mtg/src/GameObserver.cpp @@ -98,6 +98,7 @@ GameObserver::GameObserver(WResourceManager *output, JGE* input) cardWaitingForTargets = NULL; mExtraPayment = NULL; OpenedDisplay = NULL; + guiOpenDisplay = NULL; gameOver = NULL; phaseRing = NULL; replacementEffects = NEW ReplacementEffects(); diff --git a/projects/mtg/src/GuiStatic.cpp b/projects/mtg/src/GuiStatic.cpp index 1ec667c15..d224a0a05 100644 --- a/projects/mtg/src/GuiStatic.cpp +++ b/projects/mtg/src/GuiStatic.cpp @@ -151,11 +151,13 @@ void GuiGameZone::toggleDisplay() { if (showCards) { + cd->zone->owner->getObserver()->guiOpenDisplay = NULL; showCards = 0; cd->zone->owner->getObserver()->OpenedDisplay = NULL; } else if(!cd->zone->owner->getObserver()->OpenedDisplay)//one display at a time please. { + cd->zone->owner->getObserver()->guiOpenDisplay = this; showCards = 1; cd->init(zone); cd->zone->owner->getObserver()->OpenedDisplay = cd; diff --git a/projects/mtg/src/MTGGameZones.cpp b/projects/mtg/src/MTGGameZones.cpp index d8b4940d1..9f4e6e572 100644 --- a/projects/mtg/src/MTGGameZones.cpp +++ b/projects/mtg/src/MTGGameZones.cpp @@ -363,6 +363,16 @@ MTGCardInstance * MTGPlayerCards::putInZone(MTGCardInstance * card, MTGGameZone if (!card->isToken) to = g->players[i]->game->exile; } + + + if (from == g->players[i]->game->library || from == g->players[i]->game->graveyard || from == g->players[i]->game->exile) + { + if (g->guiOpenDisplay) + { + g->ButtonPressed(g->guiOpenDisplay); + } + } + } //all cards that go from the hand to the graveyard is ALWAYS a discard. if ((to == g->players[0]->game->graveyard || to == g->players[1]->game->graveyard) && (from == g->players[0]->game->hand || from @@ -370,6 +380,7 @@ MTGCardInstance * MTGPlayerCards::putInZone(MTGCardInstance * card, MTGGameZone { card->discarded = true; } + //When a card is moved from inPlay to inPlay (controller change, for example), it is still the same object if ((to == g->players[0]->game->inPlay || to == g->players[1]->game->inPlay) && (from == g->players[0]->game->inPlay || from == g->players[1]->game->inPlay))