Simplified some restriction-parsing related functions
This commit is contained in:
@@ -130,9 +130,8 @@ public:
|
|||||||
int abilitygranted;
|
int abilitygranted;
|
||||||
MTGCardInstance * source;
|
MTGCardInstance * source;
|
||||||
|
|
||||||
int parseCastRestrictions(MTGCardInstance* card, Player* player, string restrictions, string otherRestrictions);
|
static int allowedToCast(MTGCardInstance* card, Player* player);
|
||||||
int allowedToCast(MTGCardInstance* card, Player* player);
|
static int allowedToAltCast(MTGCardInstance* card, Player* player);
|
||||||
int allowedToAltCast(MTGCardInstance* card, Player* player);
|
|
||||||
MTGAbility(int id, MTGCardInstance * card);
|
MTGAbility(int id, MTGCardInstance * card);
|
||||||
MTGAbility(int id, MTGCardInstance * _source, Targetable * _target);
|
MTGAbility(int id, MTGCardInstance * _source, Targetable * _target);
|
||||||
MTGAbility(const MTGAbility& copyFromMe);
|
MTGAbility(const MTGAbility& copyFromMe);
|
||||||
@@ -453,8 +452,8 @@ private:
|
|||||||
TargetChooser * parseSimpleTC(const std::string& s, const std::string& starter, MTGCardInstance *card, bool forceNoTarget = true);
|
TargetChooser * parseSimpleTC(const std::string& s, const std::string& starter, MTGCardInstance *card, bool forceNoTarget = true);
|
||||||
|
|
||||||
public:
|
public:
|
||||||
int parseRestriction(string s);
|
static int parseRestriction(string s);
|
||||||
int parseCastRestrictions(MTGCardInstance * card = NULL,Player * player= NULL,string restrictions= "",string otherRestrictions= "");
|
static int parseCastRestrictions(MTGCardInstance * card, Player * player, string restrictions);
|
||||||
Counter * parseCounter(string s, MTGCardInstance * target, Spell * spell = NULL);
|
Counter * parseCounter(string s, MTGCardInstance * target, Spell * spell = NULL);
|
||||||
int parsePowerToughness(string s, int *power, int *toughness);
|
int parsePowerToughness(string s, int *power, int *toughness);
|
||||||
int getAbilities(vector<MTGAbility *> * v, Spell * spell, MTGCardInstance * card = NULL, int id = 0, MTGGameZone * dest = NULL);
|
int getAbilities(vector<MTGAbility *> * v, Spell * spell, MTGCardInstance * card = NULL, int id = 0, MTGGameZone * dest = NULL);
|
||||||
|
|||||||
@@ -59,34 +59,24 @@ const int kDynamicWhoIds[] = {
|
|||||||
AADynamic::DYNAMIC_ABILITY_WHO_TOSOURCE, AADynamic::DYNAMIC_ABILITY_WHO_SOURCECONTROLLER, AADynamic::DYNAMIC_ABILITY_WHO_SOURCEOPPONENT
|
AADynamic::DYNAMIC_ABILITY_WHO_TOSOURCE, AADynamic::DYNAMIC_ABILITY_WHO_SOURCECONTROLLER, AADynamic::DYNAMIC_ABILITY_WHO_SOURCEOPPONENT
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
int MTGAbility::parseCastRestrictions(MTGCardInstance * card,Player * player,string restrictions,string otherRestrictions)
|
|
||||||
{
|
|
||||||
AbilityFactory af;
|
|
||||||
return af.parseCastRestrictions(card,player,restrictions,otherRestrictions);
|
|
||||||
}
|
|
||||||
|
|
||||||
int MTGAbility::allowedToCast(MTGCardInstance * card,Player * player)
|
int MTGAbility::allowedToCast(MTGCardInstance * card,Player * player)
|
||||||
{
|
{
|
||||||
return parseCastRestrictions(card,player,card->getRestrictions(),"");
|
return AbilityFactory::parseCastRestrictions(card,player,card->getRestrictions());
|
||||||
}
|
}
|
||||||
|
|
||||||
int MTGAbility::allowedToAltCast(MTGCardInstance * card,Player * player)
|
int MTGAbility::allowedToAltCast(MTGCardInstance * card,Player * player)
|
||||||
{
|
{
|
||||||
return parseCastRestrictions(card,player,"",card->getOtherRestrictions());
|
return AbilityFactory::parseCastRestrictions(card,player,card->getOtherRestrictions());
|
||||||
}
|
}
|
||||||
|
|
||||||
int AbilityFactory::parseCastRestrictions(MTGCardInstance * card,Player * player,string restrictions,string otherRestrictions)
|
int AbilityFactory::parseCastRestrictions(MTGCardInstance * card,Player * player,string restrictions)
|
||||||
{
|
{
|
||||||
restrictions.append(otherRestrictions);
|
|
||||||
//we can do this becuase the function calls send them seperately, so one will always be empty
|
|
||||||
vector <string> restriction = split(restrictions, ',');
|
vector <string> restriction = split(restrictions, ',');
|
||||||
AbilityFactory af;
|
|
||||||
GameObserver * game = game->GetInstance();
|
GameObserver * game = game->GetInstance();
|
||||||
int cPhase = game->getCurrentGamePhase();
|
int cPhase = game->getCurrentGamePhase();
|
||||||
for(unsigned int i = 0;i < restriction.size();i++)
|
for(unsigned int i = 0;i < restriction.size();i++)
|
||||||
{
|
{
|
||||||
int checkPhaseBased = af.parseRestriction(restriction[i]);
|
int checkPhaseBased = parseRestriction(restriction[i]);
|
||||||
switch (checkPhaseBased)
|
switch (checkPhaseBased)
|
||||||
{
|
{
|
||||||
case MTGAbility::PLAYER_TURN_ONLY:
|
case MTGAbility::PLAYER_TURN_ONLY:
|
||||||
|
|||||||
Reference in New Issue
Block a user