Update CardsInOpponentGraveCondition.java

This commit is contained in:
Evan Kranzler 2020-09-03 13:02:19 -04:00
parent b33dd8c5fe
commit db11e2d92e

View file

@ -4,13 +4,14 @@ import mage.abilities.Ability;
import mage.abilities.condition.Condition;
import mage.abilities.hint.ConditionHint;
import mage.abilities.hint.Hint;
import mage.abilities.hint.HintUtils;
import mage.game.Game;
import mage.game.Graveyard;
import mage.players.Player;
import mage.util.CardUtil;
import java.awt.*;
import java.util.Objects;
import java.util.UUID;
/**
* Condition for -
@ -28,7 +29,7 @@ public enum CardsInOpponentGraveCondition implements Condition {
CardsInOpponentGraveCondition(int value) {
this.value = value;
this.hint = new ConditionHint(this, "O" + this.makeStem());
this.hint = new CardsInOpponentGraveConditionHint(value);
}
@Override
@ -45,14 +46,50 @@ public enum CardsInOpponentGraveCondition implements Condition {
@Override
public String toString() {
return "an o" + this.makeStem();
}
private String makeStem() {
return "pponent has " + CardUtil.numberToText(value) + " or more cards in their graveyard";
return "an opponent has " + CardUtil.numberToText(value) + " or more cards in their graveyard";
}
public Hint getHint() {
return hint;
}
private static final class CardsInOpponentGraveConditionHint implements Hint {
private final int value;
private CardsInOpponentGraveConditionHint(int value) {
this.value = value;
}
private CardsInOpponentGraveConditionHint(final CardsInOpponentGraveConditionHint hint) {
this.value = hint.value;
}
@Override
public String getText(Game game, Ability ability) {
int maxGraveSize = game
.getOpponents(ability.getControllerId())
.stream()
.map(game::getPlayer)
.filter(Objects::nonNull)
.map(Player::getGraveyard)
.mapToInt(Graveyard::size)
.max()
.orElse(0);
String text = "An opponent has "
+ CardUtil.numberToText(maxGraveSize) + " card"
+ (maxGraveSize == 1 ? "" : "s")
+ " in their graveyard";
if (maxGraveSize >= this.value) {
return HintUtils.prepareText(text, Color.GREEN, HintUtils.HINT_ICON_GOOD);
} else {
return HintUtils.prepareText(text, Color.RED, HintUtils.HINT_ICON_BAD);
}
}
@Override
public CardsInOpponentGraveConditionHint copy() {
return new CardsInOpponentGraveConditionHint(this);
}
}
}