Refactor: added copyFrom info for all objects (original card used for copy, copy of copy and etc);

This commit is contained in:
Oleg Agafonov 2018-11-29 19:29:39 +04:00
parent 28ac95cb10
commit 59bda7f1d5
25 changed files with 269 additions and 220 deletions

View file

@ -1,9 +1,5 @@
package mage.game.stack;
import java.util.ArrayList;
import java.util.EnumSet;
import java.util.List;
import java.util.UUID;
import mage.MageInt;
import mage.MageObject;
import mage.ObjectColor;
@ -32,8 +28,12 @@ import mage.util.GameLog;
import mage.util.SubTypeList;
import mage.watchers.Watcher;
import java.util.ArrayList;
import java.util.EnumSet;
import java.util.List;
import java.util.UUID;
/**
*
* @author BetaSteward_at_googlemail.com
*/
public class StackAbility extends StackObjImpl implements Ability {
@ -47,6 +47,8 @@ public class StackAbility extends StackObjImpl implements Ability {
private final Ability ability;
private UUID controllerId;
private boolean copy;
private MageObject copyFrom; // copied card INFO (used to call original adjusters)
private String name;
private String expansionSetCode;
private TargetAdjuster targetAdjuster = null;
@ -60,6 +62,8 @@ public class StackAbility extends StackObjImpl implements Ability {
public StackAbility(final StackAbility stackAbility) {
this.ability = stackAbility.ability.copy();
this.controllerId = stackAbility.controllerId;
this.copy = stackAbility.copy;
this.copyFrom = (stackAbility.copyFrom != null ? stackAbility.copyFrom.copy() : null);
this.name = stackAbility.name;
this.expansionSetCode = stackAbility.expansionSetCode;
this.targetAdjuster = stackAbility.targetAdjuster;
@ -104,6 +108,22 @@ public class StackAbility extends StackObjImpl implements Ability {
}
}
@Override
public void setCopy(boolean isCopy, MageObject copyFrom) {
this.copy = isCopy;
this.copyFrom = (copyFrom != null ? copyFrom.copy() : null);
}
@Override
public boolean isCopy() {
return this.copy;
}
@Override
public MageObject getCopyFrom() {
return this.copyFrom;
}
@Override
public String getName() {
return name;
@ -408,15 +428,6 @@ public class StackAbility extends StackObjImpl implements Ability {
throw new UnsupportedOperationException("Not supported.");
}
@Override
public void setCopy(boolean isCopy) {
}
@Override
public boolean isCopy() {
return false;
}
@Override
public boolean getRuleAtTheTop() {
return this.ability.getRuleAtTheTop();