diff --git a/projects/mtg/include/MTGCardInstance.h b/projects/mtg/include/MTGCardInstance.h index f379e3dba..ddffb0f22 100644 --- a/projects/mtg/include/MTGCardInstance.h +++ b/projects/mtg/include/MTGCardInstance.h @@ -129,6 +129,10 @@ class MTGCardInstance: public MTGCard, public Damageable { JSample * getSample(); ostream& toString(ostream&) const; + + static MTGCardInstance AnyCard; + static MTGCardInstance NoCard; + }; ostream& operator<<(ostream&, const MTGCardInstance&); diff --git a/projects/mtg/src/CardDescriptor.cpp b/projects/mtg/src/CardDescriptor.cpp index 87562c5d7..992023da8 100644 --- a/projects/mtg/src/CardDescriptor.cpp +++ b/projects/mtg/src/CardDescriptor.cpp @@ -112,21 +112,21 @@ MTGCardInstance * CardDescriptor::match(MTGCardInstance * card){ if (attacker == 1){ - if ((int)defenser == 1){ + if (defenser == &AnyCard){ if (!card->attacker && !card->defenser) match = NULL; }else{ if (!card->attacker) match = NULL; } }else if (attacker == -1){ - if ((int)defenser == -1){ + if (defenser == &NoCard){ if (card->attacker || card->defenser) match = NULL; }else{ if (card->attacker) match = NULL; } }else{ - if ((int)defenser == -1){ + if (defenser == &NoCard){ if (card->defenser) match = NULL; - }else if ((int)defenser == 1){ + }else if (defenser == &AnyCard){ if (!card->defenser) match = NULL; }else{ // we don't care about the attack/blocker state diff --git a/projects/mtg/src/MTGCardInstance.cpp b/projects/mtg/src/MTGCardInstance.cpp index 5b1e02a6e..16ab2bb50 100644 --- a/projects/mtg/src/MTGCardInstance.cpp +++ b/projects/mtg/src/MTGCardInstance.cpp @@ -12,6 +12,9 @@ #include using namespace std; +MTGCardInstance MTGCardInstance::AnyCard = MTGCardInstance(); +MTGCardInstance MTGCardInstance::NoCard = MTGCardInstance(); + MTGCardInstance::MTGCardInstance(): MTGCard(), Damageable(0), view(NULL){ LOG("==Creating MTGCardInstance=="); initMTGCI(); diff --git a/projects/mtg/src/TargetChooser.cpp b/projects/mtg/src/TargetChooser.cpp index d4e6c4e93..6d8054c60 100644 --- a/projects/mtg/src/TargetChooser.cpp +++ b/projects/mtg/src/TargetChooser.cpp @@ -124,9 +124,9 @@ TargetChooser * TargetChooserFactory::createTargetChooser(string s, MTGCardInsta //Blocker }else if (attribute.find("blocking") != string::npos){ if (minus){ - cd->defenser = (MTGCardInstance *)-1; //Oh yeah, that's ugly.... + cd->defenser = & MTGCardInstance::NoCard; }else{ - cd->defenser = (MTGCardInstance *)1; + cd->defenser = & MTGCardInstance::AnyCard; } //Tapped, untapped }else if (attribute.find("tapped") != string::npos){