107 lines
2.6 KiB
C++
107 lines
2.6 KiB
C++
/*
|
|
A Filter/Mask system for Card Instances to find cards matching specific settings such as color, type, etc...
|
|
*/
|
|
|
|
#ifndef _CARDDESCRIPTOR_H_
|
|
#define _CARDDESCRIPTOR_H_
|
|
|
|
#include "MTGCardInstance.h"
|
|
#include "MTGGameZones.h"
|
|
#include "Counters.h"
|
|
|
|
enum ENUM_COMPARISON_MODES
|
|
{
|
|
COMPARISON_NONE = 0, // Needs to remain 0 for quick if(comparison_mode) checks
|
|
COMPARISON_AT_MOST,
|
|
COMPARISON_AT_LEAST,
|
|
COMPARISON_EQUAL,
|
|
COMPARISON_GREATER,
|
|
COMPARISON_LESS,
|
|
COMPARISON_UNEQUAL
|
|
};
|
|
|
|
class CardDescriptor: public MTGCardInstance
|
|
{
|
|
protected:
|
|
MTGCardInstance * match_or(MTGCardInstance * card);
|
|
MTGCardInstance * match_and(MTGCardInstance * card);
|
|
MTGCardInstance * match_not(MTGCardInstance * card);
|
|
bool valueInRange(int comparisonMode, int value, int criterion);
|
|
public:
|
|
enum Operator{
|
|
CD_OR = 1,
|
|
CD_AND = 2,
|
|
CD_NOR = 3,
|
|
CD_NAND = 4
|
|
};
|
|
|
|
Operator mode;
|
|
int powerComparisonMode;
|
|
int foretoldComparisonMode;
|
|
int kickedComparisonMode;
|
|
int toughnessComparisonMode;
|
|
int manacostComparisonMode;
|
|
int counterComparisonMode;
|
|
int convertedManacost; // might fit better into MTGCardInstance?
|
|
int zposComparisonMode;
|
|
int zposition;
|
|
int numofColorsComparisonMode;
|
|
int numofColors;
|
|
int hasKickerCost;
|
|
int hasConvokeCost;
|
|
int hasFlashbackCost;
|
|
int hasBackSide;
|
|
int modified;
|
|
int toxicity;
|
|
int hasPartner;
|
|
int hasXCost;
|
|
int anyCounter;
|
|
int init();
|
|
CardDescriptor();
|
|
void unsecureSetKicked(int k);
|
|
void unsecureSetHasKickerCost(int k);
|
|
void unsecureSetHasConvokeCost(int k);
|
|
void unsecureSetHasFlashbackCost(int k);
|
|
void unsecureSetHasBackSide(int k);
|
|
void unsecureSetModified(int k);
|
|
void unsecureSetHasToxic(int k);
|
|
void unsecureSetHasPartner(int k);
|
|
void unsecureSetTapped(int i);
|
|
void unsecuresetfresh(int k);
|
|
void unsecuresetrecent(int j);
|
|
void setisMultiColored(int w);
|
|
void setNegativeSubtype( string value);
|
|
int counterPower;
|
|
int counterToughness;
|
|
int counterNB;
|
|
string counterName;
|
|
MTGCardInstance * match(MTGCardInstance * card);
|
|
MTGCardInstance * match(MTGGameZone * zone);
|
|
MTGCardInstance * nextmatch(MTGGameZone * zone, MTGCardInstance * previous);
|
|
|
|
void SetExclusionColor(int _color, int removeAllOthers = 0);
|
|
|
|
uint8_t mColorExclusions;
|
|
BasicAbilitiesSet mAbilityExclusions;
|
|
|
|
int nameComparisonMode;
|
|
int colorComparisonMode;
|
|
string compareName;
|
|
int CDopponentDamaged;
|
|
int CDcontrollerDamaged;
|
|
int CDdamager;
|
|
int CDgeared;
|
|
int CDdiscarded;
|
|
int CDattached;
|
|
int CDblocked;
|
|
int CDcanProduceC;
|
|
int CDcanProduceG;
|
|
int CDcanProduceU;
|
|
int CDcanProduceR;
|
|
int CDcanProduceB;
|
|
int CDcanProduceW;
|
|
int CDnocolor;
|
|
};
|
|
|
|
#endif
|