Esempio n. 1
0
    void OnGUI()
    {
        if (EditedDialogue == null || EditorInfo == null)
        {
            GUILayout.Label("Please, select a Dialogue to edit!", EditorStyles.boldLabel);
            return;
        }

        CurrentNodes      = new List <DialogueNode>(EditedDialogue.GetAllNodes());
        CurrentOptions    = new List <DialogueOption>(EditedDialogue.GetAllOptions());
        CurrentConditions = new List <ConditionNode>(EditedDialogue.GetAllConditions());

        if (DialogueNodeActionsFoldouts == null)
        {
            DialogueNodeActionsFoldouts = new List <bool>();
            foreach (DialogueNode node in CurrentNodes)
            {
                DialogueNodeActionsFoldouts.Add(false);
            }
        }

        if (DialogueNodeOptionsFoldouts == null)
        {
            DialogueNodeOptionsFoldouts = new List <bool>();
            foreach (DialogueNode node in CurrentNodes)
            {
                DialogueNodeOptionsFoldouts.Add(false);
            }
        }

        if (Config == null)
        {
            Config = new EditorConfigurationData();
        }

        int margins          = 5;
        int editorMenuHeight = 40;
        int debugAreaHeight  = 25;

        GUILayout.BeginArea(new Rect(margins, margins, position.width - 2 * margins, editorMenuHeight));
        {
            DrawEditorMenu();
        }
        GUILayout.EndArea();

        DrawDebug(debugAreaHeight, margins);

        GUILayout.BeginArea(
            new Rect(
                margins, editorMenuHeight + 2 * margins,
                position.width - 2 * margins, position.height - (debugAreaHeight + 2 * margins) - editorMenuHeight),
            Config.EditorAreaBackgroundStyle);
        {
            DrawEditorArea();
        }
        GUILayout.EndArea();
    }
    public EditorConfigurationData()
    {
        Defaults = new EditorConfigurationData(false);

        if (!PreferencesExist())
        {
            RestoreDefaults();
        }
        else
        {
            RestorePreferences();
        }

        RectHandle = new Rect(20 * Vector2.one, new Vector2(250, 30));
    }
    private void DrawMenu()
    {
        bool repaint = false;

        Display = EditorGUILayout.Foldout(Display, "Display: ");

        if (Display)
        {
            GUILayout.BeginVertical(ConfigData.FoldoutInteriorStyle);
            {
                GUILayout.BeginHorizontal();
                {
                    GUILayout.Label("Max Quothas Length: ", GUILayout.Width(DescriptionLabelWidth));
                    int check = EditorGUILayout.IntField(ConfigData.MaxQuotasLength, GUILayout.Width(50));
                    if (check > 16)
                    {
                        ConfigData.MaxQuotasLength = check;
                        repaint = true;
                    }
                }
                GUILayout.EndHorizontal();

                GUILayout.BeginHorizontal();
                {
                    GUILayout.Label("Min Text Area Height: ", GUILayout.Width(DescriptionLabelWidth));
                    int check = EditorGUILayout.IntField(ConfigData.MinTextAreaHeight, GUILayout.Width(50));

                    if (check > ConfigData.MaxTextAreaHeight)
                    {
                        check = ConfigData.MaxTextAreaHeight;
                    }

                    if (check > 10)
                    {
                        ConfigData.MinTextAreaHeight = check;
                        repaint = true;
                    }
                }
                GUILayout.EndHorizontal();

                GUILayout.BeginHorizontal();
                {
                    GUILayout.Label("Max Text Area Height: ", GUILayout.Width(DescriptionLabelWidth));
                    int check = EditorGUILayout.IntField(ConfigData.MaxTextAreaHeight, GUILayout.Width(50));
                    if (check > 50 && check > ConfigData.MinTextAreaHeight)
                    {
                        ConfigData.MaxTextAreaHeight = check;
                        repaint = true;
                    }
                }
                GUILayout.EndHorizontal();
            }
            GUILayout.EndVertical();
        }

        Connections = EditorGUILayout.Foldout(Connections, "Connections: ");

        if (Connections)
        {
            GUILayout.BeginVertical(ConfigData.FoldoutInteriorStyle);
            {
                DrawColorChanger("Immidiate Node Connection: ", ref ConfigData.ImmidiateNodeConnection);
                EditorPrefs.SetString(ConfigData.PreferencesKeys[0], EditorConfigurationData.ColorToString(ConfigData.ImmidiateNodeConnection));

                DrawColorChanger("Node To Option Connection: ", ref ConfigData.NodeToOptionConnection);
                EditorPrefs.SetString(ConfigData.PreferencesKeys[1], EditorConfigurationData.ColorToString(ConfigData.NodeToOptionConnection));

                DrawColorChanger("Option To Node Connection: ", ref ConfigData.OptionToNodeConnection);
                EditorPrefs.SetString(ConfigData.PreferencesKeys[2], EditorConfigurationData.ColorToString(ConfigData.OptionToNodeConnection));

                DrawColorChanger("To Condition Connection: ", ref ConfigData.ToConditionConnection);
                EditorPrefs.SetString(ConfigData.PreferencesKeys[6], EditorConfigurationData.ColorToString(ConfigData.ToConditionConnection));

                DrawColorChanger("Condition Success Connection: ", ref ConfigData.FromSuccesConnection);
                EditorPrefs.SetString(ConfigData.PreferencesKeys[7], EditorConfigurationData.ColorToString(ConfigData.FromSuccesConnection));

                DrawColorChanger("Condition Failure Connection: ", ref ConfigData.FromFailureConnection);
                EditorPrefs.SetString(ConfigData.PreferencesKeys[8], EditorConfigurationData.ColorToString(ConfigData.OptionToNodeConnection));

                DrawColorChanger("Entry Condition Connection: ", ref ConfigData.EntryConditionConnection);
                EditorPrefs.SetString(ConfigData.PreferencesKeys[9], EditorConfigurationData.ColorToString(ConfigData.EntryConditionConnection));

                GUILayout.BeginHorizontal();
                GUILayout.Label("Diagonal Start Points: ", GUILayout.Width(DescriptionLabelWidth));
                ConfigData.DiagonalStartPoints = EditorGUILayout.Toggle(ConfigData.DiagonalStartPoints);
                EditorPrefs.SetBool(ConfigData.PreferencesKeys[4], ConfigData.DiagonalStartPoints);
                GUILayout.EndHorizontal();

                GUILayout.BeginHorizontal();
                GUILayout.Label("Diagonal End Points: ", GUILayout.Width(DescriptionLabelWidth));
                ConfigData.DiagonalEndPoints = EditorGUILayout.Toggle(ConfigData.DiagonalEndPoints);
                EditorPrefs.SetBool(ConfigData.PreferencesKeys[5], ConfigData.DiagonalEndPoints);
                GUILayout.EndHorizontal();
            }
            GUILayout.EndVertical();

            repaint = true;
        }

        Backgrounds = EditorGUILayout.Foldout(Backgrounds, "Backgrounds: ");

        if (Backgrounds)
        {
            bool changedStyles = false;

            GUILayout.BeginVertical(ConfigData.FoldoutInteriorStyle);
            {
                changedStyles |= DrawColorChanger("Editor Background: ", ref ConfigData.AreaBackgroundColor);
                EditorPrefs.SetString(ConfigData.PreferencesKeys[3], EditorConfigurationData.ColorToString(ConfigData.AreaBackgroundColor));

                changedStyles |= DrawColorChanger("Condition Node Background", ref ConfigData.ConditionNodeColor);
                EditorPrefs.SetString(ConfigData.PreferencesKeys[10], EditorConfigurationData.ColorToString(ConfigData.ConditionNodeColor));

                changedStyles |= DrawColorChanger("Dialogue Node Background", ref ConfigData.DialogueNodeColor);
                EditorPrefs.SetString(ConfigData.PreferencesKeys[11], EditorConfigurationData.ColorToString(ConfigData.DialogueNodeColor));

                changedStyles |= DrawColorChanger("Dialogue Option Background", ref ConfigData.DialogueOptionColor);
                EditorPrefs.SetString(ConfigData.PreferencesKeys[12], EditorConfigurationData.ColorToString(ConfigData.DialogueOptionColor));

                
            }
            GUILayout.EndVertical();            

            if(changedStyles)
            {
                ConfigData.InitStyles(true);
                repaint = true;
            }
        }

        GUILayout.BeginHorizontal(GUILayout.ExpandHeight(true));
        {
            if (GUILayout.Button("Close"))
            {
                ConfigData.ConfigurationOpened = false;
                this.Close();
            }

            if (GUILayout.Button("Restore"))
            {
                ConfigData.RestoreDefaults();
                repaint = true;
            }
        }
        GUILayout.EndHorizontal();

        if (repaint)
        {
            RepaintFunction();
        }
    }
 public static void ShowConfigMenu(EditorConfigurationData data, System.Action repaintFunction)
 {
     ConfigurationWindow config = EditorWindow.GetWindow<ConfigurationWindow>();
     config.Init(data, repaintFunction);
 }
 public void Init(EditorConfigurationData data, System.Action repaintFunction)
 {
     ConfigData = data;
     RepaintFunction = repaintFunction;
 }