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