package Roguelike.Entity.AI.BehaviourTree.Decorators;
import java.io.IOException;
import java.util.HashMap;
import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.utils.XmlReader;
import com.badlogic.gdx.utils.XmlReader.Element;
import com.badlogic.gdx.utils.reflect.ClassReflection;
import com.badlogic.gdx.utils.reflect.ReflectionException;
import Roguelike.Entity.GameEntity;
import Roguelike.Entity.AI.BehaviourTree.BehaviourTreeNode;
import Roguelike.Entity.AI.BehaviourTree.BehaviourTree.BehaviourTreeState;
public class DecoratorImport extends AbstractDecorator
{
@Override
public BehaviourTreeState evaluate(GameEntity entity)
{
return node.evaluate(entity);
}
@Override
public void cancel()
{
node.cancel();
}
@Override
public void parse(Element xmlElement)
{
String path = xmlElement.getAttribute("Path");
XmlReader importXml = new XmlReader();
Element importXmlElement = null;
try
{
importXmlElement = importXml.parse(Gdx.files.internal("AI/"+path));
}
catch (IOException e)
{
e.printStackTrace();
}
try
{
Class<BehaviourTreeNode> c = ClassMap.get(importXmlElement.getName().toUpperCase());
BehaviourTreeNode node = (BehaviourTreeNode)ClassReflection.newInstance(c);
setNode(node);
node.parse(importXmlElement);
}
catch (ReflectionException e) { e.printStackTrace(); }
}
}