private void CreateOptionsGUI() { EditorGUILayout.LabelField("Dialogue options", EditorStyles.boldLabel); scrollPos = EditorGUILayout.BeginScrollView(scrollPos, GUILayout.Height(Mathf.Min(_target.options.Count * 21, 130f) + 5)); foreach (ButtonDialog option in _target.options) { EditorGUILayout.BeginHorizontal(); string buttonLabel = option.ID + ": " + option.label; if (option.label == "") { buttonLabel += "(Untitled)"; } if (_target.isTimed && _target.options.IndexOf(option) == _target.defaultOption) { buttonLabel += " (Default)"; } if (GUILayout.Toggle(option.isEditing, buttonLabel, "Button")) { if (_target.selectedOption != option) { DeactivateAllOptions(); ActivateOption(option); } } if (GUILayout.Button(Resource.CogIcon, GUILayout.Width(20f), GUILayout.Height(15f))) { SideMenu(option); } EditorGUILayout.EndHorizontal(); } EditorGUILayout.EndScrollView(); if (GUILayout.Button("Add new dialogue option")) { Undo.RecordObject(_target, "Create dialogue option"); ButtonDialog newOption = new ButtonDialog(_target.GetIDArray()); _target.options.Add(newOption); DeactivateAllOptions(); ActivateOption(newOption); } }
private void OptionsGUI () { if (conversation == null) { return; } scrollPosition = GUI.BeginScrollView (new Rect (0, 0, position.width, position.height), scrollPosition, new Rect (0, 0, 1100, 77 * (conversation.options.Count + 2)), false, false); BeginWindows (); convRect = new Rect (20, 100, 150, 50); convRect = GUI.Window(-1, convRect, NodeWindow, "Conversation"); if (GUI.Button (convRect, "")) { Selection.activeGameObject = conversation.gameObject; foreach (ButtonDialog option in conversation.options) { option.isEditing = false; } conversation.selectedOption = null; } if (lastConversation != null) { lastRect = new Rect (20, 20, 150, 50); lastRect = GUI.Window(-2, lastRect, NodeWindow, "Previous conversation"); if (GUI.Button (lastRect, "")) { Selection.activeGameObject = lastConversation.gameObject; } } for (int i=0; i<conversation.options.Count; i++) { optionRect = new Rect (220, 20 + (i*80), 200, 50); optionRect = GUI.Window(i, optionRect, NodeWindow, "Dialogue option"); if (conversation.options[i].label == "") { DrawNodeCurve (convRect, optionRect, Color.red); } else { DrawNodeCurve (convRect, optionRect, Color.blue); } if (GUI.Button (optionRect, "")) { Selection.activeGameObject = conversation.gameObject; foreach (ButtonDialog option in conversation.options) { option.isEditing = false; } conversation.options[i].isEditing = true; conversation.selectedOption = conversation.options[i]; } interactionRect = new Rect (440, 20 + (i*80), 200, 50); interactionRect = GUI.Window(i + conversation.options.Count, interactionRect, NodeWindow, "Interaction"); if (conversation.options[i].dialogueOption == null) { DrawNodeCurve (optionRect, interactionRect, Color.red); } else { DrawNodeCurve (optionRect, interactionRect, Color.blue); } if (conversation.options[i].dialogueOption != null) { finishRect = new Rect (660, 20 + (i*80), 200, 50); finishRect = GUI.Window(i + (conversation.options.Count*2), finishRect, NodeWindow, "When finished"); DrawNodeCurve (interactionRect, finishRect, Color.blue); if (GUI.Button (finishRect, "")) { Selection.activeGameObject = conversation.gameObject; foreach (ButtonDialog option in conversation.options) { option.isEditing = false; } conversation.options[i].isEditing = true; conversation.selectedOption = conversation.options[i]; } if (conversation.options[i].conversationAction == AC.ConversationAction.RunOtherConversation) { newRect = new Rect (880, 20 + (i*80), 200, 50); newRect = GUI.Window(i + (conversation.options.Count*3), newRect, NodeWindow, "Conversation"); if (conversation.options[i].newConversation == null) { DrawNodeCurve (finishRect, newRect, Color.red); } else { DrawNodeCurve (finishRect, newRect, Color.blue); } if (conversation.options[i].newConversation != null) { if (GUI.Button (newRect, "")) { lastConversation = conversation; Selection.activeGameObject = conversation.options[i].newConversation.gameObject; } } } } } EndWindows (); if (GUI.Button (new Rect (260, 10 + (conversation.options.Count*80), 120, 20), "Add new option")) { Undo.RecordObject (conversation, "Create dialogue option"); ButtonDialog newOption = new ButtonDialog (conversation.GetIDArray ()); conversation.options.Add (newOption); Selection.activeGameObject = conversation.gameObject; foreach (ButtonDialog option in conversation.options) { option.isEditing = false; } newOption.isEditing = true; conversation.selectedOption = newOption; } GUI.EndScrollView (); }