protected void ReactiveIfFailed() { if (hasFailed()) { Status = Goal_Status.inactive; } }
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); } }
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); }
public Goal(T owner, Agent_Goal_Types type) { Owner = owner; Type = type; Status = Goal_Status.inactive; }