Ejemplo n.º 1
0
 private TaskState ProcessByState(Task processedTask, TaskState state)
 {
     //Global.Log ("Processing task of sequence (" + ToString () + "): " + processedTask.ToString() + " with state: " + state.ToString());
     switch (state) {
     case TaskState.Ready:
         return ExecuteSubTask (processedTask);
     case TaskState.Running:
         return TaskState.Running;
     case TaskState.Success:
         processedTask.State = TaskState.Ready;
         currentTaskIndex++;
         if (currentTaskIndex >= SubTasks.Count) {
             currentTaskIndex = 0;
             return TaskState.Success;
         }
         return TaskState.Running;
     case TaskState.Failed:
         processedTask.State = TaskState.Ready;
         //setting next task to first sub action
         currentTaskIndex = 0;
         return TaskState.Failed;
     default:
         //unexpected
         return TaskState.Failed;
     }
 }
Ejemplo n.º 2
0
 private TaskState ExecuteSubTask(Task subTask)
 {
     //Global.Log ("Executing sequence subtask in sequence: " + subTask.ToString ());
     var state = subTask.Execute ();
     if (state == TaskState.Ready)
         return TaskState.Success; //maybe failed as this is unexpected
     return ProcessByState (subTask, state);
 }
Ejemplo n.º 3
0
 public CompositeTask AddTask(Task task)
 {
     SubTasks.Add (task);
     return this;
 }