package Roguelike.Dialogue; import java.util.HashMap; import net.objecthunter.exp4j.Expression; import net.objecthunter.exp4j.ExpressionBuilder; import Roguelike.Global; import Roguelike.Dialogue.DialogueManager.ReturnType; import com.badlogic.gdx.utils.XmlReader.Element; import com.badlogic.gdx.utils.reflect.ClassReflection; import com.badlogic.gdx.utils.reflect.ReflectionException; import exp4j.Helpers.EquationHelper; public abstract class AbstractDialogueAction { // ---------------------------------------------------------------------- public DialogueManager manager; // ---------------------------------------------------------------------- public boolean processCondition( String condition, String[] reliesOn ) { return manager.processCondition( condition, reliesOn ); } // ---------------------------------------------------------------------- public abstract ReturnType process(); // ---------------------------------------------------------------------- public abstract void parse( Element xml ); // ---------------------------------------------------------------------- public static AbstractDialogueAction load( Element xml, DialogueManager manager ) { Class<AbstractDialogueAction> c = ClassMap.get( xml.getName().toUpperCase() ); AbstractDialogueAction type = null; try { type = ClassReflection.newInstance( c ); } catch ( Exception e ) { System.err.println(xml.getName()); e.printStackTrace(); } type.manager = manager; type.parse( xml ); return type; } // ---------------------------------------------------------------------- protected static HashMap<String, Class> ClassMap = new HashMap<String, Class>(); // ---------------------------------------------------------------------- static { ClassMap.put( "TEXT", DialogueActionText.class ); ClassMap.put( "INPUT", DialogueActionInput.class ); ClassMap.put( "BRANCH", DialogueActionBranch.class ); ClassMap.put( "LOOP", DialogueActionLoop.class ); ClassMap.put( "SETVARIABLE", DialogueActionSetVariable.class ); ClassMap.put( "GAINABILITY", DialogueActionGainAbility.class ); ClassMap.put( "GAINITEM", DialogueActionGainItem.class ); ClassMap.put( "REMOVEITEM", DialogueActionRemoveItem.class ); ClassMap.put( "CONSUMESTATUS", DialogueActionConsumeStatus.class ); ClassMap.put( "ADDFACTION", DialogueActionAddFaction.class ); ClassMap.put( "REMOVEFACTION", DialogueActionRemoveFaction.class ); ClassMap.put( "OPENSHOP", DialogueActionOpenShop.class ); ClassMap.put( "ADDSTATUS", DialogueActionAddStatus.class ); } }