package net.demilich.metastone.game.spells.desc.valueprovider; import java.util.List; import net.demilich.metastone.game.GameContext; import net.demilich.metastone.game.Player; import net.demilich.metastone.game.entities.Entity; import net.demilich.metastone.game.spells.desc.filter.EntityFilter; import net.demilich.metastone.game.targeting.EntityReference; public class EntityCounter extends ValueProvider { public EntityCounter(ValueProviderDesc desc) { super(desc); } @Override protected int provideValue(GameContext context, Player player, Entity target, Entity host) { EntityReference source = desc.getSource(); List<Entity> relevantEntities = context.resolveTarget(player, host, source); int count = 0; EntityFilter filter = (EntityFilter) desc.get(ValueProviderArg.FILTER); for (Entity entity : relevantEntities) { if (filter == null || filter.matches(context, player, entity)) { count++; } } return count; } }