package net.demilich.metastone.game.spells.desc.condition;
import net.demilich.metastone.game.GameContext;
import net.demilich.metastone.game.Player;
import net.demilich.metastone.game.entities.Entity;
import net.demilich.metastone.game.entities.minions.Summon;
import net.demilich.metastone.game.spells.desc.filter.EntityFilter;
public class MinionOnBoardCondition extends Condition {
public MinionOnBoardCondition(ConditionDesc desc) {
super(desc);
}
@Override
protected boolean isFulfilled(GameContext context, Player player, ConditionDesc desc, Entity source, Entity target) {
EntityFilter cardFilter = (EntityFilter) desc.get(ConditionArg.CARD_FILTER);
int value = desc.contains(ConditionArg.VALUE) ? desc.getInt(ConditionArg.VALUE) : 1;
int count = 0;
for (Summon summon : player.getSummons()) {
if ((cardFilter == null || cardFilter.matches(context, player, summon)) && !context.getSummonReferenceStack().contains(summon.getReference())) {
count++;
}
}
return count >= value;
}
}