Minor refactor of AACloner::resolve() - two code paths were complete duplicates except for the MTGCard*.
This commit is contained in:
@@ -789,32 +789,11 @@ public:
|
|||||||
|
|
||||||
int resolve(){
|
int resolve(){
|
||||||
MTGCardInstance * _target = (MTGCardInstance *) target;
|
MTGCardInstance * _target = (MTGCardInstance *) target;
|
||||||
if(_target && !_target->isToken){
|
if(_target)
|
||||||
MTGCardInstance * myClone;
|
{
|
||||||
MTGCard * clone = GameApp::collection->getCardById(_target->getId());
|
MTGCardInstance * myClone = NULL;
|
||||||
myClone = NULL;
|
MTGCard* clone = (_target->isToken ? _target : GameApp::collection->getCardById(_target->getId()));
|
||||||
if(who != 1) myClone = NEW MTGCardInstance(clone,source->controller()->game);
|
|
||||||
if(who == 1) myClone = NEW MTGCardInstance(clone,source->controller()->opponent()->game);
|
|
||||||
if(who != 1) source->controller()->game->temp->addCard(myClone);
|
|
||||||
else source->controller()->opponent()->game->temp->addCard(myClone);
|
|
||||||
Spell * spell = NEW Spell(myClone);
|
|
||||||
spell->resolve();
|
|
||||||
spell->source->isToken = 1;
|
|
||||||
spell->source->fresh = 1;
|
|
||||||
list<int>::iterator it;
|
|
||||||
for ( it=awith.begin() ; it != awith.end(); it++ ){
|
|
||||||
spell->source->basicAbilities[*it] = 1;
|
|
||||||
}
|
|
||||||
for ( it=colors.begin() ; it != colors.end(); it++ ){
|
|
||||||
spell->source->setColor(*it);
|
|
||||||
}
|
|
||||||
delete spell;
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
if(_target && _target->isToken){
|
|
||||||
MTGCardInstance * myClone;
|
|
||||||
MTGCardInstance * clone = _target;
|
|
||||||
myClone = NULL;
|
|
||||||
if(who != 1) myClone = NEW MTGCardInstance(clone,source->controller()->game);
|
if(who != 1) myClone = NEW MTGCardInstance(clone,source->controller()->game);
|
||||||
if(who == 1) myClone = NEW MTGCardInstance(clone,source->controller()->opponent()->game);
|
if(who == 1) myClone = NEW MTGCardInstance(clone,source->controller()->opponent()->game);
|
||||||
if(who != 1) source->controller()->game->temp->addCard(myClone);
|
if(who != 1) source->controller()->game->temp->addCard(myClone);
|
||||||
|
|||||||
@@ -6,6 +6,8 @@
|
|||||||
namespace
|
namespace
|
||||||
{
|
{
|
||||||
const Pos kDefaultCardPosition(300, 150, 1.0, 0.0, 220);
|
const Pos kDefaultCardPosition(300, 150, 1.0, 0.0, 220);
|
||||||
|
// the diagonal length of a card, doubled
|
||||||
|
const float kOverrideDistance = sqrtf(powf(CardGui::Width, 2) + powf(CardGui::Height, 2)) * 2;
|
||||||
|
|
||||||
enum
|
enum
|
||||||
{
|
{
|
||||||
@@ -246,7 +248,11 @@ public:
|
|||||||
float yDiff = fabs(mCards[mCurrentCard]->y - mCards[index]->y);
|
float yDiff = fabs(mCards[mCurrentCard]->y - mCards[index]->y);
|
||||||
float xDiff = fabs(mCards[mCurrentCard]->x - mCards[index]->x);
|
float xDiff = fabs(mCards[mCurrentCard]->x - mCards[index]->x);
|
||||||
float distance = sqrtf(yDiff * yDiff + xDiff * xDiff);
|
float distance = sqrtf(yDiff * yDiff + xDiff * xDiff);
|
||||||
if (distance < minDistance)
|
|
||||||
|
// CardSelector does this thing where if the distance in the axis you're moving is less than the distance od the card on the opposite axis,
|
||||||
|
// it would ignore the move - this made for some weird behavior where the UI wouldn't let you move in certain directions when a card looked reachable.
|
||||||
|
// instead, I'm using a different logic - if there's a card in the direction that you're stepping, and it's within a defined radius, go for it.
|
||||||
|
if (distance < minDistance && distance < kOverrideDistance)
|
||||||
{
|
{
|
||||||
minDistance = distance;
|
minDistance = distance;
|
||||||
selectedCardIndex = index;
|
selectedCardIndex = index;
|
||||||
@@ -714,11 +720,12 @@ int Navigator::CardToCardZone(PlayGuiObject* inCard)
|
|||||||
else if (card->getCard()->isSpell())
|
else if (card->getCard()->isSpell())
|
||||||
{
|
{
|
||||||
|
|
||||||
//if (card->getCard()->target != NULL)
|
if (card->getCard()->target != NULL)
|
||||||
// isAI = card->getCard()->target->owner->isAI();
|
isAI = card->getCard()->target->owner->isAI();
|
||||||
|
|
||||||
// nasty hack: the lines above don't always work, as when an enchantment comes into play, its ability hasn't been activated yet,
|
// nasty hack: the lines above don't always work, as when an enchantment comes into play, its ability hasn't been activated yet,
|
||||||
// so it doesn't yet have a target. Instead, we now look at the card's position, if it's in the top half of the screen, it goes into an AI zone
|
// so it doesn't yet have a target. Instead, we now look at the card's position, if it's in the top half of the screen, it goes into an AI zone
|
||||||
isAI = card->y < JRenderer::GetInstance()->GetActualHeight() / 2;
|
//isAI = card->y < JRenderer::GetInstance()->GetActualHeight() / 2;
|
||||||
|
|
||||||
// enchantments that target creatures are treated as part of the creature zone
|
// enchantments that target creatures are treated as part of the creature zone
|
||||||
if (card->getCard()->spellTargetType.find("creature") != string::npos)
|
if (card->getCard()->spellTargetType.find("creature") != string::npos)
|
||||||
|
|||||||
Reference in New Issue
Block a user