diff --git a/Mage/src/mage/filter/predicate/permanent/ControllerPredicate.java b/Mage/src/mage/filter/predicate/permanent/ControllerPredicate.java index d525abbf3e7..82d7627bc9a 100644 --- a/Mage/src/mage/filter/predicate/permanent/ControllerPredicate.java +++ b/Mage/src/mage/filter/predicate/permanent/ControllerPredicate.java @@ -27,14 +27,16 @@ */ package mage.filter.predicate.permanent; -import java.util.UUID; import mage.Constants; import mage.Constants.TargetController; import mage.filter.predicate.ObjectPlayer; import mage.filter.predicate.ObjectPlayerPredicate; +import mage.game.Controllable; import mage.game.Game; import mage.game.permanent.Permanent; +import java.util.UUID; + /** * * @author North @@ -49,22 +51,22 @@ public class ControllerPredicate implements ObjectPlayerPredicate input, Game game) { - Permanent permanent = input.getObject(); + Controllable object = input.getObject(); UUID playerId = input.getPlayerId(); switch (controller) { case YOU: - if (permanent.getControllerId().equals(playerId)) { + if (object.getControllerId().equals(playerId)) { return true; } break; case OPPONENT: - if (game.getOpponents(playerId).contains(permanent.getControllerId())) { + if (game.getOpponents(playerId).contains(object.getControllerId())) { return true; } break; case NOT_YOU: - if (!permanent.getControllerId().equals(playerId)) { + if (!object.getControllerId().equals(playerId)) { return true; } break; diff --git a/Mage/src/mage/game/Controllable.java b/Mage/src/mage/game/Controllable.java new file mode 100644 index 00000000000..7d678297d1c --- /dev/null +++ b/Mage/src/mage/game/Controllable.java @@ -0,0 +1,38 @@ +/* +* Copyright 2010 BetaSteward_at_googlemail.com. All rights reserved. +* +* Redistribution and use in source and binary forms, with or without modification, are +* permitted provided that the following conditions are met: +* +* 1. Redistributions of source code must retain the above copyright notice, this list of +* conditions and the following disclaimer. +* +* 2. Redistributions in binary form must reproduce the above copyright notice, this list +* of conditions and the following disclaimer in the documentation and/or other materials +* provided with the distribution. +* +* THIS SOFTWARE IS PROVIDED BY BetaSteward_at_googlemail.com ``AS IS'' AND ANY EXPRESS OR IMPLIED +* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND +* FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL BetaSteward_at_googlemail.com OR +* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +* CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON +* ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF +* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +* +* The views and conclusions contained in the software and documentation are those of the +* authors and should not be interpreted as representing official policies, either expressed +* or implied, of BetaSteward_at_googlemail.com. +*/ + +package mage.game; + +import java.util.UUID; + +/** + * @author magenoxx_at_gmail.com + */ +public interface Controllable { + UUID getControllerId(); +} diff --git a/Mage/src/mage/game/permanent/Permanent.java b/Mage/src/mage/game/permanent/Permanent.java index d450d1bf2cd..77c12d5de83 100644 --- a/Mage/src/mage/game/permanent/Permanent.java +++ b/Mage/src/mage/game/permanent/Permanent.java @@ -33,12 +33,13 @@ import mage.abilities.Ability; import mage.cards.Card; import mage.counters.Counter; import mage.counters.Counters; +import mage.game.Controllable; import mage.game.Game; import java.util.List; import java.util.UUID; -public interface Permanent extends Card { +public interface Permanent extends Card, Controllable { public boolean isTapped(); public boolean untap(Game game); @@ -72,7 +73,6 @@ public interface Permanent extends Card { public boolean addAttachment(UUID permanentId, Game game); public boolean removeAttachment(UUID permanentId, Game game); - public UUID getControllerId(); public boolean changeControllerId(UUID controllerId, Game game); public boolean canBeTargetedBy(MageObject source, UUID controllerId, Game game); public boolean hasProtectionFrom(MageObject source, Game game); diff --git a/Mage/src/mage/game/stack/StackObject.java b/Mage/src/mage/game/stack/StackObject.java index f07e63092b3..403d04f6fd2 100644 --- a/Mage/src/mage/game/stack/StackObject.java +++ b/Mage/src/mage/game/stack/StackObject.java @@ -28,17 +28,18 @@ package mage.game.stack; -import java.util.UUID; import mage.MageObject; import mage.abilities.Ability; +import mage.game.Controllable; import mage.game.Game; -public interface StackObject extends MageObject { +import java.util.UUID; + +public interface StackObject extends MageObject, Controllable { // public Card getCard(); public boolean resolve(Game game); public UUID getSourceId(); - public UUID getControllerId(); public void counter(UUID sourceId, Game game); public Ability getStackAbility(); @Override