Merge pull request #557 from ZobyTwo/defines

Defines/Typos
This commit is contained in:
Dmitry Panin
2013-11-20 02:34:32 -08:00
24 changed files with 125 additions and 162 deletions

View File

@@ -9,10 +9,6 @@
#include <JGui.h>
#include "MTGDefinitions.h"
#define INACTIVE 0
#define ACTION_REQUESTED 1
#define ACTIVE 2
class MTGCardInstance;
class ManaCost;
class Targetable;
@@ -22,31 +18,33 @@ class WEvent;
class ActionElement: public JGuiObject
{
protected:
int activeState;
enum Activity{
Inactive,
ActionRequested,
Active
};
Activity activity;
TargetChooser * tc;
public:
GamePhase currentPhase;
GamePhase newPhase;
int modal;
int waitingForAnswer;
int getActivity();
virtual void Update(float){};
virtual void Render(){};
virtual void Update(float){}
virtual void Render(){}
virtual int testDestroy()
{
return 0;
}
;
virtual int destroy()
{
return 0;
}
;
virtual bool CheckUserInput(JButton)
{
return false;
}
;
ActionElement(int id);
ActionElement(const ActionElement& copyFromMe);
TargetChooser * getActionTc(){return tc;}
@@ -62,27 +60,22 @@ public:
{
return 0;
}
;
virtual int stillInUse(MTGCardInstance *)
{
return 0;
}
;
virtual int receiveEvent(WEvent *)
{
return 0;
}
;
virtual int reactToClick(MTGCardInstance *)
{
return 0;
}
;
virtual const char * getMenuText()
{
return "Ability";
}
;
virtual ActionElement * clone() const = 0;
};

View File

