forked from External/mage
54 lines
1.5 KiB
Java
54 lines
1.5 KiB
Java
package mage.abilities.dynamicvalue.common;
|
|
|
|
import mage.abilities.Ability;
|
|
import mage.abilities.dynamicvalue.DynamicValue;
|
|
import mage.abilities.effects.Effect;
|
|
import mage.counters.Counter;
|
|
import mage.counters.CounterType;
|
|
import mage.game.Game;
|
|
import mage.game.permanent.Permanent;
|
|
|
|
public class CountersSourceCount implements DynamicValue {
|
|
|
|
private final CounterType counterType;
|
|
|
|
public CountersSourceCount(CounterType counterType) {
|
|
this.counterType = counterType;
|
|
}
|
|
|
|
protected CountersSourceCount(final CountersSourceCount countersCount) {
|
|
this.counterType = countersCount.counterType;
|
|
}
|
|
|
|
@Override
|
|
public int calculate(Game game, Ability sourceAbility, Effect effect) {
|
|
Permanent permanent = sourceAbility.getSourcePermanentOrLKI(game);
|
|
if (permanent == null) {
|
|
return 0;
|
|
}
|
|
return counterType != null
|
|
? permanent
|
|
.getCounters(game)
|
|
.getCount(counterType)
|
|
: permanent
|
|
.getCounters(game)
|
|
.values()
|
|
.stream()
|
|
.mapToInt(Counter::getCount).sum();
|
|
}
|
|
|
|
@Override
|
|
public CountersSourceCount copy() {
|
|
return new CountersSourceCount(this);
|
|
}
|
|
|
|
@Override
|
|
public String toString() {
|
|
return "1";
|
|
}
|
|
|
|
@Override
|
|
public String getMessage() {
|
|
return (counterType != null ? counterType.toString() + ' ' : "") + "counter on {this}";
|
|
}
|
|
}
|