package Roguelike.Entity.AI.BehaviourTree.Decorators;
import com.badlogic.gdx.utils.XmlReader.Element;
import Roguelike.Entity.GameEntity;
import Roguelike.Entity.AI.BehaviourTree.BehaviourTree.BehaviourTreeState;
public class DecoratorSetState extends AbstractDecorator
{
private BehaviourTreeState succeed = BehaviourTreeState.SUCCEEDED;
private BehaviourTreeState failed = BehaviourTreeState.FAILED;
private BehaviourTreeState running = BehaviourTreeState.RUNNING;
@Override
public BehaviourTreeState evaluate(GameEntity entity)
{
BehaviourTreeState retState = node.evaluate(entity);
if (retState == BehaviourTreeState.SUCCEEDED)
{
State = succeed;
}
else if (retState == BehaviourTreeState.RUNNING)
{
State = running;
}
else if (retState == BehaviourTreeState.FAILED)
{
State = failed;
}
return State;
}
@Override
public void parse(Element xmlElement)
{
super.parse(xmlElement);
succeed = failed = running = BehaviourTreeState.valueOf(xmlElement.getAttribute("State").toUpperCase());
if (xmlElement.get("Succeed", null) != null) { succeed = BehaviourTreeState.valueOf(xmlElement.getAttribute("Succeed").toUpperCase()); }
if (xmlElement.get("Running", null) != null) { running = BehaviourTreeState.valueOf(xmlElement.getAttribute("Running").toUpperCase()); }
if (xmlElement.get("Failed", null) != null) { failed = BehaviourTreeState.valueOf(xmlElement.getAttribute("Failed").toUpperCase()); }
}
}