Пример #1
0
        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);
            }
        }
Пример #2
0
		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 ();
		}