// 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); }
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; }