Example #1
0
    // void oldCheckTextForKeyWords(string text){
    //  Debug.Log("CHECKING"+text);
    //  bool gotMatch = false;
    //  if(currentPrompt.keywords.Length > 0){
    //      for(int i=0; i< currentPrompt.keywords.Length; i++){
    //          Debug.Log("CHECK "+currentPrompt.keywords[i]);
    //          if(text.ToLower().Contains(currentPrompt.keywords[i].ToLower())) {
    //              Debug.Log("MATCH");
    //              setAndPlayPrompt(currentPrompt.links[i]);
    //              gotMatch = true;
    //              break;
    //          }
    //      }
    //      if(!gotMatch){
    //          setAndPlayPrompt(currentPrompt.defaultLink);
    //      }
    //  } else {
    //      setAndPlayPrompt(currentPrompt.defaultLink);
    //  }
    // }

    void setAndPlayPrompt(DialoguePrompt newPrompt)
    {
        currentPrompt = newPrompt;
        aSource.clip  = newPrompt.speech;
        aSource.Play();
        setGameState(GAME_STATE.SPEAKING);
    }
 public DialogueNode GetNextNode()
 {
     return(CurrentDialogueNode switch
     {
         DialogueLine dl => dl.NextDialogueNode,
         DialoguePrompt dp => dp.SelectedOption.ResponseDialogueNode,
         _ => throw new System.Exception() // just throw a generic error for now if something goes wrong
     });
    public void DisplayNextPrompt()
    {
        dialogueAnimator.SetBool("IsOpen", false);
        if (prompts.Count == 0)
        {
            EndDialogue();
            return;
        }

        DialoguePrompt prompt = prompts.Dequeue();
        NPC            npc    = npcs[prompt.NPC];

        dialogueBubble.GetComponent <Image>().sprite = dialogueSpriteLookup[npc.promptColor];
        currentSpeaker.sprite = npc.headImage.sprite;
        dialogueText.text     = prompt.text;
        dialogueAnimator.SetBool("IsOpen", true);
    }
Example #4
0
        public static new  void CreateEditor(ContentControl document)
        {
            RodskaApp app = (RodskaApp)RodskaApp.Current;

            document.Content = null;
            ITypeFactory typeFactory = app.currentMainVM.GetTypeFactory();
            MainWindow   mainWindow  = (MainWindow)app.MainWindow;

            if (mainWindow.CurrentDocument == null)
            {
                return;
            }
            Dialogue          dialogue = (Dialogue)mainWindow.CurrentDocument;
            DialogueViewModel dialogVM = typeFactory.CreateInstanceWithParametersAndAutoCompletion <DialogueViewModel>(dialogue);
            DialogueControl   control  = new DialogueControl(dialogVM);

            control.conversationWorkspace.ViewModel = new NodeNetwork.ViewModels.NetworkViewModel();
            DialogueNode node = new DialogueNode(dialogue);

            using (control.ConversationWorkspace.ViewModel.SuppressChangeNotifications())
            {
                Dictionary <string, DialoguePromptNode>   PromptNodes   = new Dictionary <string, DialoguePromptNode>();
                Dictionary <string, DialogueResponseNode> ResponseNodes = new Dictionary <string, DialogueResponseNode>();

                if (dialogue.Prompts.Count > 0)
                {
                    foreach (DialoguePrompt prompt in dialogue.Prompts)
                    {
                        DialoguePromptNode dialoguePrompt = new DialoguePromptNode();
                        StringNode         SpeechNode     = new StringNode();
                        SpeechNode.ValueEditor.Value = prompt.Speech;
                        ConnectionViewModel speechToPrompt = new ConnectionViewModel(control.ConversationWorkspace.ViewModel, dialoguePrompt.SpeechInput, SpeechNode.StringOutput);

                        control.ConversationWorkspace.ViewModel.Nodes.Add(SpeechNode);
                        control.ConversationWorkspace.ViewModel.Connections.Add(speechToPrompt);

                        StringNode TitleNode = new StringNode();
                        TitleNode.ValueEditor.Value = prompt.Title;
                        ConnectionViewModel titleToPrompt = new ConnectionViewModel(control.ConversationWorkspace.ViewModel, dialoguePrompt.Title, TitleNode.StringOutput);

                        control.ConversationWorkspace.ViewModel.Nodes.Add(TitleNode);
                        control.ConversationWorkspace.ViewModel.Connections.Add(titleToPrompt);

                        IntegerNode PriorityNode = new IntegerNode();
                        PriorityNode.ValueEditor.Value = prompt.Priority;
                        ConnectionViewModel priorityToPrompt = new ConnectionViewModel(control.ConversationWorkspace.ViewModel, dialoguePrompt.Priority, PriorityNode.Output);

                        control.ConversationWorkspace.ViewModel.Nodes.Add(PriorityNode);
                        control.ConversationWorkspace.ViewModel.Connections.Add(priorityToPrompt);

                        StringNode ActionLuaNode = new StringNode();
                        ActionLuaNode.ValueEditor.Value = prompt.ActionLua ?? "";
                        ConnectionViewModel actionLuaToPrompt = new ConnectionViewModel(control.ConversationWorkspace.ViewModel, dialoguePrompt.ActionLua, ActionLuaNode.StringOutput);

                        control.ConversationWorkspace.ViewModel.Nodes.Add(ActionLuaNode);
                        control.ConversationWorkspace.ViewModel.Connections.Add(actionLuaToPrompt);

                        StringNode ConditionLuaNode = new StringNode();
                        ActionLuaNode.ValueEditor.Value = prompt.ConditionLua ?? "return true";
                        ConnectionViewModel conditionLuaToPrompt = new ConnectionViewModel(control.ConversationWorkspace.ViewModel, dialoguePrompt.ConditionLua, ConditionLuaNode.StringOutput);

                        control.ConversationWorkspace.ViewModel.Nodes.Add(ConditionLuaNode);
                        control.ConversationWorkspace.ViewModel.Connections.Add(conditionLuaToPrompt);

                        ConnectionViewModel promptToDialogue = new ConnectionViewModel(control.ConversationWorkspace.ViewModel, node.Prompts, dialoguePrompt.FinalPrompt);
                        ConnectionViewModel promptToDialogue2;
                        if (DialoguePrompt.GetLeafWithName(prompt.Title, dialogue.InitialPrompts) != null)
                        {
                            promptToDialogue2 = new ConnectionViewModel(control.ConversationWorkspace.ViewModel, node.InitialPrompts, dialoguePrompt.FinalPrompt);
                            control.ConversationWorkspace.ViewModel.Connections.Add(promptToDialogue2);
                        }
                        control.ConversationWorkspace.ViewModel.Nodes.Add(dialoguePrompt);
                        control.ConversationWorkspace.ViewModel.Connections.Add(promptToDialogue);

                        PromptNodes[prompt.Title] = dialoguePrompt;
                    }
                }

                if (dialogue.Responses.Count > 0)
                {
                    Console.WriteLine("Responses found.");
                    foreach (DialogueResponse response in dialogue.Responses)
                    {
                        Console.WriteLine(response);
                        DialogueResponseNode dialogueResponse = new DialogueResponseNode();
                        StringNode           SpeechNode       = new StringNode();
                        SpeechNode.ValueEditor.Value = response.Speech;
                        ConnectionViewModel speechToResponse = new ConnectionViewModel(control.ConversationWorkspace.ViewModel, dialogueResponse.SpeechInput, SpeechNode.StringOutput);

                        control.ConversationWorkspace.ViewModel.Nodes.Add(SpeechNode);
                        control.ConversationWorkspace.ViewModel.Connections.Add(speechToResponse);

                        StringNode TitleNode = new StringNode();
                        TitleNode.ValueEditor.Value = response.Title;
                        ConnectionViewModel titleToPrompt = new ConnectionViewModel(control.ConversationWorkspace.ViewModel, dialogueResponse.Title, TitleNode.StringOutput);

                        control.ConversationWorkspace.ViewModel.Nodes.Add(TitleNode);
                        control.ConversationWorkspace.ViewModel.Connections.Add(titleToPrompt);

                        IntegerNode OrderNode = new IntegerNode();
                        OrderNode.ValueEditor.Value = response.Order;
                        ConnectionViewModel priorityToPrompt = new ConnectionViewModel(control.ConversationWorkspace.ViewModel, dialogueResponse.Order, OrderNode.Output);

                        control.ConversationWorkspace.ViewModel.Nodes.Add(OrderNode);
                        control.ConversationWorkspace.ViewModel.Connections.Add(priorityToPrompt);

                        StringNode ActionLuaNode = new StringNode();
                        ActionLuaNode.ValueEditor.Value = response.ActionLua ?? "";
                        ConnectionViewModel actionLuaToPrompt = new ConnectionViewModel(control.ConversationWorkspace.ViewModel, dialogueResponse.ActionLua, ActionLuaNode.StringOutput);

                        control.ConversationWorkspace.ViewModel.Nodes.Add(ActionLuaNode);
                        control.ConversationWorkspace.ViewModel.Connections.Add(actionLuaToPrompt);

                        StringNode ConditionLuaNode = new StringNode();
                        ActionLuaNode.ValueEditor.Value = response.ConditionLua ?? "return true";
                        ConnectionViewModel conditionLuaToPrompt = new ConnectionViewModel(control.ConversationWorkspace.ViewModel, dialogueResponse.ConditionLua, ConditionLuaNode.StringOutput);

                        control.ConversationWorkspace.ViewModel.Nodes.Add(ConditionLuaNode);
                        control.ConversationWorkspace.ViewModel.Connections.Add(conditionLuaToPrompt);

                        ConnectionViewModel promptToDialogue = new ConnectionViewModel(control.ConversationWorkspace.ViewModel, node.Responses, dialogueResponse.FinalPrompt);
                        control.ConversationWorkspace.ViewModel.Nodes.Add(dialogueResponse);
                        control.ConversationWorkspace.ViewModel.Connections.Add(promptToDialogue);

                        ResponseNodes[response.Title] = dialogueResponse;
                    }
                }

                foreach (DialoguePrompt prompt in dialogue.Prompts)
                {
                    DialoguePromptNode pNode = PromptNodes[prompt.Title];
                    if (prompt.Responses.Count > 0 && pNode != null)
                    {
                        foreach (DialogueResponse response in prompt.Responses)
                        {
                            if (ResponseNodes[response.Title] != null)
                            {
                                ConnectionViewModel connection = new ConnectionViewModel(control.ConversationWorkspace.ViewModel, pNode.Responses, ResponseNodes[response.Title].FinalPrompt);
                                control.ConversationWorkspace.ViewModel.Connections.Add(connection);
                            }
                        }
                        if (prompt.ChainedPrompts.Count > 0 && pNode != null)
                        {
                            foreach (DialoguePrompt prompt1 in prompt.ChainedPrompts)
                            {
                                if (PromptNodes[prompt.Title] != null)
                                {
                                    ConnectionViewModel connection = new ConnectionViewModel(control.ConversationWorkspace.ViewModel, pNode.ChainedPromptsInput, PromptNodes[prompt.Title].FinalPrompt);
                                    control.ConversationWorkspace.ViewModel.Connections.Add(connection);
                                }
                            }
                        }
                    }
                }

                foreach (DialogueResponse response in dialogue.Responses)
                {
                    DialogueResponseNode rNode = ResponseNodes[response.Title];
                    if (response.Prompts.Count > 0 && rNode != null)
                    {
                        foreach (DialoguePrompt prompt in response.Prompts)
                        {
                            if (PromptNodes[prompt.Title] != null)
                            {
                                ConnectionViewModel connection = new ConnectionViewModel(control.ConversationWorkspace.ViewModel, rNode.PromptsInput, PromptNodes[prompt.Title].FinalPrompt);
                                control.ConversationWorkspace.ViewModel.Connections.Add(connection);
                            }
                        }
                    }
                }
            }
            node.Name = dialogue.Title;
            control.conversationWorkspace.ViewModel.Nodes.Add(node);

            control.CurrentDocument = dialogue;
            document.Content        = control;
        }