void Instance_OnDialogueNodeReached(DialogueNodeComponent node) { if (enabled && gameObject.activeInHierarchy && node == _dialogueNode) { TriggerEvent(); } }
public override void OnInspectorGUI() { base.OnInspectorGUI(); GUILayout.Space(25); if (GUILayout.Button("Add Dialogue Node", GUILayout.ExpandWidth(false))) { CreateSuccessorNode(); } GUILayout.BeginHorizontal(); GUILayout.Label("Speaker", GUILayout.ExpandWidth(false)); _speaker = GUILayout.TextField(_speaker); GUILayout.EndHorizontal(); GUILayout.Label("Message:", GUILayout.ExpandWidth(false)); _message = GUILayout.TextArea(_message); GUILayout.Space(20); if (GUILayout.Button("Add Jump Node", GUILayout.ExpandWidth(false))) { CreateJumpNode(); } GUILayout.BeginHorizontal(); GUILayout.Label("Jump Target", GUILayout.ExpandWidth(false)); _jumpTarget = EditorGUILayout.ObjectField(_jumpTarget, typeof(DialogueNodeComponent), true) as DialogueNodeComponent; GUILayout.EndHorizontal(); }
void Instance_OnDialogueNodeCompleted(DialogueNodeComponent node) { if (node == _dialogueNode) { TriggerEvent(); } }
void Instance_OnDialogueBranchTaken(DialogueNodeComponent currentNode, DialogueTransitionNodeComponent node) { if (enabled && gameObject.activeInHierarchy && node == _transitionNode) { TriggerEvent(); } }
private void SetActionButtons(DialogueNodeComponent dialogueNode) { if (dialogueNode.HasBranch) { foreach (DialogueTransitionNodeComponent transitionNode in dialogueNode.DialogueTransitions) { // Create a button. DialogueButton button = GameObject.Instantiate(_buttonPrefab) as DialogueButton; button.ButtonText = transitionNode.DialogueTransitionData.TransitionText; button.transform.SetParent(_buttonArea); button.transform.localScale = Vector3.one; button.IsTransition = true; button.TransitionNode = transitionNode; button.ButtonPressed.AddListener(ButtonPressed); button.gameObject.SetActive(true); } } else { // Just do one button. DialogueButton button = GameObject.Instantiate(_buttonPrefab) as DialogueButton; button.ButtonText = "Continue..."; button.transform.SetParent(_buttonArea); button.transform.localScale = Vector3.one; button.ButtonPressed.AddListener(ButtonPressed); button.gameObject.SetActive(true); } }
public void Show(DialogueNodeComponent dialogueNode) { ClearButtons(); _currentNode = dialogueNode; if (_currentNode == null) { this.gameObject.SetActive(false); MetablastUI.Instance.BiologView.SetTint(0f); return; } else { gameObject.SetActive(true); } MessageFrameTitle = dialogueNode.DialogueData.Sender; _allowProgression = false; _textAnimator.ShowText(dialogueNode.DialogueData.Message, (t) => MessageText = t, () => { //Debug.Log("Setting buttons"); SetActionButtons(dialogueNode); _allowProgression = true; }); }
public static void CreateJumpNode(GameObject parent, DialogueNodeComponent targetNode) { GameObject jumpObject = new GameObject(); jumpObject.transform.parent = parent.transform; jumpObject.name = "DialogueJump_" + targetNode.name; DialogueJumpNode jumpNode = jumpObject.AddComponent <DialogueJumpNode>(); jumpNode.JumpTarget = targetNode; }
public override void OnInspectorGUI() { base.OnInspectorGUI(); DialogueNodeComponent nodeTarget = (DialogueNodeComponent)target; if (nodeTarget.DialogueData == null) { nodeTarget.DialogueData = new DialogueNodeData(); } GUILayout.Label("Sender"); nodeTarget.DialogueData.Sender = GUILayout.TextField(nodeTarget.DialogueData.Sender); GUILayout.Label("Message"); nodeTarget.DialogueData.Message = GUILayout.TextArea(nodeTarget.DialogueData.Message); nodeTarget.PausesGame = GUILayout.Toggle(nodeTarget.PausesGame, "Pause Game"); GUILayout.Space(25); if (GUILayout.Button("Add Transition Node", GUILayout.ExpandWidth(false))) { CreateTransitionNode(); } GUILayout.BeginHorizontal(); GUILayout.Label("Transition Text:", GUILayout.ExpandWidth(false)); _transitionNodeText = GUILayout.TextField(_transitionNodeText); GUILayout.EndHorizontal(); GUILayout.Space(20); if (GUILayout.Button("Add Dialogue Node", GUILayout.ExpandWidth(false))) { CreateSuccessorNode(); } GUILayout.BeginHorizontal(); GUILayout.Label("Speaker", GUILayout.ExpandWidth(false)); _speaker = GUILayout.TextField(_speaker); GUILayout.EndHorizontal(); GUILayout.Label("Message:", GUILayout.ExpandWidth(false)); _message = GUILayout.TextArea(_message); GUILayout.Space(20); if (GUILayout.Button("Add Jump Node", GUILayout.ExpandWidth(false))) { CreateJumpNode(); } GUILayout.BeginHorizontal(); GUILayout.Label("Jump Target", GUILayout.ExpandWidth(false)); _jumpTarget = EditorGUILayout.ObjectField(_jumpTarget, typeof(DialogueNodeComponent), true) as DialogueNodeComponent; GUILayout.EndHorizontal(); }
public void StartDialogue(DialogueNodeComponent dialogueRoot) { if (dialogueRoot.PausesGame && GameState.Instance.PauseLevel < PauseLevel.Dialogue) { GameState.Instance.PauseLevel = PauseLevel.Dialogue; } _view.Show(dialogueRoot); if (OnDialogueNodeReached != null) { OnDialogueNodeReached(dialogueRoot); } }
public static void CreateDialogueSuccessor(GameObject parent, string speaker, string message) { GameObject successorObject = new GameObject(); successorObject.transform.parent = parent.transform; successorObject.name = "Dialogue_" + speaker; DialogueNodeComponent nodeComponent = successorObject.AddComponent <DialogueNodeComponent>(); nodeComponent.DialogueData = new DialogueNodeData(); nodeComponent.DialogueData.Sender = speaker; nodeComponent.DialogueData.Message = message; }
protected virtual void Start() { foreach (Transform child in transform) { _childrenNodes.AddRange(child.GetComponents <DialogueTransitionNodeComponent>()); DialogueNodeComponent successor = child.GetComponent <DialogueNodeComponent>(); if (successor) { _successor = successor; } } if (HasBranch && _successor) { DebugFormatter.LogError(this, "Dialogue node has both branch transitions and immediate successor. Dialogue nodes can contain one or the other, but not both."); } }
void _view_OnDialogueBranchTaken(DialogueNodeComponent currentNode, DialogueTransitionNodeComponent node) { if (OnDialogueNodeCompleted != null) { OnDialogueNodeCompleted(currentNode); } _view.Show(node.DialogueNodeComponent); if (OnDialogueBranchTaken != null) { OnDialogueBranchTaken(currentNode, node); } if (OnDialogueNodeReached != null) { OnDialogueNodeReached(node.DialogueNodeComponent); } }
void _view_OnDialogueViewProgressed(DialogueNodeComponent node) { if (OnDialogueNodeCompleted != null) { OnDialogueNodeCompleted(node); } if (node.NextDialogueNode == null && GameState.Instance.PauseLevel == PauseLevel.Dialogue) { GameState.Instance.PauseLevel = PauseLevel.Unpaused; _view.Show(node.NextDialogueNode); return; } _view.Show(node.NextDialogueNode); if (OnDialogueNodeReached != null) { OnDialogueNodeReached(node.NextDialogueNode); } }
void Start() { foreach (Transform child in transform) { DialogueNodeComponent dialogue = child.GetComponent <DialogueNodeComponent>(); if (dialogue != null) { if (_successorNode == null) { _successorNode = dialogue; } else { Debug.Log("No??"); DebugFormatter.LogError(this, "Found multiple dialogue node children. A {0} component can only have one {1} child.", GetType().Name, typeof(DialogueNodeComponent).Name); return; } } } }
public void Show(DialogueNodeComponent dialogueNode) { MetablastUI.Instance.BiologView.SetTint(0.5f); _currentNode = dialogueNode; if (_currentNode == null) { _dialogueFrame.Visible = false; MetablastUI.Instance.BiologView.SetTint(0f); return; } else { _dialogueFrame.Visible = true; } _currentNode = dialogueNode; MessageFrameTitle = dialogueNode.DialogueData.Sender; MessageText = dialogueNode.DialogueData.Message; _lastDisplayCharacterIndex = 0; SetActionButtons(dialogueNode); _timeAtLastChar = Time.time; }
public void SetActionButtons(DialogueNodeComponent dialogueNode) { foreach (Control actionButton in _actionButtonsFrame.Controls) { actionButton.MouseClick -= button_MouseClick; } _actionButtonsFrame.Controls.Clear(); if (dialogueNode.HasBranch) { foreach (DialogueTransitionNodeComponent transitionNode in dialogueNode.DialogueTransitions) { Button button = new Button(); button.AutoSize = AutoSize.Horizontal; button.Dock = DockStyle.Left; button.Margin = new Margin(4, 0, 0, 0); button.Text = transitionNode.DialogueTransitionData.TransitionText; button.Style = "Button - Pointed"; button.Tag = transitionNode; button.MouseClick += button_MouseClick; _actionButtonsFrame.Controls.Add(button); } } else { Button button = new Button(); button.AutoSize = AutoSize.Horizontal; button.Dock = DockStyle.Left; button.Margin = new Margin(4, 0, 0, 0); button.Text = "Continue..."; button.Style = "Button - Pointed"; button.MouseClick += continueButton_MouseClick; _actionButtonsFrame.Controls.Add(button); } _actionButtonsFrame.ForceFlowLayout(); }
private void CreateJumpNode() { DialogueEditorHelper.CreateJumpNode((target as DialogueTransitionNodeComponent).gameObject, _jumpTarget); _jumpTarget = null; }
private string GetHTMLForDialogueNode(DialogueNodeComponent nodeComponent, HashSet <DialogueNodeComponent> encounteredNodes) { if (encounteredNodes.Contains(nodeComponent)) { return("<H4 style=\"margin-bottom:5px\";>Reference: " + nodeComponent.name + "</H4>\n"); } else { encounteredNodes.Add(nodeComponent); } string toReturn = "<H4 style=\"margin-bottom:5px\";>" + nodeComponent.name + "</H4>\n"; toReturn += "<div style=\"margin-left:25px;border:2px solid;margin-bottom:25px;padding-left:20px\";>"; toReturn += "<p>"; toReturn += "<body><i>Sender:</i> " + nodeComponent.DialogueData.Sender + "</body><br>\n"; toReturn += "<body><i>Message:</i> " + nodeComponent.DialogueData.Message + "</body>\n"; toReturn += "<br>\n"; DialogueNodeComponent successor = null; List <DialogueTransitionNodeComponent> transitions = new List <DialogueTransitionNodeComponent>(); foreach (Transform child in nodeComponent.transform) { transitions.AddRange(child.GetComponents <DialogueTransitionNodeComponent>()); successor = child.GetComponent <DialogueNodeComponent>() ?? successor; } if (successor) { toReturn += "<div style=\"margin-left:25px\";>"; toReturn += "<p>"; if (successor is DialogueJumpNode) { if ((successor as DialogueJumpNode).JumpTarget) { toReturn += GetHTMLForDialogueNode((successor as DialogueJumpNode).JumpTarget, encounteredNodes); } } else { toReturn += GetHTMLForDialogueNode(successor, encounteredNodes); } toReturn += "</p>"; toReturn += "</div>"; } foreach (DialogueTransitionNodeComponent transition in transitions) { string text = transition.DialogueTransitionData.TransitionText; toReturn += "<H4 style=\"margin-bottom:5px\";>Transition (" + text + ")</H4>"; DialogueNodeComponent transitionSucessor = null; foreach (Transform child in transition.transform) { transitionSucessor = child.GetComponent <DialogueNodeComponent>() ?? transitionSucessor; } toReturn += GetHTMLForDialogueNode(transitionSucessor, encounteredNodes); } toReturn += "</p>"; toReturn += "</div>"; return(toReturn); }