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 DecoratorRepeat extends AbstractDecorator
{
private BehaviourTreeState UntilState;
private int Repeats;
private int i = 0;
@Override
public BehaviourTreeState evaluate(GameEntity entity)
{
BehaviourTreeState retState = node.evaluate(entity);
if (UntilState != null)
{
if (retState == UntilState)
{
return BehaviourTreeState.SUCCEEDED;
}
}
i++;
if (i == Repeats)
{
return BehaviourTreeState.SUCCEEDED;
}
return BehaviourTreeState.RUNNING;
}
@Override
public void parse(Element xmlElement)
{
super.parse(xmlElement);
if (xmlElement.getAttribute("Until", null) != null)
{
UntilState = BehaviourTreeState.valueOf(xmlElement.getAttribute("State").toUpperCase());
}
Repeats = xmlElement.getInt("Repeats", -1);
}
}