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])); }
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; } } }
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"); } }
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; } } }
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()); } }