package net.demilich.metastone.game.spells.desc.filter; import java.lang.reflect.InvocationTargetException; import java.util.EnumMap; import java.util.Map; import net.demilich.metastone.game.cards.desc.Desc; public class FilterDesc extends Desc<FilterArg> { public static Map<FilterArg, Object> build(Class<? extends EntityFilter> filterClass) { final Map<FilterArg, Object> arguments = new EnumMap<>(FilterArg.class); arguments.put(FilterArg.CLASS, filterClass); return arguments; } public FilterDesc(Map<FilterArg, Object> arguments) { super(arguments); } public EntityFilter create() { Class<? extends EntityFilter> filterClass = getFilterClass(); try { return filterClass.getConstructor(FilterDesc.class).newInstance(this); } catch (InstantiationException | IllegalAccessException | IllegalArgumentException | InvocationTargetException | NoSuchMethodException | SecurityException e) { e.printStackTrace(); } return null; } @SuppressWarnings("unchecked") public Class<? extends EntityFilter> getFilterClass() { return (Class<? extends EntityFilter>) get(FilterArg.CLASS); } }