package mage.abilities.dynamicvalue.common; import mage.abilities.Ability; import mage.abilities.dynamicvalue.DynamicValue; import mage.abilities.effects.Effect; import mage.abilities.hint.Hint; import mage.abilities.hint.ValueHint; import mage.filter.FilterPermanent; import mage.game.Game; import mage.game.permanent.Permanent; import java.util.List; public class TotalPermanentsManaValue implements DynamicValue { private final String message; private final FilterPermanent filter; public TotalPermanentsManaValue(FilterPermanent filter) { this.filter = filter.copy(); this.message = "the total mana value of " + filter.getMessage(); } private TotalPermanentsManaValue(final TotalPermanentsManaValue value) { this.filter = value.filter.copy(); this.message = value.message; } @Override public TotalPermanentsManaValue copy() { return new TotalPermanentsManaValue(this); } @Override public int calculate(Game game, Ability sourceAbility, Effect effect) { int totalCMC = 0; List permanents = game.getBattlefield().getActivePermanents( filter, sourceAbility.getControllerId(), sourceAbility, game); for (Permanent permanent : permanents) { totalCMC += permanent.getManaValue(); } return totalCMC; } @Override public String getMessage() { return message; } @Override public String toString() { return "X"; } public Hint getHint() { return new ValueHint("Total mana value of " + filter.getMessage(), this); } }