public override bool DropInt(Circumstance C, Literal goal, Unifier un) { Unifier bak = un.Clone(); bool isCurrentInt = false; IEnumerator <Intention> iint = C.GetAllIntentions(); while (iint.Current != null) { Intention i = iint.Current; IPlanBody pb = i.Peek().GetPlan().GetBody(); while (pb != null) { if (pb.GetBodyType() == BodyType.Body_Type.achieve || pb.GetBodyType() == BodyType.Body_Type.achieveNF) { if (un.Unifies(pb.GetBodyTerm(), goal)) { C.DropIntention(i); isCurrentInt = isCurrentInt || i.Equals(C.GetSelectedIntention()); un = bak.Clone(); break; } } pb = pb.GetBodyNext(); } } return(isCurrentInt); }
public EnumeratorImpl(Circumstance C, Unifier un, Trigger g, ITerm intAsTerm) { this.g = g; this.un = un; this.C = C; this.intAsTerm = intAsTerm; intIterator = C.GetAllIntentions(); }
/** * Drops an intention based on a goal argument * * returns true if the current intention is dropped */ public virtual bool DropInt(Circumstance C, Literal goal, Unifier un) { Unifier bak = un.Clone(); Trigger g = new Trigger(TEOperator.add, TEType.achieve, goal); bool isCurrentInt = false; IEnumerator <Intention> iint = C.GetAllIntentions(); while (iint.Current != null) { Intention i = iint.Current; if (i.HasTrigger(g, un)) { C.DropIntention(i); isCurrentInt = isCurrentInt || i.Equals(C.GetSelectedIntention()); un = bak.Clone(); } } return(isCurrentInt); }