Remove custom multitarget handling from ReturnToHandTargetEffect (use EachTargetPointer instead)

This commit is contained in:
Alex W. Jackson 2022-09-12 08:54:45 -04:00
parent dc33531792
commit 7c2f76b46b
19 changed files with 63 additions and 146 deletions

View file

@ -46,24 +46,7 @@ public class ReturnFromGraveyardToHandTargetEffect extends OneShotEffect {
if (staticText != null && !staticText.isEmpty()) {
return staticText;
}
StringBuilder sb = new StringBuilder();
Target target = mode.getTargets().get(0);
sb.append("return ");
if (target.getMaxNumberOfTargets() != target.getNumberOfTargets()) {
sb.append("up to ");
sb.append(CardUtil.numberToText(target.getMaxNumberOfTargets())).append(' ');
} else if (target.getMaxNumberOfTargets() > 1) {
sb.append(CardUtil.numberToText(target.getMaxNumberOfTargets())).append(' ');
}
if (!target.getTargetName().startsWith("another")) {
sb.append("target ");
}
sb.append(target.getTargetName());
if (!target.getTargetName().endsWith("graveyard")) {
sb.append(" from your graveyard");
}
sb.append(" to your hand");
return sb.toString();
String targetDescription = getTargetPointer().describeTargets(mode.getTargets(), "");
return "return " + targetDescription + (targetDescription.contains("graveyard") ? " to your hand" : " from your graveyard to your hand");
}
}

View file

@ -20,20 +20,12 @@ import java.util.*;
*/
public class ReturnToHandTargetEffect extends OneShotEffect {
protected boolean multitargetHandling;
public ReturnToHandTargetEffect() {
this(false);
}
public ReturnToHandTargetEffect(boolean multitargetHandling) {
super(Outcome.ReturnToHand);
this.multitargetHandling = multitargetHandling;
}
public ReturnToHandTargetEffect(final ReturnToHandTargetEffect effect) {
super(effect);
this.multitargetHandling = effect.multitargetHandling;
}
@Override
@ -49,18 +41,6 @@ public class ReturnToHandTargetEffect extends OneShotEffect {
}
List<UUID> copyIds = new ArrayList<>();
Set<Card> cards = new LinkedHashSet<>();
if (multitargetHandling) {
for (Target target : source.getTargets()) {
for (UUID targetId : target.getTargets()) {
MageObject mageObject = game.getObject(targetId);
if (mageObject instanceof Spell && mageObject.isCopy()) {
copyIds.add(targetId);
} else if (mageObject instanceof Card) {
cards.add((Card) mageObject);
}
}
}
} else {
for (UUID targetId : targetPointer.getTargets(game, source)) {
MageObject mageObject = game.getObject(targetId);
if (mageObject != null) {
@ -72,7 +52,6 @@ public class ReturnToHandTargetEffect extends OneShotEffect {
}
}
}
}
for (UUID copyId : copyIds) {
game.getStack().remove(game.getSpell(copyId), game);
}
@ -80,35 +59,12 @@ public class ReturnToHandTargetEffect extends OneShotEffect {
}
@Override
public String getText(Mode mode
) {
public String getText(Mode mode)
{
if (staticText != null && !staticText.isEmpty()) {
return staticText;
}
if (mode.getTargets().size() < 1) {
return "";
}
Target target = mode.getTargets().get(0);
StringBuilder sb = new StringBuilder("return ");
if (target.getMinNumberOfTargets() == 0 && target.getMaxNumberOfTargets() >= 1) {
sb.append("up to ");
sb.append(CardUtil.numberToText(target.getMaxNumberOfTargets())).append(" ");
} else if (!(target.getMinNumberOfTargets() == 1 || target.getMaxNumberOfTargets() == 1)) {
sb.append(CardUtil.numberToText(target.getMaxNumberOfTargets())).append(" ");
}
if (!target.getTargetName().contains("target")) {
sb.append("target ");
}
sb.append(target.getTargetName());
if (target.getMaxNumberOfTargets() > 1 && !target.getTargetName().endsWith("s") && !target.getTargetName().endsWith("control")) {
sb.append('s');
}
if (target.getMaxNumberOfTargets() > 1) {
sb.append(" to their owners' hands");
} else {
sb.append(" to its owner's hand");
}
return sb.toString();
return "return " + getTargetPointer().describeTargets(mode.getTargets(), "") +
(getTargetPointer().isPlural(mode.getTargets()) ? " to their owners' hands" : " to its owner's hand");
}
}