From 969511953aaedb83f0375d33962e0d3ac1b73c8a Mon Sep 17 00:00:00 2001 From: Anthony Calosa Date: Mon, 1 Aug 2016 14:45:57 +0800 Subject: [PATCH] vector count of abilities remove unused ones --- projects/mtg/include/AllAbilities.h | 12 +++++++----- projects/mtg/include/CardPrimitive.h | 2 +- projects/mtg/include/MTGCardInstance.h | 1 - projects/mtg/src/AllAbilities.cpp | 4 ---- projects/mtg/src/CardPrimitive.cpp | 7 +++++-- projects/mtg/src/GameObserver.cpp | 8 ++------ projects/mtg/src/MTGCardInstance.cpp | 4 ---- 7 files changed, 15 insertions(+), 23 deletions(-) diff --git a/projects/mtg/include/AllAbilities.h b/projects/mtg/include/AllAbilities.h index 139f9e9c8..867439b56 100644 --- a/projects/mtg/include/AllAbilities.h +++ b/projects/mtg/include/AllAbilities.h @@ -2211,7 +2211,12 @@ public: assert(modifier < 2); ((MTGCardInstance *) target)->basicAbilities.set(ability, modifier > 0); - + //---add or subtract so we can keep track - for future use + ((MTGCardInstance *) target)->modbasicAbilities[ability] += modifier; + //---make sure no negative values + if(((MTGCardInstance *) target)->modbasicAbilities[ability] < 0) + ((MTGCardInstance *) target)->modbasicAbilities[ability] = 0; + //---end add or subtract abilities return MTGAbility::addToGame(); } @@ -2262,7 +2267,7 @@ public: assert(value < 2); _target->basicAbilities.set(ability, value > 0); - _target->modifiedbAbi += 1; + return InstantAbility::addToGame(); } @@ -2275,10 +2280,7 @@ public: { MTGCardInstance * _target = (MTGCardInstance *) target; if (_target) - { _target->basicAbilities.set(ability, stateBeforeActivation); - _target->modifiedbAbi -= 1; - } return 1; } diff --git a/projects/mtg/include/CardPrimitive.h b/projects/mtg/include/CardPrimitive.h index 035ea23a0..51f5dbcd0 100644 --- a/projects/mtg/include/CardPrimitive.h +++ b/projects/mtg/include/CardPrimitive.h @@ -57,8 +57,8 @@ public: uint8_t colors; typedef std::bitset BasicAbilitiesSet; + vector modbasicAbilities; BasicAbilitiesSet basicAbilities; - BasicAbilitiesSet origbasicAbilities; BasicAbilitiesSet LKIbasicAbilities; map magicTexts; diff --git a/projects/mtg/include/MTGCardInstance.h b/projects/mtg/include/MTGCardInstance.h index 4e78569ac..aad75beaa 100644 --- a/projects/mtg/include/MTGCardInstance.h +++ b/projects/mtg/include/MTGCardInstance.h @@ -256,7 +256,6 @@ public: bool bypassTC; bool discarded; int copiedID; - int modifiedbAbi; bool StackIsEmptyandSorcerySpeed(); bool isTargetted(); int cardistargetted; diff --git a/projects/mtg/src/AllAbilities.cpp b/projects/mtg/src/AllAbilities.cpp index ac62bdcc4..20f475a4c 100644 --- a/projects/mtg/src/AllAbilities.cpp +++ b/projects/mtg/src/AllAbilities.cpp @@ -3940,8 +3940,6 @@ int AACloner::resolve() { spell->source->addType(*it); } - spell->source->modifiedbAbi = _target->modifiedbAbi; - //spell->source->basicAbilities = _target->origbasicAbilities; for(int k = 0; k < Constants::NB_BASIC_ABILITIES; k++) { if(_target->model->data->basicAbilities[k]) @@ -5652,7 +5650,6 @@ for (it = types.begin(); it != types.end(); it++) for (it = abilities.begin(); it != abilities.end(); it++) { _target->basicAbilities.set(*it); - _target->modifiedbAbi += 1; } if(newAbilityFound) @@ -5801,7 +5798,6 @@ int ATransformer::destroy() for (it = abilities.begin(); it != abilities.end(); it++) { _target->basicAbilities.reset(*it); - _target->modifiedbAbi -= 1; } for (it = oldcolors.begin(); it != oldcolors.end(); it++) diff --git a/projects/mtg/src/CardPrimitive.cpp b/projects/mtg/src/CardPrimitive.cpp index a73267f80..b1c1df544 100644 --- a/projects/mtg/src/CardPrimitive.cpp +++ b/projects/mtg/src/CardPrimitive.cpp @@ -41,7 +41,10 @@ CardPrimitive::CardPrimitive(CardPrimitive * source) if(!source) return; basicAbilities = source->basicAbilities; - origbasicAbilities = source->basicAbilities; + for(int k=0; k < Constants::NB_BASIC_ABILITIES; k++) + { + modbasicAbilities.push_back(source->basicAbilities[k]); + } LKIbasicAbilities = source->basicAbilities; for (size_t i = 0; i < source->types.size(); ++i) @@ -79,7 +82,7 @@ CardPrimitive::~CardPrimitive() int CardPrimitive::init() { basicAbilities.reset(); - origbasicAbilities.reset(); + modbasicAbilities.clear(); types.clear(); diff --git a/projects/mtg/src/GameObserver.cpp b/projects/mtg/src/GameObserver.cpp index 35990bb8e..bc212c5b8 100644 --- a/projects/mtg/src/GameObserver.cpp +++ b/projects/mtg/src/GameObserver.cpp @@ -954,12 +954,8 @@ void GameObserver::gameStateBasedEffects() p->game->putInExile(c); } - }/* - if(c->modifiedbAbi > 0) - { - c->modifiedbAbi = 0; - c->basicAbilities = c->origbasicAbilities; - }*///disabled this failed logic I introduce... when copying/cloning a card copy orig basic abilities... + } + if(nbcards > z->nb_cards) { t = 0; diff --git a/projects/mtg/src/MTGCardInstance.cpp b/projects/mtg/src/MTGCardInstance.cpp index 1c24782e9..b0dd57f9e 100644 --- a/projects/mtg/src/MTGCardInstance.cpp +++ b/projects/mtg/src/MTGCardInstance.cpp @@ -64,7 +64,6 @@ MTGCardInstance::MTGCardInstance(MTGCard * card, MTGPlayerCards * arg_belongs_to bypassTC = false; discarded = false; copiedID = getId(); - modifiedbAbi = 0; LKIpower = power; LKItoughness = toughness; cardistargetted = 0; @@ -100,15 +99,12 @@ void MTGCardInstance::copy(MTGCardInstance * card) MTGCard * source = card->model; CardPrimitive * data = source->data; - //basicAbilities = card->origbasicAbilities; for(int k = 0; k < Constants::NB_BASIC_ABILITIES; k++) { if(card->model->data->basicAbilities[k]) basicAbilities[k] = card->model->data->basicAbilities[k]; } - origbasicAbilities = card->origbasicAbilities; - modifiedbAbi = card->modifiedbAbi; for (size_t i = 0; i < data->types.size(); i++) { types.push_back(data->types[i]);