Exemple #1
0
 /* returns: >0 the intention was changed
  *           1 = intention must continue running
  *           2 = fail event was generated and added in C.E
  *           3 = simply removed without event
  */
 public virtual int DropDesire(Intention i, Trigger g, Reasoner rs, Unifier un)
 {
     if (i != null && i.DropDesire(g, un))
     {
         if (rs.HasDesireListener())
         {
             foreach (Desire gl in rs.GetDesiresListeners())
             {
                 gl.DesireFinished(g, Desire.FinishStates.achieved);
             }
         }
         //continue the intention
         if (!i.IsFinished())
         {
             if (rs.GetCircumstance().GetSelectedIntention() != i)
             {
                 i.Peek().RemoveCurrentStep();
             }
             rs.ApplyClrInt(i);
             return(1);
         }
         else
         {
             rs.ApplyClrInt(i);
             return(3);
         }
     }
     return(0);
 }
Exemple #2
0
        public virtual void DropDesireInEvent(Reasoner rs, Event e, Intention i)
        {
            Circumstance C = rs.GetCircumstance();

            C.RemoveEvent(e);
            if (i != null)
            {
                if (rs.HasDesireListener())
                {
                    foreach (Desire gl in rs.GetDesiresListeners())
                    {
                        gl.DesireFinished(e.GetTrigger(), Desire.FinishStates.achieved);
                    }
                    i.Peek().RemoveCurrentStep();
                    rs.ApplyClrInt(i);
                    C.AddRunningIntention(i);
                }
            }
        }