@@ -41,16 +41,9 @@ class DamageStack;
class ManaCost;
class TargetChooser;
#define ACTIONSTACK_STANDARD 0
#define ACTIONSTACK_TARGET 1
class Interruptible: public PlayGuiObject, public Targetable
{
public:
//TODO : remove these when they are back in PlayGuiObject
float x, y;
int state, display;
MTGCardInstance * source;
virtual void Entering()
@@ -186,6 +179,11 @@ public:
class ActionStack :public GuiLayer
{
public:
enum ActionStackMode{
ACTIONSTACK_STANDARD = 0,
ACTIONSTACK_TARGET = 1
};
typedef enum
{
NOT_DECIDED = 0,
@@ -207,7 +205,7 @@ protected:
InterruptDecision interruptDecision[2];
float timer;
int currentState;
int mode;
ActionStackMode mode;
int checked;
ATutorialMessage* currentTutorial;
int interruptBtnXOffset, noBtnXOffset, noToAllBtnXOffset, interruptDialogWidth;

View File

@@ -873,8 +873,8 @@ public:
return 0;
if (!tc->canTarget(e->damage->target)) return 0;
if (fromTc && !fromTc->canTarget(e->damage->source)) return 0;
if (type == 1 && e->damage->typeOfDamage != DAMAGE_COMBAT) return 0;
if (type == 2 && e->damage->typeOfDamage == DAMAGE_COMBAT) return 0;
if (type == 1 && e->damage->typeOfDamage != Damage::DAMAGE_COMBAT) return 0;
if (type == 2 && e->damage->typeOfDamage == Damage::DAMAGE_COMBAT) return 0;
e->damage->target->thatmuch = e->damage->damage;
e->damage->source->thatmuch = e->damage->damage;
this->source->thatmuch = e->damage->damage;
@@ -2577,7 +2577,7 @@ public:
}
else
{
if (d->type_as_damageable == DAMAGEABLE_MTGCARDINSTANCE)
if (d->type_as_damageable == Damageable::DAMAGEABLE_MTGCARDINSTANCE)
{
a->source = (MTGCardInstance *) d;
}
@@ -2725,7 +2725,7 @@ public:
}
else
{
if (d->type_as_damageable == DAMAGEABLE_MTGCARDINSTANCE)
if (d->type_as_damageable == Damageable::DAMAGEABLE_MTGCARDINSTANCE)
{
a->source = (MTGCardInstance *) d;
}
@@ -5549,7 +5549,7 @@ public:
{
WEventDamage * e = (WEventDamage *) event;
Damage * d = e->damage;
if (combatonly && e->damage->typeOfDamage != DAMAGE_COMBAT)
if (combatonly && e->damage->typeOfDamage != Damage::DAMAGE_COMBAT)
return 0;
MTGCardInstance * card = d->source;
if (d->damage > 0 && card && (card == source || card == source->target))

View File

@@ -9,9 +9,6 @@
#include "MTGGameZones.h"
#include "Counters.h"
#define CD_OR 1
#define CD_AND 2
enum ENUM_COMPARISON_MODES
{
COMPARISON_NONE = 0, // Needs to remain 0 for quick if(comparison_mode) checks
@@ -31,7 +28,12 @@ class CardDescriptor: public MTGCardInstance
MTGCardInstance * match_not(MTGCardInstance * card);
bool valueInRange(int comparisonMode, int value, int criterion);
public:
int mode;
enum Operator{
CD_OR = 1,
CD_AND = 2
};
Operator mode;
int powerComparisonMode;
int toughnessComparisonMode;
int manacostComparisonMode;

View File

@@ -11,17 +11,15 @@ class JGuiObject;
class MTGCardInstance;
class GameObserver;
#define DAMAGEABLE_MTGCARDINSTANCE 0
#define DAMAGEABLE_PLAYER 1
#define DAMAGE_ALL_TYPES 0
#define DAMAGE_COMBAT 1
#define DAMAGE_OTHER 2
class Damageable:public Targetable
{
protected:
public:
enum DamageableType{
DAMAGEABLE_MTGCARDINSTANCE = 0,
DAMAGEABLE_PLAYER
};
int life;
int handsize;
int poisonCount;
@@ -29,12 +27,14 @@ public:
int preventable;
int thatmuch;
int lifeLostThisTurn;
int type_as_damageable;
DamageableType type_as_damageable;
Damageable(GameObserver* observer, int _life)
: Targetable(observer)
{life=_life;lifeLostThisTurn = 0;};
int getLife(){return life;};
virtual int dealDamage(int damage){life-=damage;return life;};
: Targetable(observer), life(_life), handsize(0),
poisonCount(0), damageCount(0), preventable(0), thatmuch(0),
lifeLostThisTurn(0), type_as_damageable(DAMAGEABLE_MTGCARDINSTANCE)
{}
int getLife(){return life;}
virtual int dealDamage(int damage){life-=damage;return life;}
virtual int afterDamage(){return 0;}
virtual int poisoned(){return 0;}
virtual int prevented(){return 0;}
@@ -47,17 +47,23 @@ public:
class Damage: public Interruptible
{
protected:
void init(MTGCardInstance * source, Damageable * target, int damage, int typeOfDamage);
public:
enum DamageType{
DAMAGE_ALL_TYPES = 0,
DAMAGE_COMBAT,
DAMAGE_OTHER
};
Damageable * target;
int typeOfDamage;
DamageType typeOfDamage;
int damage;
void Render();
Damage(GameObserver* observer, MTGCardInstance* source, Damageable * target);
Damage(GameObserver* observer, MTGCardInstance* source, Damageable * target, int damage, int typeOfDamage = DAMAGE_OTHER);
Damage(GameObserver* observer, MTGCardInstance* source, Damageable * target, int damage, DamageType typeOfDamage = DAMAGE_OTHER);
int resolve();
virtual ostream& toString(ostream& out) const;
protected:
void init(MTGCardInstance * source, Damageable * target, int damage, DamageType typeOfDamage);
};
class DamageStack : public GuiLayer, public Interruptible

View File

@@ -29,9 +29,10 @@ protected:
TargetChooser * tcTarget;
int damage;
bool oneShot;
int typeOfDamage;
Damage::DamageType typeOfDamage;
public:
REDamagePrevention(MTGAbility * _source, TargetChooser *_tcSource = NULL, TargetChooser *_tcTarget = NULL, int _damage = -1, bool _oneShot = true, int typeOfDamage = DAMAGE_ALL_TYPES);
REDamagePrevention(MTGAbility * _source, TargetChooser *_tcSource = NULL, TargetChooser *_tcTarget = NULL,
int _damage = -1, bool _oneShot = true, Damage::DamageType typeOfDamage = Damage::DAMAGE_ALL_TYPES);
WEvent * replace(WEvent *e);
~REDamagePrevention();
};

View File

@@ -74,8 +74,7 @@ AIHint::AIHint(string _line)
if(action.find( "combo ") != string::npos)
{
string Combo = "";
Combo = action.c_str() + 6;
string Combo = action.c_str() + 6;
combos.push_back(Combo);
}
@@ -307,14 +306,13 @@ bool AIHints::canWeCombo(GameObserver* observer,MTGCardInstance * card,AIPlayerB
TargetChooserFactory tfc(observer);
TargetChooser * hintTc = NULL;
bool gotCombo = false;
int comboPartsHold = 0;
int comboPartsUntil = 0;
int comboPartsRestriction = 0;
for(unsigned int i = 0; i < hints.size();i++)
{
comboPartsHold = 0;
comboPartsUntil = 0;
comboPartsRestriction = 0;
int comboPartsHold = 0;
int comboPartsUntil = 0;
int comboPartsRestriction = 0;
if(gotCombo)
return gotCombo;//because more then one might be possible at any time.
if (hints[i]->hold.size())

View File

@@ -90,13 +90,12 @@ int AIMomirPlayer::computeActions()
}
else if (p == this && observer->mLayers->stackLayer()->count(0, NOT_RESOLVED) == 0)
{ //standard actions
CardDescriptor cd;
MTGCardInstance * card = NULL;
switch (currentGamePhase)
{
case MTG_PHASE_FIRSTMAIN:
{
CardDescriptor cd;
ManaCost * potentialMana = getPotentialMana();
int converted = potentialMana->getConvertedCost();
SAFE_DELETE(potentialMana);
@@ -106,7 +105,7 @@ int AIMomirPlayer::computeActions()
//Attempt to put land into play
cd.init();
cd.setColor(Constants::MTG_COLOR_LAND);
card = cd.match(game->hand);
MTGCardInstance *card = cd.match(game->hand);
int canPutLandsIntoPlay = game->playRestrictions->canPutIntoZone(card, game->inPlay);
if (card && (canPutLandsIntoPlay == PlayRestriction::CAN_PLAY))
{
@@ -118,15 +117,12 @@ int AIMomirPlayer::computeActions()
}
momir();
return 1;
break;
}
case MTG_PHASE_SECONDMAIN:
selectAbility();
return 1;
break;
default:
return AIPlayerBaka::computeActions();
break;
}
}
return AIPlayerBaka::computeActions();

View File

@@ -97,7 +97,7 @@ int AIAction::clickMultiAct(vector<Targetable*>& actionTargets)
ite = actionTargets.erase(ite);
continue;
}
ite++;
++ite;
}
//shuffle to make it less predictable, otherwise ai will always seem to target from right to left. making it very obvious.
@@ -167,7 +167,7 @@ int AIPlayer::clickMultiTarget(TargetChooser * tc, vector<Targetable*>& potentia
ite = potentialTargets.erase(ite);
continue;
}
ite++;
++ite;
}
randomGenerator.random_shuffle(potentialTargets.begin(), potentialTargets.end());

View File

@@ -134,10 +134,9 @@ int OrderedAIAction::getEfficiency()
if (!target)
break;
bool NeedPreventing;
NeedPreventing = false;
if (currentPhase == MTG_PHASE_COMBATBLOCKERS)
{
bool NeedPreventing = false;
MTGCardInstance * nextOpponent = target->getNextOpponent();
if(!nextOpponent)
break;
@@ -152,12 +151,10 @@ int OrderedAIAction::getEfficiency()
//small bonus added for the poor 1/1s, if we can save them, we will unless something else took precidence.
//note is the target is being blocked or blocking a creature with wither or deathtouch, it is not even considered for preventing as it is a waste.
//if its combat blockers, it is being blocked or blocking, and has less prevents the the amount of damage it will be taking, the effeincy is increased slightly and totalled by the danger rank multiplier for final result.
int calculateAfterDamage = 0;
int damages = 0;
if((target->defenser || target->blockers.size()) && target->controller() == p)
{
damages = nextOpponent->power;
calculateAfterDamage = int(target->toughness - damages);
int damages = nextOpponent->power;
int calculateAfterDamage = target->toughness - damages;
if((calculateAfterDamage + target->preventable) > 0)
{
efficiency = 0;
@@ -588,8 +585,7 @@ int OrderedAIAction::getEfficiency()
efficiency = 80;
if(atc->name.length() && atc->sabilities.length() && atc->types.size() && p->game->inPlay->findByName(atc->name))
{
list<int>::iterator it;
for (it = atc->types.begin(); it != atc->types.end(); it++)
for (list<int>::const_iterator it = atc->types.begin(); it != atc->types.end(); ++it)
{
if(*it == Subtypes::TYPE_LEGENDARY)//ai please stop killing voja!!! :P
efficiency = 0;
@@ -978,11 +974,10 @@ vector<MTGAbility*> AIPlayerBaka::canPayMana(MTGCardInstance * target,ManaCost *
}
}
ManaCostHybrid * hybridCost;
int hyb;
hyb = 0;
hybridCost = cost->getHybridCost(0);
if(hybridCost)
{
int hyb = 0;
while ((hybridCost = cost->getHybridCost(hyb)) != NULL)
{
//here we try to find one of the colors in the hybrid cost, it is done 1 at a time unfortunately
@@ -1046,7 +1041,6 @@ vector<MTGAbility*> AIPlayerBaka::canPayMana(MTGCardInstance * target,ManaCost *
{
ManaCost * withKickerCost= NEW ManaCost(cost->getKicker());
int canKick = 0;
vector<MTGAbility*>kickerPayment;
bool keepLooking = true;
while(keepLooking)
@@ -1061,7 +1055,6 @@ vector<MTGAbility*> AIPlayerBaka::canPayMana(MTGCardInstance * target,ManaCost *
payments.push_back(kickerPayment[w]);
}
}
canKick += 1;
keepLooking = cost->getKicker()->isMulti;
}
else
@@ -1297,12 +1290,10 @@ int AIPlayerBaka::createAbilityTargets(MTGAbility * a, MTGCardInstance * c, Rank
TargetChooser * AIPlayerBaka::GetComboTc( GameObserver * observer,TargetChooser * tc)
{
TargetChooser * gathertc = NULL;
TargetChooserFactory tcf(observer);
map<string, string>::iterator it = comboHint->cardTargets.begin();
for(map<string, string>::iterator it = comboHint->cardTargets.begin();it != comboHint->cardTargets.end();it++)
for(map<string, string>::iterator it = comboHint->cardTargets.begin();it != comboHint->cardTargets.end();++it)
{
gathertc = tcf.createTargetChooser(it->first.c_str(),tc->source);
TargetChooser *gathertc = tcf.createTargetChooser(it->first.c_str(),tc->source);
gathertc->setAllZones();
if(gathertc->canTarget(tc->source))
{
@@ -1402,7 +1393,6 @@ int AIPlayerBaka::selectAbility()
MTGCardInstance * card = game->inPlay->cards[j];
if(a->getCost() && !a->isReactingToClick(card, totalPotentialMana))//for performance reason only look for specific mana if the payment couldnt be made with potential.
{
abilityPayment = vector<MTGAbility*>();
abilityPayment = canPayMana(card,a->getCost());
}
if (a->isReactingToClick(card, totalPotentialMana) || abilityPayment.size())
@@ -1410,10 +1400,9 @@ int AIPlayerBaka::selectAbility()
if(a->getCost() && a->getCost()->hasX() && totalPotentialMana->getConvertedCost() < a->getCost()->getConvertedCost()+1)
continue;
//don't even bother to play an ability with {x} if you can't even afford x=1.
ManaCost * fullPayment = NULL;
if (abilityPayment.size())
{
fullPayment = NEW ManaCost();
ManaCost *fullPayment = NEW ManaCost();
for(int ch = 0; ch < int(abilityPayment.size());ch++)
{
AManaProducer * ampp = dynamic_cast<AManaProducer*> (abilityPayment[ch]);
@@ -1525,7 +1514,7 @@ int AIPlayerBaka::chooseTarget(TargetChooser * _tc, Player * forceTarget,MTGCard
}
//Make sure we own the decision to choose the targets
assert(tc->Owner == observer->currentlyActing());
if (tc && tc->Owner != observer->currentlyActing())
if (tc->Owner != observer->currentlyActing())
{
observer->currentActionPlayer = tc->Owner;
//this is a hack, but if we hit this condition we are locked in a infinate loop
@@ -1905,12 +1894,11 @@ MTGCardInstance * AIPlayerBaka::activateCombo()
{
if(!comboHint)
return NULL;
TargetChooser * hintTc = NULL;
TargetChooserFactory tfc(observer);
ManaCost * totalCost = ManaCost::parseManaCost(comboHint->manaNeeded);
for(unsigned int k = 0;k < comboHint->casting.size(); k++)
{
hintTc = tfc.createTargetChooser(comboHint->casting[k],nextCardToPlay);
TargetChooser *hintTc = tfc.createTargetChooser(comboHint->casting[k],nextCardToPlay);
int combohand = game->hand->cards.size();
for(int j = 0; j < combohand;j++)
{

View File

@@ -24,7 +24,7 @@ AIStats::AIStats(Player * _player, char * _filename)
AIStats::~AIStats()
{
list<AIStat *>::iterator it;
for (it = stats.begin(); it != stats.end(); it++)
for (it = stats.begin(); it != stats.end(); ++it)
{
AIStat * stat = *it;
delete stat;
@@ -47,7 +47,7 @@ void AIStats::updateStatsCard(MTGCardInstance * cardInstance, Damage * damage, f
{
stat->value += static_cast<int>(multiplier * STATS_PLAYER_MULTIPLIER * damage->damage);
}
else if (damage->target->type_as_damageable == DAMAGEABLE_MTGCARDINSTANCE)
else if (damage->target->type_as_damageable == Damageable::DAMAGEABLE_MTGCARDINSTANCE)
{
MTGCardInstance * target = (MTGCardInstance *) damage->target;
if (target->controller() == player && !target->isInPlay(player->getObserver()))
@@ -115,7 +115,7 @@ bool AIStats::isInTop(MTGCardInstance * card, unsigned int max, bool tooSmallCou
MTGCard * source = card->model;
int id = source->getMTGId();
list<AIStat *>::iterator it;
for (it = stats.begin(); it != stats.end(); it++)
for (it = stats.begin(); it != stats.end(); ++it)
{
if (n >= max)
return false;
@@ -135,7 +135,7 @@ AIStat * AIStats::find(MTGCard * source)
{
int id = source->getMTGId();
list<AIStat *>::iterator it;
for (it = stats.begin(); it != stats.end(); it++)
for (it = stats.begin(); it != stats.end(); ++it)
{
AIStat * stat = *it;
if (stat->source == id)
@@ -174,7 +174,7 @@ void AIStats::save()
{
char writer[128];
list<AIStat *>::iterator it;
for (it = stats.begin(); it != stats.end(); it++)
for (it = stats.begin(); it != stats.end(); ++it)
{
AIStat * stat = *it;
if (stat->value > 0)

View File

@@ -8,7 +8,7 @@
ActionElement::ActionElement(int id) :
JGuiObject(id)
{
activeState = INACTIVE;
activity = Inactive;
modal = 0;
waitingForAnswer = 0;
currentPhase = MTG_PHASE_INVALID;
@@ -18,7 +18,7 @@ ActionElement::ActionElement(int id) :
ActionElement::ActionElement(const ActionElement& a): JGuiObject(a)
{
activeState = a.activeState;
activity = a.activity;
tc = a.tc ? a.tc->clone() : NULL;
currentPhase = a.currentPhase;
newPhase = a.newPhase;
@@ -31,12 +31,6 @@ ActionElement::~ActionElement()
SAFE_DELETE(tc);
}
int ActionElement::getActivity()
{
return activeState;
}
int ActionElement::isReactingToTargetClick(Targetable * object)
{
if (MTGCardInstance * cObject = dynamic_cast<MTGCardInstance *>(object))

View File

@@ -165,8 +165,6 @@ void ActionLayer::Update(float dt)
if (cantCancel)
{
ActionElement * ae = isWaitingForAnswer();
int countTargets = 0;
int maxTargets = 0;
if(ae && ae->getActionTc())
{
if (!ae->getActionTc()->validTargetsExist())
@@ -175,8 +173,8 @@ void ActionLayer::Update(float dt)
cancelCurrentAction();
return;
}
countTargets = ae->getActionTc()->countValidTargets();
maxTargets = ae->getActionTc()->maxtargets;
int countTargets = ae->getActionTc()->countValidTargets();
int maxTargets = ae->getActionTc()->maxtargets;
if (countTargets < maxTargets)
{
/*
@@ -266,7 +264,7 @@ int ActionLayer::receiveEventPlus(WEvent * event)
ActionElement * currentAction = (ActionElement *) mObjects[i];
result += currentAction->receiveEvent(event);
}
return 0;
return result;
}
int ActionLayer::isReactingToTargetClick(Targetable * card)
@@ -440,10 +438,9 @@ void ActionLayer::setCustomMenuObject(Targetable * object, bool must,vector<MTGA
if(abilities.size())
{
abilitiesMenu->isMultipleChoice = true;
ActionElement * currentAction = NULL;
for(int w = 0; w < int(abilities.size());w++)
{
currentAction = (ActionElement*)abilities[w];
ActionElement* currentAction = (ActionElement*)abilities[w];
currentActionCard = (MTGCardInstance*)abilities[0]->target;
abilitiesMenu->Add(mObjects.size()-1, currentAction->getMenuText(),"",false);
}

View File

@@ -161,7 +161,7 @@ void StackAbility::Render()
if (target)
{
quad = target->getIcon();
if (target->type_as_damageable == DAMAGEABLE_MTGCARDINSTANCE)
if (target->type_as_damageable == Damageable::DAMAGEABLE_MTGCARDINSTANCE)
{
alt2 = ((MTGCardInstance *) target)->name;
}
@@ -400,7 +400,7 @@ void Spell::Render()
if (target)
{
quad = target->getIcon();
if (target->type_as_damageable == DAMAGEABLE_MTGCARDINSTANCE)
if (target->type_as_damageable == Damageable::DAMAGEABLE_MTGCARDINSTANCE)
{
alt2 = ((MTGCardInstance *) target)->name;
}

View File

@@ -2351,7 +2351,7 @@ int AALifer::resolve()
return 0;
WParsedInt life(life_s, NULL, source);
if (_target->type_as_damageable == DAMAGEABLE_MTGCARDINSTANCE)
if (_target->type_as_damageable == Damageable::DAMAGEABLE_MTGCARDINSTANCE)
{
_target = ((MTGCardInstance *) _target)->controller();
}
@@ -4380,7 +4380,7 @@ int AAExchangeLife::resolve()
int oldlife = player->getLife();
int targetOldLife = _target->getLife();
int modifier = oldlife > targetOldLife? oldlife - targetOldLife:targetOldLife - oldlife;
if (_target->type_as_damageable == DAMAGEABLE_MTGCARDINSTANCE)
if (_target->type_as_damageable == Damageable::DAMAGEABLE_MTGCARDINSTANCE)
{
int increaser = 0;
MTGCardInstance * card = ((MTGCardInstance*)_target);
@@ -4597,15 +4597,15 @@ int APreventDamageTypes::addToGame()
fromTc->targetter = NULL;
if (type != 1 && type != 2)
{//not adding this creates a memory leak.
re = NEW REDamagePrevention(this, fromTc, toTc, -1, false, DAMAGE_COMBAT);
re = NEW REDamagePrevention(this, fromTc, toTc, -1, false, Damage::DAMAGE_COMBAT);
}
else if (type == 1)
{
re = NEW REDamagePrevention(this, fromTc, toTc, -1, false, DAMAGE_ALL_TYPES);
re = NEW REDamagePrevention(this, fromTc, toTc, -1, false, Damage::DAMAGE_ALL_TYPES);
}
else if (type == 2)
{
re = NEW REDamagePrevention(this, fromTc, toTc, -1, false, DAMAGE_OTHER);
re = NEW REDamagePrevention(this, fromTc, toTc, -1, false, Damage::DAMAGE_OTHER);
}
game->replacementEffects->add(re);
return MTGAbility::addToGame();

View File

@@ -1013,7 +1013,7 @@ bool CardGui::FilterCard(MTGCard * _card,string filter)
CardDescriptor cd;
MTGCardInstance * card = (MTGCardInstance*) _card->data;
cd.init();
cd.mode = CD_OR;
cd.mode = CardDescriptor::CD_OR;
while (filter.size())
{
@@ -1033,13 +1033,13 @@ bool CardGui::FilterCard(MTGCard * _card,string filter)
string attribute;
if (found2 != string::npos)
{
cd.mode = CD_OR;
cd.mode = CardDescriptor::CD_OR;
attribute = attributes.substr(0, found2);
attributes = attributes.substr(found2 + 1);
}
else if (foundAnd != string::npos)
{
cd.mode = CD_AND;
cd.mode = CardDescriptor::CD_AND;
attribute = attributes.substr(0, foundAnd);
attributes = attributes.substr(foundAnd + 1);
}
@@ -1302,7 +1302,7 @@ bool CardGui::FilterCard(MTGCard * _card,string filter)
}
}
if (nbminuses)
cd.mode = CD_AND;
cd.mode = CardDescriptor::CD_AND;
filter = filter.substr(0, found);
}
else
@@ -1312,7 +1312,7 @@ bool CardGui::FilterCard(MTGCard * _card,string filter)
if (found != string::npos)
{
cd.mode = CD_OR;
cd.mode = CardDescriptor::CD_OR;
typeName = filter.substr(0, found);
filter = filter.substr(found + 1);
}

View File

@@ -14,13 +14,13 @@ Damage::Damage(GameObserver* observer, MTGCardInstance * source, Damageable * ta
init(source, target, source->getPower(), DAMAGE_OTHER);
}
Damage::Damage(GameObserver* observer, MTGCardInstance * source, Damageable * target, int damage, int _typeOfDamage)
Damage::Damage(GameObserver* observer, MTGCardInstance * source, Damageable * target, int damage, DamageType _typeOfDamage)
: Interruptible(observer)
{
init(source, target, damage, _typeOfDamage);
}
void Damage::init(MTGCardInstance * _source, Damageable * _target, int _damage, int _typeOfDamage)
void Damage::init(MTGCardInstance * _source, Damageable * _target, int _damage, DamageType _typeOfDamage)
{
typeOfDamage = _typeOfDamage;
target = _target;
@@ -59,29 +59,19 @@ int Damage::resolve()
//reserved for culmulitive absorb ability coding
//prevent next damage-----------------------------
if ((target)->preventable >= 1)
if (target->preventable > 0)
{
int preventing = (target)->preventable;
for (int k = preventing; k > 0; k--)
{
//the following keeps preventable from ADDING toughness/life if damage was less then preventable amount.
for (int i = damage; i >= 1; i--)
{
(target)->preventable -= 1;
damage -= 1;
break;//does the redux of damage 1 time, breaks the loop to deincrement preventing and start the loop over.
}
}
int preventing = MIN(target->preventable, damage);
damage -= preventing;
target->preventable -= preventing;
}
//set prevent next damage back to 0 if it is equal to less then 0
if ((target)->preventable < 0)
else
{
(target)->preventable = 0;
target->preventable = 0;
}
//-------------------------------------------------
if (target->type_as_damageable == DAMAGEABLE_MTGCARDINSTANCE)
if (target->type_as_damageable == Damageable::DAMAGEABLE_MTGCARDINSTANCE)
{
MTGCardInstance * _target = (MTGCardInstance *) target;
if ((_target)->protectedAgainst(source))
@@ -134,7 +124,7 @@ int Damage::resolve()
int a = damage;
if (target->type_as_damageable == DAMAGEABLE_MTGCARDINSTANCE && (source->has(Constants::WITHER) || source->has(
if (target->type_as_damageable == Damageable::DAMAGEABLE_MTGCARDINSTANCE && (source->has(Constants::WITHER) || source->has(
Constants::INFECT)))
{
// Damage for WITHER or poison on creatures. This should probably go in replacement effects
@@ -146,7 +136,7 @@ int Damage::resolve()
if(_target->toughness <= 0 && _target->has(Constants::INDESTRUCTIBLE))
_target->controller()->game->putInGraveyard(_target);
}
else if (target->type_as_damageable == DAMAGEABLE_PLAYER && (source->has(Constants::INFECT)||source->has(Constants::POISONDAMAGER)))
else if (target->type_as_damageable == Damageable::DAMAGEABLE_PLAYER && (source->has(Constants::INFECT)||source->has(Constants::POISONDAMAGER)))
{
// Poison on player
Player * _target = (Player *) target;
@@ -163,7 +153,7 @@ int Damage::resolve()
}
}
}
else if (target->type_as_damageable == DAMAGEABLE_PLAYER && (source->has(Constants::POISONTOXIC) ||
else if (target->type_as_damageable == Damageable::DAMAGEABLE_PLAYER && (source->has(Constants::POISONTOXIC) ||
source->has(Constants::POISONTWOTOXIC) || source->has(Constants::POISONTHREETOXIC)))
{
//Damage + 1, 2, or 3 poison counters on player
@@ -202,9 +192,9 @@ int Damage::resolve()
//return the left over amount after effects have been applied to them.
a = target->dealDamage(damage);
target->damageCount += damage;//the amount must be the actual damage so i changed this from 1 to damage, this fixes pdcount and odcount
if (target->type_as_damageable == DAMAGEABLE_MTGCARDINSTANCE)
if (target->type_as_damageable == Damageable::DAMAGEABLE_MTGCARDINSTANCE)
((MTGCardInstance*)target)->wasDealtDamage = true;
if (target->type_as_damageable == DAMAGEABLE_PLAYER)
if (target->type_as_damageable == Damageable::DAMAGEABLE_PLAYER)
{
if(target == source->controller())
{
@@ -260,7 +250,7 @@ void Damage::Render()
}
else
{
if (target->type_as_damageable == DAMAGEABLE_MTGCARDINSTANCE)
if (target->type_as_damageable == Damageable::DAMAGEABLE_MTGCARDINSTANCE)
mFont->DrawString(_(((MTGCardInstance *) target)->getName()).c_str(), x + 120, y);
}

View File

@@ -43,7 +43,7 @@ void DamagerDamaged::addDamage(int damage, DamagerDamaged* source)
return;
}
if (0 < damage)
damages.push_back(Damage(card->getObserver(), source->card, card, damage, DAMAGE_COMBAT));
damages.push_back(Damage(card->getObserver(), source->card, card, damage, Damage::DAMAGE_COMBAT));
return;
}

View File

@@ -526,7 +526,7 @@ int GuiCombat::resolve() // Returns the number of damage objects dealt this turn
}
if (dmg > 0 && ((!attacker->isBlocked()) || attacker->has(Constants::TRAMPLE)))
stack->Add(NEW Damage(observer, (*it)->card, (Damageable*)attacker->isAttacking?(Damageable*)attacker->isAttacking:observer->opponent(), dmg, DAMAGE_COMBAT));
stack->Add(NEW Damage(observer, (*it)->card, (Damageable*)attacker->isAttacking?(Damageable*)attacker->isAttacking:observer->opponent(), dmg, Damage::DAMAGE_COMBAT));
for (vector<Damage>::iterator d = (*it)->damages.begin(); d != (*it)->damages.end(); ++d)
stack->Add(NEW Damage(*d));

View File

@@ -4477,7 +4477,7 @@ Player * MTGAbility::getPlayerFromDamageable(Damageable * target)
if (!target)
return NULL;
if (target->type_as_damageable == DAMAGEABLE_MTGCARDINSTANCE)
if (target->type_as_damageable == Damageable::DAMAGEABLE_MTGCARDINSTANCE)
return ((MTGCardInstance *) target)->controller();
return (Player *) target;

View File

@@ -17,7 +17,7 @@ void MTGGamePhase::Update(float)
int newState = observer->getCurrentGamePhase();
if (newState != currentState)
{
activeState = ACTIVE;
activity = Active;
animation = 4;
currentState = newState;
}
@@ -28,18 +28,18 @@ void MTGGamePhase::Update(float)
}
else
{
activeState = INACTIVE;
activity = Inactive;
animation = 0;
}
}
bool MTGGamePhase::NextGamePhase()
{
if (activeState == INACTIVE)
if (activity == Inactive)
{
if (observer->currentActionPlayer == observer->currentlyActing())
{
activeState = ACTIVE;
activity = Active;
observer->userRequestNextGamePhase();
return true;
}

View File

@@ -2700,7 +2700,7 @@ int MTGDeathtouchRule::receiveEvent(WEvent * event)
if (!card)
return 0;
if (d->target->type_as_damageable != DAMAGEABLE_MTGCARDINSTANCE)
if (d->target->type_as_damageable != Damageable::DAMAGEABLE_MTGCARDINSTANCE)
return 0;
MTGCardInstance * _target = (MTGCardInstance *) (d->target);

View File

@@ -6,7 +6,7 @@
#include "AllAbilities.h"
REDamagePrevention::REDamagePrevention(MTGAbility * source, TargetChooser *tcSource, TargetChooser *tcTarget, int damage,
bool oneShot, int typeOfDamage) :
bool oneShot, Damage::DamageType typeOfDamage) :
source(source), tcSource(tcSource), tcTarget(tcTarget), damage(damage), oneShot(oneShot), typeOfDamage(typeOfDamage)
{
}
@@ -18,7 +18,7 @@ WEvent * REDamagePrevention::replace(WEvent *event)
WEventDamage * e = dynamic_cast<WEventDamage*> (event);
if (!e) return event;
Damage *d = e->damage;
if (d->typeOfDamage != typeOfDamage && typeOfDamage != DAMAGE_ALL_TYPES) return event;
if (d->typeOfDamage != typeOfDamage && typeOfDamage != Damage::DAMAGE_ALL_TYPES) return event;
if ((!tcSource || tcSource->canTarget(d->source)) && (!tcTarget || tcTarget->canTarget(d->target)))
{
if (damage == -1)

View File

@@ -294,13 +294,13 @@ TargetChooser * TargetChooserFactory::createTargetChooser(string s, MTGCardInsta
string attribute;
if (found2 != string::npos)
{
cd->mode = CD_OR;
cd->mode = CardDescriptor::CD_OR;
attribute = attributes.substr(0, found2);
attributes = attributes.substr(found2 + 1);
}
else if (foundAnd != string::npos)
{
cd->mode = CD_AND;
cd->mode = CardDescriptor::CD_AND;
attribute = attributes.substr(0, foundAnd);
attributes = attributes.substr(foundAnd + 1);
}
@@ -550,7 +550,7 @@ TargetChooser * TargetChooserFactory::createTargetChooser(string s, MTGCardInsta
else
cd->colors = card->colors;
cd->mode = CD_OR;
cd->mode = CardDescriptor::CD_OR;
}
else if( CDtype.find("types") != string::npos )
{
@@ -572,7 +572,7 @@ TargetChooser * TargetChooserFactory::createTargetChooser(string s, MTGCardInsta
cd->removeType("creature");
cd->removeType("planeswalker");
cd->removeType("tribal");
cd->mode = CD_OR;
cd->mode = CardDescriptor::CD_OR;
}
}
else if (attribute.find("counter") != string::npos)
@@ -629,7 +629,7 @@ TargetChooser * TargetChooserFactory::createTargetChooser(string s, MTGCardInsta
{
cd->SetExclusionColor(cid);
}
cd->mode = CD_OR;
cd->mode = CardDescriptor::CD_OR;
}
if (attribute.find("chosencolor") != string::npos)
@@ -685,7 +685,7 @@ TargetChooser * TargetChooserFactory::createTargetChooser(string s, MTGCardInsta
}
}
if (nbminuses)
cd->mode = CD_AND;
cd->mode = CardDescriptor::CD_AND;
typeName = typeName.substr(0, found);
}
if (cd)