Example #1
0
    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]);
        }
    }
Example #2
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;
        }
Example #3
0
 public void AddNextAction(Supervisor.Action nextAction)
 {
     nextActions.Add(nextAction);
 }