/* * To change this license header, choose License Headers in Project Properties. * To change this template file, choose Tools | Templates * and open the template in the editor. */ package mage.abilities.condition.common; import java.util.HashSet; import java.util.List; import java.util.Set; import java.util.UUID; import mage.abilities.Ability; import mage.abilities.condition.Condition; import mage.filter.FilterPermanent; import mage.game.Game; import mage.game.permanent.Permanent; /** * * @author LevelX2 */ public class ControlsPermanentGreatestCMCCondition implements Condition { private final FilterPermanent filter; public ControlsPermanentGreatestCMCCondition() { this(new FilterPermanent()); } public ControlsPermanentGreatestCMCCondition(FilterPermanent filter) { super(); this.filter = filter; } @Override public boolean apply(Game game, Ability source) { Set<UUID> controllers = new HashSet<>(); Integer maxCMC = null; List<Permanent> permanents = game.getBattlefield().getActivePermanents(filter, source.getControllerId(), source.getSourceId(), game); for (Permanent permanent : permanents) { int cmc = permanent.getManaCost().convertedManaCost(); if (maxCMC == null || cmc > maxCMC) { maxCMC = cmc; controllers.clear(); } if (cmc == maxCMC) { controllers.add(permanent.getControllerId()); } } return controllers.contains(source.getControllerId()); } @Override public String toString() { return "you control the " + filter.getMessage() + " with the highest converted mana cost or tied for the highest converted mana cost"; } }