Style formatting - no code changes here.

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