package Roguelike.Fields.FieldInteractionTypes;
import java.util.HashMap;
import Roguelike.Fields.Field;
import com.badlogic.gdx.utils.XmlReader.Element;
import com.badlogic.gdx.utils.reflect.ClassReflection;
import com.badlogic.gdx.utils.reflect.ReflectionException;
public abstract class AbstractFieldInteractionType
{
public abstract Field process(Field src, Field dst);
public abstract void parse(Element xml);
//----------------------------------------------------------------------
public static AbstractFieldInteractionType load(Element xml)
{
Class<AbstractFieldInteractionType> c = ClassMap.get(xml.getName().toUpperCase());
AbstractFieldInteractionType type = null;
try
{
type = (AbstractFieldInteractionType)ClassReflection.newInstance(c);
}
catch (Exception e)
{
System.err.println(xml.getName());
e.printStackTrace();
}
type.parse(xml);
return type;
}
//----------------------------------------------------------------------
protected static HashMap<String, Class> ClassMap = new HashMap<String, Class>();
//----------------------------------------------------------------------
static
{
ClassMap.put( "ABILITY", AbilityFieldInteractionType.class );
ClassMap.put( "SPAWN", SpawnFieldInteractionType.class );
ClassMap.put( "KILLTHIS", KillThisFieldInteractionType.class );
ClassMap.put( "KILLOTHER", KillOtherFieldInteractionType.class );
ClassMap.put( "PROPOGATE", PropogateFieldInteractionType.class );
}
}