public Queue <AIAction> GetActionPlan() { Queue <AIAction> queue = new Queue <AIAction>(); while (currentNode.GetAction() != null) { queue.Enqueue(currentNode.GetAction()); currentNode = currentNode.GetParent(); } Queue <AIAction> actionPlan = new Queue <AIAction>(); while (queue.Count > 0) { actionPlan.Enqueue(queue.Dequeue()); } return(actionPlan); }
public Queue <IAIAction <L, V> > GetActionPlan() { var queue = new Queue <IAIAction <L, V> >(); while (currentNode.GetAction() != null) { queue.Enqueue(currentNode.GetAction()); currentNode = currentNode.GetParent(); } var actionPlan = new Queue <IAIAction <L, V> >(); while (queue.Count > 0) { actionPlan.Enqueue(queue.Dequeue()); } return(actionPlan); }
private bool AchievesPrecondition(AINode node) { foreach (var effect in node.GetAction().GetEffects()) { if (currentNode.GetState().GetPreconditions().ContainsKey(effect.Key) && currentNode.GetState().GetPreconditions()[effect.Key].Equals(effect.Value)) { return(true); } } return(false); }