package Roguelike.Entity.AI.BehaviourTree.Selectors; import Roguelike.Entity.GameEntity; import Roguelike.Entity.AI.BehaviourTree.BehaviourTree.BehaviourTreeState; // A selector that will run through the nodes until the first non-failed node is found public class SelectorPriority extends AbstractSelector { //####################################################################// //region Public Methods //---------------------------------------------------------------------- @Override public BehaviourTreeState evaluate(GameEntity entity) { BehaviourTreeState state = BehaviourTreeState.FAILED; int i = 0; for (; i < nodes.size; i++) { BehaviourTreeState temp = nodes.get(i).evaluate(entity); if (temp != BehaviourTreeState.FAILED) { state = temp; break; } } i++; for (; i < nodes.size; i++) { nodes.get(i).cancel(); } this.State = state; return state; } //---------------------------------------------------------------------- @Override public void cancel() { for (int i = 0; i < nodes.size; i++) { nodes.get(i).cancel(); } } //endregion Public Methods //####################################################################// }