mirror of
https://github.com/magefree/mage.git
synced 2025-12-25 04:52:07 -08:00
Update CardsInOpponentGraveCondition.java
This commit is contained in:
parent
b33dd8c5fe
commit
db11e2d92e
1 changed files with 44 additions and 7 deletions
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue