Files
wagic/projects/mtg/src/ConstraintResolver.cpp
wagic.the.homebrew@gmail.com dd7c307c7a Erwan
-Fix issue 107 as well as another issue with doesnotuntap mentioned by leungcl
-Changed wording for Paralyzing Graps (to match oracle), please verify
2009-10-25 14:01:25 +00:00

43 lines
1009 B
C++

#include "../include/config.h"
#include "../include/ConstraintResolver.h"
int ConstraintResolver::untap(GameObserver * game, MTGCardInstance * card){
if (!card->isUntapping()){
return 0;
}
if (card->has(Constants::DOESNOTUNTAP)) return 0;
int ok = 1;
ManaCost * untapManaCost = NEW ManaCost();
UntapBlockers * blockers = card->getUntapBlockers();
UntapBlocker * blocker;
blockers->rewind();
Player * player = game->currentPlayer;
while ((blocker = blockers->next())){
#if defined (WIN32) || defined (LINUX)
char buf[4096];
sprintf(buf, "next\n");
OutputDebugString(buf);
#endif
untapManaCost->add(blocker->untapManaCost());
}
if (player->getManaPool()->canAfford(untapManaCost)){
blockers->rewind();
while ((blocker = blockers->next())){
if (!blocker->unblock()){
ok = 0;
break;
}
}
}else{
ok = 0;
}
if (ok) {
player->getManaPool()->pay(untapManaCost);
card->attemptUntap();
}
delete untapManaCost;
return ok;
}