package Roguelike.Entity.ActivationAction; import Roguelike.Entity.Entity; import Roguelike.Entity.EnvironmentEntity; 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 25-Jan-16. */ public abstract class AbstractActivationAction { // ---------------------------------------------------------------------- public abstract void evaluate( EnvironmentEntity owningEntity, Entity activatingEntity, float delta ); public abstract void parse( XmlReader.Element xml ); // ---------------------------------------------------------------------- public static AbstractActivationAction load( XmlReader.Element xml ) { Class<AbstractActivationAction> c = ClassMap.get( xml.getName().toUpperCase() ); AbstractActivationAction type = null; try { type = 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", ActivationActionAbility.class ); ClassMap.put( "ADDITEM", ActivationActionAddItem.class ); ClassMap.put( "SETSPRITE", ActivationActionSetSprite.class ); ClassMap.put( "SETPASSABLE", ActivationActionSetPassable.class ); ClassMap.put( "SETENABLED", ActivationActionSetEnabled.class ); ClassMap.put( "CHANGELEVEL", ActivationActionChangeLevel.class ); ClassMap.put( "SPAWNENTITY", ActivationActionSpawnEntity.class ); ClassMap.put( "ACTIVATE", ActivationActionActivate.class ); ClassMap.put( "KILLTHIS", ActivationActionKillThis.class ); ClassMap.put( "SPAWNFIELD", ActivationActionSpawnField.class ); ClassMap.put( "REMOVEITEM", ActivationActionRemoveItem.class ); ClassMap.put( "DEALDAMAGE", ActivationActionDealDamage.class ); ClassMap.put( "ADDSTATUS", ActivationActionAddStatus.class ); } }