This commit is contained in:
@@ -1,8 +1,6 @@
|
||||
#ifndef _MTGABILITY_H_
|
||||
#define _MTGABILITY_H_
|
||||
|
||||
|
||||
|
||||
class MTGCardInstance;
|
||||
class Spell;
|
||||
class Damageable;
|
||||
@@ -40,7 +38,8 @@ using std::map;
|
||||
#define PARSER_FOREACH 2
|
||||
#define PARSER_ASLONGAS 3
|
||||
|
||||
class MTGAbility: public ActionElement{
|
||||
class MTGAbility: public ActionElement
|
||||
{
|
||||
protected:
|
||||
char menuText[50];
|
||||
|
||||
@@ -79,7 +78,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,
|
||||
@@ -106,18 +106,18 @@ class MTGAbility: public ActionElement{
|
||||
TAPPER = 23,
|
||||
LIFER = 24,
|
||||
CLONING = 25,
|
||||
|
||||
|
||||
};
|
||||
};
|
||||
|
||||
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);
|
||||
@@ -132,7 +132,8 @@ class TriggeredAbility:public MTGAbility{
|
||||
};
|
||||
|
||||
|
||||
class ActivatedAbility:public MTGAbility{
|
||||
class ActivatedAbility:public MTGAbility
|
||||
{
|
||||
public:
|
||||
enum {
|
||||
NO_RESTRICTION = 0,
|
||||
@@ -199,7 +200,8 @@ 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,int tap = 1);
|
||||
TargetAbility(int id, MTGCardInstance* card,ManaCost* _cost = NULL, int _playerturnonly = 0,int tap = 1);
|
||||
@@ -213,7 +215,8 @@ class TargetAbility:public ActivatedAbility, public NestedAbility{
|
||||
~TargetAbility();
|
||||
};
|
||||
|
||||
class InstantAbility:public MTGAbility{
|
||||
class InstantAbility:public MTGAbility
|
||||
{
|
||||
public:
|
||||
int init;
|
||||
virtual void Update(float dt);
|
||||
@@ -226,7 +229,8 @@ class InstantAbility:public MTGAbility{
|
||||
};
|
||||
|
||||
/* 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;
|
||||
@@ -247,7 +251,8 @@ class ListMaintainerAbility:public MTGAbility{
|
||||
virtual ostream& toString(ostream& out) const;
|
||||
};
|
||||
|
||||
class TriggerAtPhase:public TriggeredAbility{
|
||||
class TriggerAtPhase:public TriggeredAbility
|
||||
{
|
||||
public:
|
||||
int phaseId;
|
||||
int who;
|
||||
@@ -257,7 +262,8 @@ class TriggerAtPhase:public TriggeredAbility{
|
||||
virtual TriggerAtPhase* clone() const;
|
||||
};
|
||||
|
||||
class TriggerNextPhase:public TriggerAtPhase{
|
||||
class TriggerNextPhase:public TriggerAtPhase
|
||||
{
|
||||
public:
|
||||
int destroyActivated;
|
||||
TriggerNextPhase(int id, MTGCardInstance* source, Targetable* target,int _phaseId, int who = 0);
|
||||
@@ -267,7 +273,8 @@ class TriggerNextPhase:public TriggerAtPhase{
|
||||
};
|
||||
|
||||
|
||||
class GenericTriggeredAbility:public TriggeredAbility, public NestedAbility{
|
||||
class GenericTriggeredAbility:public TriggeredAbility, public NestedAbility
|
||||
{
|
||||
public:
|
||||
TriggeredAbility* t;
|
||||
queue<Targetable *> targets;
|
||||
@@ -288,7 +295,8 @@ class GenericTriggeredAbility:public TriggeredAbility, public NestedAbility{
|
||||
};
|
||||
|
||||
/* Ability Factory */
|
||||
class AbilityFactory{
|
||||
class AbilityFactory
|
||||
{
|
||||
private:
|
||||
int countCards(TargetChooser* tc, Player* player = NULL, int option = 0);
|
||||
TriggeredAbility* parseTrigger(string s, string magicText, int id, Spell* spell, MTGCardInstance *card, Targetable* target);
|
||||
@@ -316,17 +324,18 @@ public:
|
||||
};
|
||||
|
||||
|
||||
class ActivatedAbilityTP:public ActivatedAbility{
|
||||
class ActivatedAbilityTP:public ActivatedAbility
|
||||
{
|
||||
public:
|
||||
int who;
|
||||
ActivatedAbilityTP(int id, MTGCardInstance* card, Targetable* _target = NULL, ManaCost* cost=NULL, int doTap = 0, int who = TargetChooser::UNSET);
|
||||
Targetable* getTarget();
|
||||
};
|
||||
|
||||
class AManaProducer: public ActivatedAbilityTP{
|
||||
class AManaProducer: public ActivatedAbilityTP
|
||||
{
|
||||
protected:
|
||||
|
||||
|
||||
string menutext;
|
||||
Player* controller;
|
||||
|
||||
@@ -342,7 +351,5 @@ class AManaProducer: public ActivatedAbilityTP{
|
||||
virtual AManaProducer* clone() const;
|
||||
};
|
||||
|
||||
#include "MTGCardInstance.h"
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
Reference in New Issue
Block a user