package Roguelike.Ability.ActiveAbility.HitType; import Roguelike.Ability.ActiveAbility.ActiveAbility; import Roguelike.Entity.Entity; import com.badlogic.gdx.utils.XmlReader; import com.badlogic.gdx.utils.reflect.ClassReflection; import com.badlogic.gdx.utils.reflect.ReflectionException; import java.util.HashMap; /** * Created by Philip on 02-Jan-16. */ public abstract class AbstractHitType { public abstract AbstractHitType copy(); public abstract void parse(XmlReader.Element xml ); public abstract boolean isTargetValid( ActiveAbility aa, Entity entity ); public static AbstractHitType load(XmlReader.Element xml ) { Class<AbstractHitType> c = ClassMap.get(xml.getName().toUpperCase()); AbstractHitType type = null; try { type = (AbstractHitType) 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( "SELF", HitTypeSelf.class ); ClassMap.put( "NOTSELF", HitTypeNotSelf.class ); ClassMap.put( "ANY", HitTypeAny.class ); ClassMap.put( "ENEMY", HitTypeEnemy.class ); ClassMap.put( "ALLY", HitTypeAlly.class ); ClassMap.put( "EMPTY", HitTypeEmpty.class ); } }