Example #1
0
    public override void SetOutput(BaseNode output, Vector2 clickPos)
    {
        clickPos.x -= windowRect.x;
        clickPos.y -= windowRect.y;

        for (int i = 0; i < ChoiceRects.Count; i++)
        {
            if (ChoiceRects[i].Contains(clickPos))
            {
                if (!ChoiceNodePair.ContainsKey(i))
                {
                    ChoiceNodePair.Add(i, output);
                    dialogueType.choiceDialogueKeys.Add(i);
                    dialogueType.choiceDialogueValues.Add(output.index);
                    break;
                }

                ChoiceNodePair[i] = output;
                dialogueType.choiceDialogueValues[i] = output.index;
            }
        }

        for (int i = 0; i < outputs.Count; i++)
        {
            if (outputs[i].Equals(output))
            {
                return;
            }
        }

        outputs.Add(output);
        outputRects.Add(output.windowRect);

        dialogueType.outputIndexes.Add(output.index);

        hasOutputs = true;
    }
Example #2
0
    public override void NodeDeleted(BaseNode node)
    {
        for (int i = 0; i < inputs.Count; i++)
        {
            if (node.Equals(inputs[i]))
            {
                inputs.Remove(inputs[i]);
                inputRects.Remove(inputRects[i]);

                break;
            }
        }

        for (int i = 0; i < outputs.Count; i++)
        {
            if (node.Equals(outputs[i]))
            {
                outputs.Remove(outputs[i]);
                outputRects.Remove(outputRects[i]);

                break;
            }
        }

        for (int i = 0; i < ChoiceNodePair.Count; i++)
        {
            if (node.Equals(ChoiceNodePair[i]))
            {
                ChoiceNodePair.Remove(i);

                dialogueType.choiceDialogueKeys.Remove(i);
                dialogueType.choiceDialogueValues.Remove(i);
                break;
            }
        }
    }
Example #3
0
    public override void DrawWindow()
    {
        base.DrawWindow();

        Event e = Event.current;

        EditorGUILayout.LabelField("Prompt:");
        Prompt = EditorGUILayout.TextArea(Prompt);

        NumChoices = EditorGUILayout.IntField("Number of Choices", NumChoices);
        if (NumChoices < 0)
        {
            NumChoices = 0;
        }

        EditorGUILayout.LabelField("Choices:");
        EditorGUILayout.Space();

        int difference = Mathf.Abs(NumChoices - Choices.Count);

        if (Choices.Count < NumChoices)
        {
            for (int i = 0; i < difference; i++)
            {
                Choices.Add("");
                ChoiceRects.Add(new Rect());
            }
        }
        else if (Choices.Count > NumChoices)
        {
            if (NumChoices != 0)
            {
                Choices.RemoveRange(NumChoices - 1, difference);
                ChoiceRects.RemoveRange(NumChoices - 1, difference);
                for (int i = NumChoices; i < difference; i++)
                {
                    if (ChoiceNodePair.ContainsKey(i))
                    {
                        ChoiceNodePair.Remove(i);
                        dialogueType.choiceDialogueKeys.Remove(i);
                        dialogueType.choiceDialogueValues.RemoveAt(i);
                    }
                }
            }
            else
            {
                Choices.Clear();
                ChoiceRects.Clear();
                ChoiceNodePair.Clear();
                dialogueType.choiceDialogueKeys.Clear();
                dialogueType.choiceDialogueValues.Clear();
            }
        }

        for (int i = 0; i < inputRects.Count; i++)
        {
            if (e.type == EventType.Repaint)
            {
                inputRects[i] = GUILayoutUtility.GetLastRect();
            }
        }

        for (int i = 0; i < outputRects.Count; i++)
        {
            if (e.type == EventType.Repaint)
            {
                outputRects[i] = GUILayoutUtility.GetLastRect();
            }
        }

        scrollPos = EditorGUILayout.BeginScrollView(scrollPos, false, false);
        for (int i = 0; i < Choices.Count; i++)
        {
            EditorGUILayout.LabelField("Option " + (i + 1));
            Choices[i] = EditorGUILayout.TextArea(Choices[i], GUILayout.Height(30));
        }
        EditorGUILayout.EndScrollView();

        // Location of TextAreas
        AddChoiceRects();

        dialogueType.windowRect  = windowRect;
        dialogueType.index       = index;
        dialogueType.question    = Prompt;
        dialogueType.choices     = Choices;
        dialogueType.choiceNum   = NumChoices;
        dialogueType.inputCount  = inputs.Count;
        dialogueType.inputRects  = inputRects;
        dialogueType.outputCount = outputs.Count;
        dialogueType.outputRects = outputRects;
        dialogueType.choiceRects = ChoiceRects;

        if (GUILayout.Button("Clear All", GUILayout.Height(20)))
        {
            NumChoices = 0;
            inputRects.Clear();
            inputs.Clear();
            outputs.Clear();
            outputRects.Clear();
            ChoiceNodePair.Clear();
        }
    }