From 575cebad7fca3d4bc2794df3124f901c6289f8a0 Mon Sep 17 00:00:00 2001 From: magenoxx Date: Wed, 24 Oct 2012 17:45:55 +0400 Subject: [PATCH] Displaying arrows for fixed targets in effects (for Jace, Architect of Thought first ability) --- .../src/mage/view/StackAbilityView.java | 29 +++++++++++++++++-- .../target/targetpointer/FixedTarget.java | 4 +++ 2 files changed, 30 insertions(+), 3 deletions(-) diff --git a/Mage.Common/src/mage/view/StackAbilityView.java b/Mage.Common/src/mage/view/StackAbilityView.java index 1cb574ac3f2..ed0455415e9 100644 --- a/Mage.Common/src/mage/view/StackAbilityView.java +++ b/Mage.Common/src/mage/view/StackAbilityView.java @@ -28,9 +28,14 @@ package mage.view; -import java.util.ArrayList; - +import mage.abilities.effects.Effect; import mage.game.stack.StackAbility; +import mage.target.targetpointer.FixedTarget; +import mage.target.targetpointer.TargetPointer; + +import java.util.ArrayList; +import java.util.List; +import java.util.UUID; /** * @@ -57,7 +62,25 @@ public class StackAbilityView extends CardView { this.superTypes = ability.getSupertype(); this.color = ability.getColor(); this.manaCost = ability.getManaCost().getSymbols(); - setTargets(ability.getTargets()); + updateTargets(ability); + } + + private void updateTargets(StackAbility ability) { + if (ability.getTargets().size() > 0) { + setTargets(ability.getTargets()); + } else { + List targetList = new ArrayList(); + for (Effect effect : ability.getEffects()) { + TargetPointer targetPointer = effect.getTargetPointer(); + if (targetPointer instanceof FixedTarget) { + targetList.add(((FixedTarget) targetPointer).getTarget()); + } + } + if (targetList.size() > 0) { + overrideTargets(targetList); + } + + } } public CardView getSourceCard() { diff --git a/Mage/src/mage/target/targetpointer/FixedTarget.java b/Mage/src/mage/target/targetpointer/FixedTarget.java index d23972e75ef..371d70595c5 100644 --- a/Mage/src/mage/target/targetpointer/FixedTarget.java +++ b/Mage/src/mage/target/targetpointer/FixedTarget.java @@ -61,4 +61,8 @@ public class FixedTarget implements TargetPointer { public TargetPointer copy() { return new FixedTarget(this); } + + public UUID getTarget() { + return target; + } }