package Roguelike.Ability.ActiveAbility.TargetingType;
import java.util.HashMap;
import Roguelike.Ability.ActiveAbility.ActiveAbility;
import Roguelike.Tiles.GameTile;
import com.badlogic.gdx.utils.XmlReader.Element;
import com.badlogic.gdx.utils.reflect.ClassReflection;
import com.badlogic.gdx.utils.reflect.ReflectionException;
public abstract class AbstractTargetingType
{
public abstract AbstractTargetingType copy();
public abstract void parse(Element xml);
public abstract boolean isTargetValid(ActiveAbility ab, GameTile tile);
public static AbstractTargetingType load(Element xml)
{
Class<AbstractTargetingType> c = ClassMap.get(xml.getName().toUpperCase());
AbstractTargetingType type = null;
try
{
type = (AbstractTargetingType)ClassReflection.newInstance(c);
}
catch (ReflectionException e)
{
e.printStackTrace();
}
type.parse(xml);
return type;
}
public static final HashMap<String, Class> ClassMap = new HashMap<String, Class>();
static
{
ClassMap.put("ENTITY", TargetingTypeEntity.class);
ClassMap.put("TILE", TargetingTypeTile.class);
ClassMap.put("DIRECTION", TargetingTypeDirection.class);
}
}