Minor refactor of menu text for "move" abilities. Zeth, Dr.Solomat, please let me know if something goes wrong.

This commit is contained in:
wagic.the.homebrew
2011-05-06 04:43:27 +00:00
parent 12228b51a0
commit efad3f652f
2 changed files with 68 additions and 131 deletions

View File

@@ -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<AAMover *>(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

View File

@@ -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<AAMover *>(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();