This commit is contained in:
wrenczes@gmail.com
2011-01-11 09:28:27 +00:00
parent 1c011e568a
commit 85bd7aa145
+28 -21
View File
@@ -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