From efad3f652fe05d00121c91bbefd692f68c4935e8 Mon Sep 17 00:00:00 2001 From: "wagic.the.homebrew" Date: Fri, 6 May 2011 04:43:27 +0000 Subject: [PATCH] Minor refactor of menu text for "move" abilities. Zeth, Dr.Solomat, please let me know if something goes wrong. --- projects/mtg/include/AllAbilities.h | 79 ++---------------- projects/mtg/src/AllAbilities.cpp | 120 +++++++++++++++------------- 2 files changed, 68 insertions(+), 131 deletions(-) diff --git a/projects/mtg/include/AllAbilities.h b/projects/mtg/include/AllAbilities.h index ec0561795..1122844cc 100644 --- a/projects/mtg/include/AllAbilities.h +++ b/projects/mtg/include/AllAbilities.h @@ -994,6 +994,7 @@ public: MTGGameZone * destinationZone(Targetable * target = NULL); int resolve(); const char * getMenuText(); + const char * AAMover::getMenuText(TargetChooser * fromTc); AAMover * clone() const; }; @@ -2248,81 +2249,11 @@ public: const char * getMenuText() { + //Special case for move if (AAMover * move = dynamic_cast(ability)) - { - MTGGameZone * dest = move->destinationZone(); - GameObserver * g = GameObserver::GetInstance(); - for (int i = 0; i < 2; i++) - { - // Move card to hand - if (dest == g->players[i]->game->hand) - { - if (tc->targetsZone(g->players[i]->game->inPlay)) - { - return "Bounce"; - } - else if (tc->targetsZone(g->players[i]->game->graveyard)) - { - return "Reclaim"; - } - else if (tc->targetsZone(g->opponent()->game->hand)) - { - return "Steal"; - } - } - // Move card to graveyard - else if (dest == g->players[i]->game->graveyard) - { - if (tc->targetsZone(g->players[i]->game->inPlay)) - { - return "Sacrifice"; - } - else if (tc->targetsZone(g->players[i]->game->hand)) - { - return "Discard"; - } - else if (tc->targetsZone(g->opponent()->game->hand)) - { - return "Opponent Discards"; - } - } - // move card to library - else if (dest == g->players[i]->game->library) - { - if (tc->targetsZone(g->players[i]->game->graveyard)) - { - return "Recycle"; - } - else - { - return "Put in Library"; - } - } - // move card to battlefield - else if (dest == g->players[i]->game->battlefield && tc->targetsZone(g->players[i]->game->graveyard)) - { - return "Reanimate"; - } - // move card in play ( different from battlefield? ) - else if (dest == g->players[i]->game->inPlay) - { - return "Put in Play"; - } - // move card into exile - else if (dest == g->players[i]->game->exile) - { - return "Exile"; - } - // move card from Library - else if (tc->targetsZone(g->players[i]->game->library)) - { - return "Fetch"; - } - } - return "Move"; - } - else - return ability->getMenuText(); + return move->getMenuText(tc); + + return ability->getMenuText(); } ALord * clone() const diff --git a/projects/mtg/src/AllAbilities.cpp b/projects/mtg/src/AllAbilities.cpp index ef19ee47c..6b86d0e18 100644 --- a/projects/mtg/src/AllAbilities.cpp +++ b/projects/mtg/src/AllAbilities.cpp @@ -1671,6 +1671,67 @@ const char * AAMover::getMenuText() return "Move"; } +const char * AAMover::getMenuText(TargetChooser * tc) +{ + GameObserver * g = GameObserver::GetInstance(); + MTGGameZone * dest = destinationZone(); + + for (int i = 0; i < 2; i++) + { + // Move card to hand + if (dest == g->players[i]->game->hand) + { + if (tc->targetsZone(g->players[i]->game->inPlay)) + return "Bounce"; + if (tc->targetsZone(g->players[i]->game->graveyard)) + return "Reclaim"; + if (tc->targetsZone(g->opponent()->game->hand)) + return "Steal"; + } + + // Move card to graveyard + else if (dest == g->players[i]->game->graveyard) + { + if (tc->targetsZone(g->players[i]->game->inPlay)) + return "Sacrifice"; + if (tc->targetsZone(g->players[i]->game->hand)) + return "Discard"; + if (tc->targetsZone(g->opponent()->game->hand)) + return "Opponent Discards"; + } + + // move card to library + else if (dest == g->players[i]->game->library) + { + if (tc->targetsZone(g->players[i]->game->graveyard)) + return "Recycle"; + return "Put in Library"; + } + + // move card to battlefield + else if (dest == g->players[i]->game->battlefield) + { + if (tc->targetsZone(g->players[i]->game->graveyard)) + return "Reanimate"; + return "Put in Play"; + } + + // move card into exile + else if (dest == g->players[i]->game->exile) + { + return "Exile"; + } + + // move card from Library + else if (tc->targetsZone(g->players[i]->game->library)) + { + return "Fetch"; + } + } + + return "Move"; +} + AAMover * AAMover::clone() const { AAMover * a = NEW AAMover(*this); @@ -2153,65 +2214,10 @@ const char * GenericTargetAbility::getMenuText() if (newName.size()) return newName.c_str(); + //Special case for move MTGAbility * core = AbilityFactory::getCoreAbility(ability); if (AAMover * move = dynamic_cast(core)) - { - MTGGameZone * dest = move->destinationZone(); - GameObserver * g = GameObserver::GetInstance(); - for (int i = 0; i < 2; i++) - { - if (dest == g->players[i]->game->hand && tc->targetsZone(g->players[i]->game->inPlay)) - { - return "Bounce"; - } - else if (dest == g->players[i]->game->hand && tc->targetsZone(g->players[i]->game->graveyard)) - { - return "Reclaim"; - } - else if (dest == g->players[i]->game->graveyard && tc->targetsZone(g->players[i]->game->inPlay)) - { - return "Sacrifice"; - } - else if (dest == g->players[i]->game->library && tc->targetsZone(g->players[i]->game->graveyard)) - { - return "Recycle"; - } - else if (dest == g->players[i]->game->battlefield && tc->targetsZone(g->players[i]->game->graveyard)) - { - return "Reanimate"; - } - else if ((tc->targetsZone(g->players[i]->game->inPlay) - && dest == g->players[i]->game->library) - || dest == g->players[i]->game->library) - { - return "Put in Library"; - } - else if (dest == g->players[i]->game->inPlay) - { - return "Put in Play"; - } - else if (dest == g->players[i]->game->graveyard && tc->targetsZone(g->players[i]->game->hand)) - { - return "Discard"; - } - else if (dest == g->players[i]->game->exile) - { - return "Exile"; - } - else if (tc->targetsZone(g->players[i]->game->library)) - { - return "Fetch"; - } - else if (dest == g->players[i]->game->hand && tc->targetsZone(g->opponent()->game->hand)) - { - return "Steal"; - } - else if (dest == g->players[i]->game->graveyard && tc->targetsZone(g->opponent()->game->hand)) - { - return "Opponent Discards"; - } - } - } + return (move->getMenuText(tc)); return ability->getMenuText();