Beispiel #1
0
    void OnGUI()
    {
        GUILayout.Space(10);
        GUILayout.BeginHorizontal();
        GUILayout.Label("Areas Editor", EditorStyles.boldLabel);
        GUIStyle wordWrapStyle = new GUIStyle(EditorStyles.textArea);

        wordWrapStyle.wordWrap = true;

        if (GUILayout.Button("Add Area"))
        {
            AreaDatabase.CreateAsset();
        }
        if (GUILayout.Button("Delete Selected Area"))
        {
            AreaDatabase.DeleteAsset(_viewIndex);
            _viewIndex = (_viewIndex == 0 ? _viewIndex++ : _viewIndex--);
        }
        if (GUILayout.Button("Reload"))
        {
            AreaDatabase.LoadDatabaseForce();
        }
        GUILayout.EndHorizontal();

        GUILayout.Space(20);

        GUILayout.BeginArea(new Rect(10, 70, 140, 350));
        _scrollPositionLeft = EditorGUILayout.BeginScrollView(_scrollPositionLeft, false, true);
        if (AreaDatabase.GetNumOfAssets() > 0)
        {
            for (int areaIndx = 0; areaIndx < AreaDatabase.GetNumOfAssets(); areaIndx++)
            {
                Area area = AreaDatabase.GetObject(areaIndx);
                if (GUILayout.Button(area.name, "label" /*+ (itemInd == _viewIndex ? "active" : "")*/))
                {
                    _viewIndex = areaIndx;
                    GUIUtility.keyboardControl = 0;
                }
            }
        }
        EditorGUILayout.EndScrollView();
        GUILayout.EndArea();

        GUILayout.BeginArea(new Rect(170, 70, 500, 350), EditorStyles.helpBox);
        _scrollPositionRight = EditorGUILayout.BeginScrollView(_scrollPositionRight);
        if (AreaDatabase.GetNumOfAssets() > 0)
        {
            Area asset = AreaDatabase.GetAsset(_viewIndex);
            if (asset != null)
            {
                EditorUtility.SetDirty(asset);
                GUILayout.Space(5);
                asset.name = EditorGUILayout.TextField("Area Name", asset.name, GUILayout.MaxWidth(300));

                GUILayout.Space(10);
                EditorGUILayout.LabelField("Goals:", EditorStyles.boldLabel);
                for (int goalIndx = 0; goalIndx < asset.goals.Count; goalIndx++)
                {
                    Term goal = asset.goals[goalIndx];
                    GUILayout.BeginHorizontal();
                    EditorGUILayout.LabelField("Goal" + goalIndx + ":" + goal.GetTermAsString());
                    if (GUILayout.Button("X", GUILayout.ExpandWidth(false)))
                    {
                        asset.DeleteGoal(goalIndx);
                    }
                    GUILayout.EndHorizontal();
                    EditorGUI.indentLevel++;
                    goal.name = EditorGUILayout.TextField("Goal Name", goal.name, GUILayout.MaxWidth(300));

                    EditorGUILayout.LabelField("Objective:", EditorStyles.label);
                    EditorStyles.textArea.wordWrap = true;
                    goal.description = EditorGUILayout.TextArea(goal.description, wordWrapStyle);

                    EditorGUILayout.LabelField("Hint:", EditorStyles.label);
                    goal.hint = EditorGUILayout.TextArea(goal.hint, wordWrapStyle);


                    EditorGUILayout.LabelField("Properties:", EditorStyles.boldLabel);
                    for (int propIndx = 0; propIndx < goal.properties.Count; propIndx++)
                    {
                        Property property = goal.properties[propIndx];
                        GUILayout.BeginHorizontal();
                        PropertyGUI(property);
                        GUILayout.Space(3);
                        if (GUILayout.Button("X", GUILayout.ExpandWidth(false)))
                        {
                            goal.DeleteProperty(propIndx);
                        }
                        GUILayout.EndHorizontal();
                    }
                    EditorGUI.indentLevel--;
                    GUILayout.Space(5);
                    GUILayout.BeginHorizontal();
                    GUILayout.Space(20);
                    if (GUILayout.Button("Add:", GUILayout.ExpandWidth(false)))
                    {
                        goal.AddPropertyOfType(_newPropertyType);
                    }
                    _newPropertyType = (PropertyType)EditorGUILayout.EnumPopup(_newPropertyType, GUILayout.ExpandWidth(false));
                    GUILayout.EndHorizontal();
                    GUILayout.Space(10);
                }
                GUILayout.Space(3);
                if (GUILayout.Button("Add Goal", GUILayout.ExpandWidth(false)))
                {
                    asset.AddGoal();
                }
                GUILayout.Space(10);
                EditorGUILayout.LabelField("Connected Areas:", EditorStyles.boldLabel);
                for (int connectedId = 0; connectedId < asset.connectedTo.Count; connectedId++)
                {
                    GUILayout.BeginHorizontal();
                    asset.connectedTo[connectedId] = (Area)EditorGUILayout.ObjectField(asset.connectedTo[connectedId], typeof(Area), false);
                    if (GUILayout.Button("X", GUILayout.ExpandWidth(false)))
                    {
                        asset.DeleteConnectedArea(connectedId);
                    }
                    GUILayout.EndHorizontal();
                }
                GUILayout.Space(5);
                if (GUILayout.Button("Add Connected Area", GUILayout.ExpandWidth(false)))
                {
                    asset.AddConnectedArea();
                }
                GUILayout.Space(5);
                //Addition 10/01/2020
                EditorGUILayout.LabelField("MaxDepth: ", EditorStyles.boldLabel);
                //end add
                asset.maxDepth = EditorGUILayout.IntField(asset.maxDepth, GUILayout.MinWidth(100), GUILayout.MaxWidth(300));
            }
        }
        EditorGUILayout.EndScrollView();
        GUILayout.EndArea();
    }