Ejemplo n.º 1
0
        public static Action ToAction(ActionLibrary.IAction a)
        {
            Char[]   delimiters = { '(', ',', ' ', ')' };
            String[] splitted   = a.Name.ToString().Split(delimiters);

            return(new Action(a.Target.ToString(), splitted[1], splitted[3], splitted[5], splitted[7], splitted[9]));
        }
Ejemplo n.º 2
0
        private void decide(SuecaEvent ev)
        {
            //Console.WriteLine("DECING FOR EVENT: " + ev.Name);
            string[] tags     = ev.Tags.ToArray();
            string[] meanings = ev.Meanings.ToArray();

            IEnumerable <ActionLibrary.IAction> possibleActions = _rpc.Decide();

            if (possibleActions == null || possibleActions.IsEmpty())
            {
                //Console.WriteLine("No action");
                return;
            }
            else
            {
                ActionLibrary.IAction chosenAction = possibleActions.FirstOrDefault();
                saveToFile();

                switch (chosenAction.Key.ToString())
                {
                case "Speak":
                    Name currentState = chosenAction.Parameters[0];
                    Name nextState    = chosenAction.Parameters[1];
                    Name meaning      = chosenAction.Parameters[2];
                    Name style        = chosenAction.Parameters[3];

                    var possibleDialogs = _iat.GetDialogueActions(IATConsts.AGENT, currentState, nextState, meaning, style);
                    var dialog          = getUtterance(possibleDialogs);

                    Console.WriteLine(dialog);
                    EmotionalSuecaPlayer.SuecaPub.PerformUtteranceWithTags("", dialog, tags, meanings);
                    break;

                case "Animation":
                    Name state       = chosenAction.Parameters[0];
                    Name emotionName = chosenAction.Parameters[1];
                    Console.WriteLine("[ANIMATION] Soft reaction to " + state + " with the style " + emotionName);
                    break;

                default:
                    Console.WriteLine("Unknown Action");
                    break;
                }
            }
        }
Ejemplo n.º 3
0
        public static Action ToAction(ActionLibrary.IAction a, IntegratedAuthoringToolAsset IAT)
        {
            Char[]   delimiters = { '(', ',', ' ', ')' };
            String[] splitted   = a.Name.ToString().Split(delimiters);

            switch (splitted[0])
            {
            case "Action":
                return(new DSTAction(splitted[0], a.Target.ToString(), splitted[1], splitted[3], splitted[5], splitted[7], splitted[9], a.Name.ToString()));

            case "Speak":
                var dialog = IAT.GetDialogueActions(
                    a.Parameters[0],
                    a.Parameters[1],
                    a.Parameters[2],
                    a.Parameters[3]).FirstOrDefault();
                return(new SpeakAction(splitted[0], a.Target.ToString(), splitted[1], splitted[3], splitted[5], splitted[7], a.Name.ToString(), dialog.Utterance));

            default:
                throw new Exception("This type of action (" + splitted[0] + ") is not recognized");
            }
        }
Ejemplo n.º 4
0
    public void Decide()
    {
        IEnumerable <ActionLibrary.IAction> possibleActions = rpc.Decide();

        ActionLibrary.IAction chosenAction = possibleActions.FirstOrDefault();

        if (chosenAction == null)
        {
            Console.WriteLine("No action");
            //saveToFile();
            return;
        }
        else
        {
            //saveToFile();


            switch (chosenAction.Key.ToString())
            {
            case "Speak":

                Name currentState = chosenAction.Parameters[0];
                Name nextState    = chosenAction.Parameters[1];
                Name meaning      = chosenAction.Parameters[2];
                Name style        = chosenAction.Parameters[3];

                var possibleDialogs = GameGlobals.FAtiMAIat.GetDialogueActions(currentState, nextState, meaning, style);
                int randomUttIndex  = UnityEngine.Random.Range(0, possibleDialogs.Count());
                var dialog          = possibleDialogs[randomUttIndex].Utterance;

                currSpeeches.Add(invoker.GetName() + ": \"" + StripSpeechSentence(dialog) + "\"");
                break;

            default:
                break;
            }
        }
    }
Ejemplo n.º 5
0
        private void decide(SuecaEvent ev)
        {
            Console.WriteLine(_agentName + "---" + "DECING FOR EVENT: " + ev.Name);
            string[] tags     = ev.Tags.ToArray();
            string[] meanings = ev.Meanings.ToArray();

            try
            {
                IEnumerable <ActionLibrary.IAction> possibleActions = _rpc.Decide();

                if (possibleActions == null || possibleActions.IsEmpty())
                {
                    Console.WriteLine(_agentName + "---" + "No action");
                    saveToFile();
                    return;
                }
                else
                {
                    ActionLibrary.IAction chosenAction = possibleActions.FirstOrDefault();
                    saveToFile();

                    switch (chosenAction.Key.ToString())
                    {
                    case "Speak":

                        Name currentState    = chosenAction.Parameters[0];
                        Name nextState       = chosenAction.Parameters[1];
                        Name meaning         = chosenAction.Parameters[2];
                        Name style           = chosenAction.Parameters[3];
                        var  possibleDialogs = _iat.GetDialogueActions(IATConsts.AGENT, currentState, nextState, meaning, style);
                        var  dialog          = getUtterance(possibleDialogs);

                        Console.WriteLine(_agentName + "---" + dialog);
                        EmotionalSuecaPlayer.SuecaPub.StartedUtterance(_esp._id, ev.Name, "");
                        EmotionalSuecaPlayer.SuecaPub.PerformUtteranceWithTags("", dialog, tags, meanings);

                        break;

                    case "Animation":
                        Name   state       = chosenAction.Parameters[0];
                        string emotionName = chosenAction.Parameters[1].ToString().ToLower();
                        if (emotionName == "distress" || emotionName == "shame")
                        {
                            emotionName = "sadness";
                        }
                        else if (emotionName == "pride")
                        {
                            emotionName = "joy";
                        }
                        else if (emotionName == "reproach")
                        {
                            emotionName = "anger";
                        }
                        Console.WriteLine("[ANIMATION] reaction to " + state + " with the style " + emotionName);
                        EmotionalSuecaPlayer.SuecaPub.PlayAnimation("", emotionName + "3");
                        break;

                    default:
                        Console.WriteLine(_agentName + "---" + "Unknown Action");
                        break;
                    }
                }
            }
            catch (Exception e)
            {
                Console.WriteLine(_agentName + "---" + e.ToString());
            }
        }