public void SendIntention(Supervisor.Action intention) { IAssistant assistant = assistantGameObject.GetComponent <IAssistant>(); // Check if intention is in current actions bool intentionIsValid = true; foreach (Supervisor.Action workflowAction in workflow.GetCurrentActions()) { foreach (string workflowInputField in workflowAction.inputFields.Keys) { Debug.Log(workflowAction.inputFields[workflowInputField].value + intention.inputFields[workflowInputField].value); if (workflowAction.inputFields[workflowInputField].value != intention.inputFields[workflowInputField].value) { intentionIsValid = false; } } } if (intentionIsValid) { assistant.DoAction(intention); workflow.Forward(intention); } if (workflow.GetCurrentActions()[0].isPassive) { SendIntention(workflow.GetCurrentActions()[0]); } }
public void Forward(Supervisor.Action action = null) { if (action == null) { action = this.currentActions[0]; } // Search for action in currentActions int actionIndex = 0; int counter = 0; foreach (Supervisor.Action currentAction in GetCurrentActions()) { if (currentAction.inputFields["action"].value == action.inputFields["action"].value && currentAction.inputFields["target"].value == action.inputFields["target"].value && currentAction.inputFields["parameter"].value == action.inputFields["parameter"].value) { actionIndex = counter; } counter++; } this.previousAction = GetCurrentActions()[actionIndex]; this.currentActions = GetCurrentActions()[actionIndex].nextActions; }
public void AddNextAction(Supervisor.Action nextAction) { nextActions.Add(nextAction); }