package Roguelike.Levels.TownEvents; import com.badlogic.gdx.utils.ObjectMap; 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 09-Feb-16. */ public abstract class AbstractTownEvent { public abstract void evaluate( ObjectMap<String, String> flags ); public abstract void parse(XmlReader.Element xml ); //---------------------------------------------------------------------- public static AbstractTownEvent load(XmlReader.Element xml ) { Class<AbstractTownEvent> c = ClassMap.get(xml.getName().toUpperCase()); AbstractTownEvent type = null; try { type = (AbstractTownEvent) ClassReflection.newInstance( c ); } catch (ReflectionException e) { e.printStackTrace(); } type.parse(xml); return type; } //---------------------------------------------------------------------- protected static HashMap<String, Class> ClassMap = new HashMap<String, Class>(); //---------------------------------------------------------------------- static { ClassMap.put("TEXT", TextTownEvent.class ); ClassMap.put("ADDFUNDS", AddFundsTownEvent.class ); } }