Пример #1
0
 public DialogueNodeData()
 {
     node        = "tempnode";
     answers     = new DialogueAnswerData[1];
     answers[0]  = new DialogueAnswerData();
     dialogue    = new string[1];
     dialogue[0] = "dialogue";
 }
Пример #2
0
    void DrawEndWindow(int id)
    {
        GUILayout.TextField("END");
        if (GUILayout.Button("-> To"))
        {
            if (connectFrom != -1)
            {
                DialogueAnswerData newAnswer = new DialogueAnswerData();
                newAnswer.target = "END";
                ArrayUtility.Add(ref dialogueData.nodes[connectFrom].answers, newAnswer);
            }

            updateDataStructures();
        }
        GUI.DragWindow();
    }
Пример #3
0
    void DrawNodeWindow(int id)
    {
        // Resize buttons
        GUILayout.BeginHorizontal("box");
        if (GUILayout.Button("<-"))
        {
            dialogueData.nodes[id].pos.width -= 10f;
        }
        if (GUILayout.Button("->"))
        {
            dialogueData.nodes[id].pos.width += 10f;
        }
        if (GUILayout.Button("^"))
        {
            dialogueData.nodes[id].pos.height -= 10f;
        }
        if (GUILayout.Button("v"))
        {
            dialogueData.nodes[id].pos.height += 10f;
        }
        GUILayout.EndHorizontal();

        // Node name label and textfield
        GUILayout.BeginHorizontal("box");
        GUILayout.Label("Name");

        string oldName = dialogueData.nodes[id].node;

        dialogueData.nodes[id].node = GUILayout.TextField(dialogueData.nodes[id].node);
        if (oldName != dialogueData.nodes[id].node)
        {
            //ToDo: rename nodes
            Debug.Log("Old:" + oldName + " New:" + dialogueData.nodes[id].node);
        }
        GUILayout.EndHorizontal();

        // All different dialogue textareas, usually only one used
        for (int i = 0; i < dialogueData.nodes[id].dialogue.Length; i++)
        {
            dialogueData.nodes[id].dialogue[i] = GUILayout.TextArea(dialogueData.nodes[id].dialogue[i]);
        }

        // All the answers and target states
        for (int i = 0; i < dialogueData.nodes[id].answers.Length; i++)
        {
            GUILayout.BeginHorizontal("box");
            dialogueData.nodes[id].answers[i].option = GUILayout.TextField(dialogueData.nodes[id].answers[i].option);
            dialogueData.nodes[id].answers[i].target = GUILayout.TextField(dialogueData.nodes[id].answers[i].target);
            if (GUILayout.Button("X"))
            {
                ArrayUtility.RemoveAt(ref dialogueData.nodes[id].answers, i);
                updateDataStructures();
            }
            GUILayout.EndHorizontal();
        }

        // Button for adding new answer/target
        if (GUILayout.Button("+"))
        {
            ArrayUtility.Add(ref dialogueData.nodes[id].answers, new DialogueAnswerData());
            updateDataStructures();
        }

        // Easy connector buttons
        GUILayout.BeginHorizontal("box");
        {
            GUIStyle selectedStyle = new GUIStyle(GUI.skin.button);
            // Highlight the currently selected "from" field
            if (connectFrom == id)
            {
                selectedStyle.normal.textColor = Color.red;
            }

            if (GUILayout.Button("From ->", selectedStyle))
            {
                connectFrom = id;
            }

            if (GUILayout.Button("-> To"))
            {
                if (connectFrom != -1)
                {
                    DialogueAnswerData newAnswer = new DialogueAnswerData();
                    newAnswer.target = dialogueData.nodes[id].node;
                    ArrayUtility.Add(ref dialogueData.nodes[connectFrom].answers, newAnswer);
                }

                updateDataStructures();
            }
        }
        GUILayout.EndHorizontal();


        // Expand main window to fit all the node windows
        if (dialogueData.nodes[id].pos.x + dialogueData.nodes[id].pos.width > maxHorizontal)
        {
            maxHorizontal = (int)(dialogueData.nodes[id].pos.x + dialogueData.nodes[id].pos.width);
        }
        if (dialogueData.nodes[id].pos.y + dialogueData.nodes[id].pos.height > maxVertical)
        {
            maxVertical = (int)(dialogueData.nodes[id].pos.y + dialogueData.nodes[id].pos.height);
        }
        GUI.DragWindow();
    }