Style formatting - no code changes here.
This commit is contained in:
@@ -40,13 +40,15 @@ using std::map;
|
||||
#define PARSER_FOREACH 2
|
||||
#define PARSER_ASLONGAS 3
|
||||
|
||||
class MTGAbility: public ActionElement{
|
||||
class MTGAbility : public ActionElement
|
||||
{
|
||||
protected:
|
||||
char menuText[50];
|
||||
|
||||
GameObserver * game;
|
||||
public:
|
||||
enum {
|
||||
enum
|
||||
{
|
||||
NO_RESTRICTION = 0,
|
||||
PLAYER_TURN_ONLY = 1,
|
||||
AS_SORCERY = 2,
|
||||
@@ -101,6 +103,7 @@ class MTGAbility: public ActionElement{
|
||||
OPPONENT_TURN_ONLY = 60,
|
||||
|
||||
};
|
||||
|
||||
int parseCastRestrictions(MTGCardInstance* card, Player* player, string restrictions, string otherRestrictions);
|
||||
int allowedToCast(MTGCardInstance* card, Player* player);
|
||||
int allowedToAltCast(MTGCardInstance* card, Player* player);
|
||||
@@ -123,14 +126,38 @@ class MTGAbility: public ActionElement{
|
||||
MTGAbility(int id, MTGCardInstance * _source, Targetable * _target);
|
||||
virtual int testDestroy();
|
||||
virtual ~MTGAbility();
|
||||
virtual void Render(){};
|
||||
virtual int isReactingToClick(MTGCardInstance * card, ManaCost * mana = NULL){return 0;};
|
||||
virtual int reactToClick(MTGCardInstance * card){return 0;};
|
||||
virtual int receiveEvent(WEvent * event){return 0;};
|
||||
virtual void Update(float dt){};
|
||||
|
||||
virtual void Render()
|
||||
{
|
||||
}
|
||||
|
||||
virtual int isReactingToClick(MTGCardInstance * card, ManaCost * mana = NULL)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
virtual int reactToClick(MTGCardInstance * card)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
virtual int receiveEvent(WEvent * event)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
virtual void Update(float dt)
|
||||
{
|
||||
}
|
||||
|
||||
virtual int fireAbility();
|
||||
virtual int stillInUse(MTGCardInstance * card);
|
||||
virtual int resolve(){return 0;};
|
||||
|
||||
virtual int resolve()
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
virtual MTGAbility* clone() const = 0;
|
||||
virtual ostream& toString(ostream& out) const;
|
||||
virtual int addToGame();
|
||||
@@ -138,7 +165,8 @@ class MTGAbility: public ActionElement{
|
||||
|
||||
/*Poor man's casting */
|
||||
/* Todo replace that crap with dynamic casting */
|
||||
enum {
|
||||
enum
|
||||
{
|
||||
UNKNOWN = 0,
|
||||
MANA_PRODUCER = 1,
|
||||
MTG_ATTACK_RULE = 2,
|
||||
@@ -175,20 +203,34 @@ class MTGAbility: public ActionElement{
|
||||
};
|
||||
};
|
||||
|
||||
class NestedAbility{
|
||||
class NestedAbility
|
||||
{
|
||||
public:
|
||||
MTGAbility* ability;
|
||||
NestedAbility(MTGAbility* _ability);
|
||||
};
|
||||
|
||||
class TriggeredAbility:public MTGAbility{
|
||||
class TriggeredAbility : public MTGAbility
|
||||
{
|
||||
public:
|
||||
TriggeredAbility(int id, MTGCardInstance* card);
|
||||
TriggeredAbility(int id, MTGCardInstance* _source, Targetable* _target);
|
||||
virtual void Update(float dt);
|
||||
virtual void Render(){};
|
||||
virtual int trigger(){return 0;};
|
||||
virtual int triggerOnEvent(WEvent * e){return 0;};
|
||||
|
||||
virtual void Render()
|
||||
{
|
||||
}
|
||||
|
||||
virtual int trigger()
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
virtual int triggerOnEvent(WEvent * e)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
int receiveEvent(WEvent * e);
|
||||
virtual int resolve() = 0;
|
||||
virtual TriggeredAbility* clone() const = 0;
|
||||
@@ -196,9 +238,11 @@ class TriggeredAbility:public MTGAbility{
|
||||
};
|
||||
|
||||
|
||||
class ActivatedAbility:public MTGAbility{
|
||||
class ActivatedAbility : public MTGAbility
|
||||
{
|
||||
public:
|
||||
enum {
|
||||
enum
|
||||
{
|
||||
NO_RESTRICTION = 0,
|
||||
PLAYER_TURN_ONLY = 1,
|
||||
AS_SORCERY = 2,
|
||||
@@ -252,6 +296,7 @@ class ActivatedAbility:public MTGAbility{
|
||||
|
||||
OPPONENT_TURN_ONLY = 69,
|
||||
};
|
||||
|
||||
ManaCost* abilityCost;
|
||||
int restrictions;
|
||||
int limitPerTurn;
|
||||
@@ -262,8 +307,10 @@ class ActivatedAbility:public MTGAbility{
|
||||
MTGAbility* sa;
|
||||
string usesBeforeSideEffects;
|
||||
int uses;
|
||||
|
||||
ActivatedAbility(int id, MTGCardInstance* card, ManaCost* _cost = NULL, int _restrictions = NO_RESTRICTION, string limit = "", MTGAbility* sideEffect = NULL, string usesBeforeSideEffects = "");
|
||||
virtual ~ActivatedAbility();
|
||||
|
||||
virtual void Update(float dt)
|
||||
{
|
||||
if (newPhase != currentPhase && newPhase == Constants::MTG_PHASE_AFTER_EOT)
|
||||
@@ -282,10 +329,13 @@ class ActivatedAbility:public MTGAbility{
|
||||
virtual ostream& toString(ostream& out) const;
|
||||
};
|
||||
|
||||
class TargetAbility:public ActivatedAbility, public NestedAbility{
|
||||
class TargetAbility : public ActivatedAbility, public NestedAbility
|
||||
{
|
||||
public:
|
||||
TargetAbility(int id, MTGCardInstance * card, TargetChooser * _tc,ManaCost * _cost = NULL, int _playerturnonly = 0);
|
||||
TargetAbility(int id, MTGCardInstance * card,ManaCost * _cost = NULL, int _playerturnonly = 0);
|
||||
~TargetAbility();
|
||||
|
||||
virtual int reactToClick(MTGCardInstance * card);
|
||||
virtual int reactToTargetClick(Targetable * object);
|
||||
virtual TargetAbility* clone() const = 0;
|
||||
@@ -293,44 +343,76 @@ class TargetAbility:public ActivatedAbility, public NestedAbility{
|
||||
virtual int resolve();
|
||||
virtual const char * getMenuText();
|
||||
virtual ostream& toString(ostream& out) const;
|
||||
~TargetAbility();
|
||||
};
|
||||
|
||||
class InstantAbility:public MTGAbility{
|
||||
class InstantAbility:public MTGAbility
|
||||
{
|
||||
public:
|
||||
int init;
|
||||
virtual void Update(float dt);
|
||||
virtual int testDestroy();
|
||||
InstantAbility(int _id, MTGCardInstance * source);
|
||||
InstantAbility(int _id, MTGCardInstance * source,Targetable * _target);
|
||||
virtual int resolve(){return 0;};
|
||||
|
||||
virtual int resolve()
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
virtual InstantAbility* clone() const = 0;
|
||||
virtual ostream& toString(ostream& out) const;
|
||||
};
|
||||
|
||||
/* State based effects. This class works ONLY for InPlay and needs to be extended for other areas of the game !!! */
|
||||
class ListMaintainerAbility:public MTGAbility{
|
||||
class ListMaintainerAbility:public MTGAbility
|
||||
{
|
||||
public:
|
||||
map<MTGCardInstance *,bool> cards;
|
||||
map<Player *,bool> players;
|
||||
ListMaintainerAbility(int _id):MTGAbility(_id,NULL){};
|
||||
ListMaintainerAbility(int _id, MTGCardInstance *_source):MTGAbility(_id, _source){};
|
||||
ListMaintainerAbility(int _id, MTGCardInstance *_source,Damageable * _target):MTGAbility(_id, _source, _target){};
|
||||
ListMaintainerAbility(int _id)
|
||||
: MTGAbility(_id, NULL)
|
||||
{
|
||||
}
|
||||
|
||||
ListMaintainerAbility(int _id, MTGCardInstance *_source)
|
||||
: MTGAbility(_id, _source)
|
||||
{
|
||||
}
|
||||
|
||||
ListMaintainerAbility(int _id, MTGCardInstance *_source,Damageable * _target)
|
||||
: MTGAbility(_id, _source, _target)
|
||||
{
|
||||
}
|
||||
|
||||
virtual void Update(float dt);
|
||||
void updateTargets();
|
||||
virtual bool canTarget(MTGGameZone * zone);
|
||||
virtual int canBeInList(MTGCardInstance * card) = 0;
|
||||
virtual int added(MTGCardInstance * card) = 0;
|
||||
virtual int removed(MTGCardInstance * card) = 0;
|
||||
virtual int canBeInList(Player * p){return 0;};
|
||||
virtual int added(Player * p){return 0;};
|
||||
virtual int removed(Player * p){return 0;};
|
||||
|
||||
virtual int canBeInList(Player * p)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
virtual int added(Player * p)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
virtual int removed(Player * p)
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
virtual int destroy();
|
||||
virtual ListMaintainerAbility* clone() const = 0;
|
||||
virtual ostream& toString(ostream& out) const;
|
||||
};
|
||||
|
||||
class TriggerAtPhase:public TriggeredAbility{
|
||||
class TriggerAtPhase:public TriggeredAbility
|
||||
{
|
||||
public:
|
||||
int phaseId;
|
||||
int who;
|
||||
@@ -344,7 +426,8 @@ class TriggerAtPhase:public TriggeredAbility{
|
||||
virtual TriggerAtPhase* clone() const;
|
||||
};
|
||||
|
||||
class TriggerNextPhase:public TriggerAtPhase{
|
||||
class TriggerNextPhase : public TriggerAtPhase
|
||||
{
|
||||
public:
|
||||
int destroyActivated;
|
||||
bool sourceUntapped;
|
||||
@@ -356,7 +439,8 @@ class TriggerNextPhase:public TriggerAtPhase{
|
||||
};
|
||||
|
||||
|
||||
class GenericTriggeredAbility:public TriggeredAbility, public NestedAbility{
|
||||
class GenericTriggeredAbility : public TriggeredAbility, public NestedAbility
|
||||
{
|
||||
public:
|
||||
TriggeredAbility * t;
|
||||
queue<Targetable *> targets;
|
||||
@@ -377,7 +461,8 @@ class GenericTriggeredAbility:public TriggeredAbility, public NestedAbility{
|
||||
};
|
||||
|
||||
/* Ability Factory */
|
||||
class AbilityFactory{
|
||||
class AbilityFactory
|
||||
{
|
||||
private:
|
||||
string storedString;
|
||||
int countCards(TargetChooser * tc, Player * player = NULL, int option = 0);
|
||||
@@ -406,32 +491,39 @@ public:
|
||||
};
|
||||
|
||||
|
||||
class ActivatedAbilityTP:public ActivatedAbility{
|
||||
class ActivatedAbilityTP : public ActivatedAbility
|
||||
{
|
||||
public:
|
||||
int who;
|
||||
ActivatedAbilityTP(int id, MTGCardInstance * card, Targetable * _target = NULL, ManaCost * cost=NULL, int who = TargetChooser::UNSET);
|
||||
Targetable * getTarget();
|
||||
};
|
||||
|
||||
class InstantAbilityTP:public InstantAbility{
|
||||
class InstantAbilityTP : public InstantAbility
|
||||
{
|
||||
public:
|
||||
int who;
|
||||
InstantAbilityTP(int id, MTGCardInstance * card, Targetable * _target = NULL, int who = TargetChooser::UNSET);
|
||||
Targetable * getTarget();
|
||||
};
|
||||
|
||||
class AbilityTP:public MTGAbility{
|
||||
class AbilityTP : public MTGAbility
|
||||
{
|
||||
public:
|
||||
int who;
|
||||
AbilityTP(int id, MTGCardInstance * card, Targetable * _target = NULL, int who = TargetChooser::UNSET);
|
||||
|
||||
Targetable * getTarget();
|
||||
virtual ~AbilityTP(){};
|
||||
|
||||
virtual ~AbilityTP()
|
||||
{
|
||||
}
|
||||
};
|
||||
|
||||
class AManaProducer: public ActivatedAbilityTP{
|
||||
class AManaProducer : public ActivatedAbilityTP
|
||||
{
|
||||
protected:
|
||||
|
||||
|
||||
Player * controller;
|
||||
|
||||
public:
|
||||
|
||||
Reference in New Issue
Block a user