示例#1
0
 protected void ReactiveIfFailed()
 {
     if (hasFailed())
     {
         Status = Goal_Status.inactive;
     }
 }
示例#2
0
        protected Goal_Status ProcessSubgoals()
        {
            while (SubGoals.Count > 0 &&
                   (SubGoals.Peek().isComplete() && SubGoals.Peek().hasFailed()))
            {
                SubGoals.Peek().Terminate();
                var item = SubGoals.Pop();
                item = null;
            }

            if (SubGoals.Count > 0)
            {
                Goal_Status gs = SubGoals.Peek().Process();
                if (gs == Goal_Status.completed && SubGoals.Count > 1)
                {
                    return(Goal_Status.active);
                }

                return(gs);
            }
            else
            {
                return(Goal_Status.completed);
            }
        }
示例#3
0
        public override Goal_Status Process()
        {
            ActiveIfInactive();

            Goal_Status sgs = ProcessSubgoals();

            if (sgs == Goal_Status.completed || sgs == Goal_Status.failed)
            {
                //if (!Owner.isProcessed())
                {
                    Status = Goal_Status.inactive;
                }
            }

            return(Status);
        }
示例#4
0
 public Goal(T owner, Agent_Goal_Types type)
 {
     Owner  = owner;
     Type   = type;
     Status = Goal_Status.inactive;
 }