package Roguelike.Sprite.SpriteAnimation; import java.util.HashMap; import com.badlogic.gdx.utils.XmlReader.Element; import com.badlogic.gdx.utils.reflect.ClassReflection; import com.badlogic.gdx.utils.reflect.ReflectionException; public abstract class AbstractSpriteAnimation { public float duration; public float time; public abstract void set( float duration, int[] diff ); public abstract int[] getRenderOffset(); public abstract float[] getRenderScale(); public abstract boolean update( float delta ); public abstract void parse( Element xml ); public abstract AbstractSpriteAnimation copy(); public static AbstractSpriteAnimation load( Element xml ) { Class<AbstractSpriteAnimation> c = ClassMap.get( xml.getName().toUpperCase() ); AbstractSpriteAnimation type = null; try { type = ClassReflection.newInstance( c ); } catch ( Exception e ) { System.err.println(xml.getName()); e.printStackTrace(); } type.parse( xml ); return type; } public static final HashMap<String, Class> ClassMap = new HashMap<String, Class>(); static { ClassMap.put( "BUMP", BumpAnimation.class ); ClassMap.put( "MOVE", MoveAnimation.class ); ClassMap.put( "STRETCH", StretchAnimation.class ); } }