make plane and emblem implement Controllable to give access to the isControlledBy method

This commit is contained in:
Ingmar Goudt 2018-09-30 12:48:03 +02:00
parent e614b8573e
commit fe3f6fb6c8
8 changed files with 13 additions and 11 deletions

View file

@ -219,9 +219,9 @@ public abstract class ActivatedAbilityImpl extends AbilityImpl implements Activa
} else {
MageObject mageObject = game.getObject(this.sourceId);
if (mageObject instanceof Emblem) {
return ((Emblem) mageObject).getControllerId().equals(playerId);
return ((Emblem) mageObject).isControlledBy(playerId);
} else if (mageObject instanceof Plane) {
return ((Plane) mageObject).getControllerId().equals(playerId);
return ((Plane) mageObject).isControlledBy(playerId);
} else if (game.getState().getZone(this.sourceId) != Zone.BATTLEFIELD) {
return ((Card) mageObject).isOwnedBy(playerId);
}

View file

@ -12,6 +12,9 @@ public interface Controllable {
UUID getId();
default boolean isControlledBy(UUID controllerID){
if(getControllerId() == null){
return false;
}
return getControllerId().equals(controllerID);
}
}

View file

@ -2594,7 +2594,7 @@ public abstract class GameImpl implements Game, Serializable {
boolean addPlaneAgain = false;
for (Iterator<CommandObject> it = this.getState().getCommand().iterator(); it.hasNext();) {
CommandObject obj = it.next();
if (obj.getControllerId().equals(playerId)) {
if (obj.isControlledBy(playerId)) {
if (obj instanceof Emblem) {
((Emblem) obj).discardEffects();// This may not be the best fix but it works
}

View file

@ -3,17 +3,16 @@ package mage.game.command;
import java.util.UUID;
import mage.MageObject;
import mage.game.Controllable;
/**
*
* @author Viserion, nantuko
*/
public interface CommandObject extends MageObject {
public interface CommandObject extends MageObject, Controllable {
UUID getSourceId();
UUID getControllerId();
void assignNewId();
MageObject getSourceObject();