Esempio n. 1
0
    void OnGUI()
    {
        if (GUILayout.Button("Load"))
        {
            container = ItemDatabase.Load();
        }

        if (GUILayout.Button("Save"))
        {
            container.Save();
        }

        if (container != null)
        {
            for (int i = 0, n = container.items.Count; i < n; i++)
            {
                if (EditorGUITools.DrawHeader(container.items[i].name, container.items[i].name))
                {
                    EditorGUILayout.BeginHorizontal();
                    container.items[i].name = EditorGUILayout.TextField(container.items[i].name);
                    EditorGUILayout.BeginVertical();
                    for (int j = 0, n2 = container.items[i].effects.Count; j < n2; j++)
                    {
                        container.items[i].effects[j].senseEffected = (SenseType)EditorGUILayout.EnumPopup(container.items[i].effects[j].senseEffected);
//						container.items[i].effects[j].want = EditorGUILayout.Popup(0, WantsList.Load<WantsList>());
                        container.items[i].effects[j].value = EditorGUILayout.FloatField(container.items[i].effects[j].value);
                    }
                    EditorGUILayout.EndVertical();
                    if (GUILayout.Button("Add Effect", GUILayout.ExpandWidth(false)))
                    {
                        container.items[i].AddEffect();
                    }
                    //				container.items[i].name = EditorGUILayout.TextField("Name", container.items[i].name, GUILayout.ExpandWidth(false));
                    //				container.items[i].need = EditorGUILayout.TextField("Need", container.items[i].need);
                    //				container.items[i].effect = EditorGUILayout.FloatField("Effect", container.items[i].effect);
                    EditorGUILayout.EndHorizontal();
                }
            }

            GUILayout.Space(10);

            if (GUILayout.Button("New Item", GUILayout.ExpandWidth(false)))
            {
                container.NewItem();
            }
        }
    }
Esempio n. 2
0
    public static void DrawNPC(SerializedProperty character, SerializedObject serializedObject)
    {
        SerializedProperty stats = character.FindPropertyRelative("inspectorStats");
        SerializedProperty needs = character.FindPropertyRelative("inspectorNeeds");
        SerializedProperty wants = character.FindPropertyRelative("inspectorWants");

        SerializedProperty firstName  = character.FindPropertyRelative("firstName");
        SerializedProperty middleName = character.FindPropertyRelative("middleName");
        SerializedProperty lastName   = character.FindPropertyRelative("lastName");

        firstName.stringValue  = EditorGUILayout.TextField("First Name", firstName.stringValue);
        middleName.stringValue = EditorGUILayout.TextField("Middle Name", middleName.stringValue);
        lastName.stringValue   = EditorGUILayout.TextField("Last Name", lastName.stringValue);


        GUILayout.Space(5f);


        if (EditorGUITools.DrawHeader("Stats (" + stats.arraySize + "):", "ShowStats"))
        {
            GUILayout.BeginVertical(EditorStyles.numberField);
            GUILayout.Space(5);


            GUILayout.BeginHorizontal();
            GUILayout.Label("Name:");
            GUILayout.Label("Value:");
            GUILayout.EndHorizontal();

            for (int i = 0, n = stats.arraySize; i < n; i++)
            {
                GUILayout.BeginVertical();


                SerializedProperty stat      = stats.GetArrayElementAtIndex(i);
                SerializedProperty statName  = stat.FindPropertyRelative("name");
                SerializedProperty statValue = stat.FindPropertyRelative("value");

                // Name, value, delete
                GUILayout.BeginHorizontal();


                statName.stringValue = GUILayout.TextField(statName.stringValue, GUILayout.MinWidth(75));
                statValue.floatValue = EditorGUILayout.FloatField(statValue.floatValue);

                if (GUILayout.Button("X", GUILayout.Width(25)))
                {
                    stats.DeleteArrayElementAtIndex(i); i = n;
                }

                GUILayout.EndHorizontal();


                GUILayout.EndVertical();
            }

            if (GUILayout.Button("Add Stat", EditorStyles.toolbarButton))
            {
                stats.InsertArrayElementAtIndex(stats.arraySize);
            }

            GUILayout.EndVertical();
        }


        #region Needs
        if (EditorGUITools.DrawHeader("Needs (" + needs.arraySize + "):", "ShowNeeds"))
        {
            GUILayout.BeginVertical(EditorStyles.numberField);
            GUILayout.Space(5);

            for (int i = 0, n = needs.arraySize; i < n; i++)
            {
                // Get the variables from the need
                SerializedProperty need     = needs.GetArrayElementAtIndex(i);
                SerializedProperty needName = need.FindPropertyRelative("name");


                if (EditorGUITools.DrawHeader(needName.stringValue, needName.stringValue + "_menu"))
                {
                    SerializedProperty needPriority      = need.FindPropertyRelative("priority");
                    SerializedProperty priorityModifiers = need.FindPropertyRelative("priorityModifiers");
                    SerializedProperty actions           = need.FindPropertyRelative("actions");


                    GUI.color = new Color(0.4f, 0.4f, 0.4f);
                    GUILayout.BeginVertical(EditorStyles.numberField);
                    GUI.color = Color.white;

                    GUILayout.Space(10);

                    // Name, value, priority
                    GUILayout.BeginHorizontal();

                    GUILayout.Label("Name:");
                    needName.stringValue = GUILayout.TextField(needName.stringValue, GUILayout.MinWidth(75));


                    GUILayout.Label("Priority: " + needPriority.intValue);

                    if (GUILayout.Button("X", GUILayout.Width(25), GUILayout.Height(15)))
                    {
                        needs.DeleteArrayElementAtIndex(i); i = n; continue;
                    }

                    GUILayout.EndHorizontal();

                    GUILayout.Space(10);


                    // Show modifiers
                    if (EditorGUITools.DrawHeader("Priority Modifiers (" + priorityModifiers.arraySize + "):", needName.stringValue + "_priority"))
                    {
                        GUILayout.BeginVertical(EditorStyles.numberField);

                        GUILayout.BeginHorizontal();
                        GUILayout.Label("Name:");
                        GUILayout.Label("Value:");
                        GUILayout.EndHorizontal();



                        for (int k = 0, m = priorityModifiers.arraySize; k < m; k++)
                        {
                            SerializedProperty modifier      = priorityModifiers.GetArrayElementAtIndex(k);
                            SerializedProperty modifierName  = modifier.FindPropertyRelative("name");
                            SerializedProperty modifierValue = modifier.FindPropertyRelative("value");

                            // Name, value, delete
                            GUILayout.BeginHorizontal();


                            modifierName.stringValue = GUILayout.TextField(modifierName.stringValue, GUILayout.MinWidth(75));

                            modifierValue.animationCurveValue = EditorGUILayout.CurveField(modifierValue.animationCurveValue);

                            if (GUILayout.Button("X", GUILayout.Width(25)))
                            {
                                priorityModifiers.DeleteArrayElementAtIndex(k); k = m;
                            }

                            GUILayout.EndHorizontal();
                        }

                        if (GUILayout.Button("Add Modifier", EditorStyles.toolbarButton))
                        {
                            priorityModifiers.InsertArrayElementAtIndex(priorityModifiers.arraySize);
                        }

                        GUILayout.EndVertical();
                    }


                    GUILayout.Space(5);

                    // Show Actions TODO
                    if (EditorGUITools.DrawHeader("Actions(" + actions.arraySize + "):", needName.stringValue + "_actions"))
                    {
                    }


                    GUILayout.EndVertical();

                    if (i != n - 1)
                    {
                        GUILayout.Space(10);
                    }
                }
            }


            GUILayout.Space(5);
            if (GUILayout.Button("Add Need", EditorStyles.toolbarButton))
            {
                needs.InsertArrayElementAtIndex(needs.arraySize);
            }

            GUILayout.EndVertical();
        }
        #endregion

        #region Wants
        if (EditorGUITools.DrawHeader("Wants (" + wants.arraySize + "):", "ShowWants"))
        {
            GUILayout.BeginVertical(EditorStyles.numberField);
            GUILayout.Space(5);

            for (int i = 0, n = wants.arraySize; i < n; i++)
            {
                // Get the variables from the wants
                SerializedProperty want     = wants.GetArrayElementAtIndex(i);
                SerializedProperty wantName = want.FindPropertyRelative("name");


                if (EditorGUITools.DrawHeader(wantName.stringValue, wantName.stringValue + "_menu"))
                {
                    SerializedProperty wantPriority      = want.FindPropertyRelative("priority");
                    SerializedProperty priorityModifiers = want.FindPropertyRelative("priorityModifiers");
                    SerializedProperty actions           = want.FindPropertyRelative("actions");


                    GUI.color = new Color(0.4f, 0.4f, 0.4f);
                    GUILayout.BeginVertical(EditorStyles.numberField);
                    GUI.color = Color.white;

                    GUILayout.Space(10);

                    // Name, value, priority
                    GUILayout.BeginHorizontal();

                    GUILayout.Label("Name:");
                    wantName.stringValue = GUILayout.TextField(wantName.stringValue, GUILayout.MinWidth(75));


                    GUILayout.Label("Priority: " + wantPriority.intValue);

                    if (GUILayout.Button("X", GUILayout.Width(25), GUILayout.Height(15)))
                    {
                        wants.DeleteArrayElementAtIndex(i); i = n; continue;
                    }

                    GUILayout.EndHorizontal();

                    GUILayout.Space(10);


                    // Show modifiers
                    if (EditorGUITools.DrawHeader("Priority Modifiers (" + priorityModifiers.arraySize + "):", wantName.stringValue + "_priority"))
                    {
                        GUILayout.BeginVertical(EditorStyles.numberField);

                        GUILayout.BeginHorizontal();
                        GUILayout.Label("Name:");
                        GUILayout.Label("Value:");
                        GUILayout.EndHorizontal();



                        for (int k = 0, m = priorityModifiers.arraySize; k < m; k++)
                        {
                            SerializedProperty modifier      = priorityModifiers.GetArrayElementAtIndex(k);
                            SerializedProperty modifierName  = modifier.FindPropertyRelative("name");
                            SerializedProperty modifierValue = modifier.FindPropertyRelative("value");

                            // Name, value, delete
                            GUILayout.BeginHorizontal();


                            modifierName.stringValue = GUILayout.TextField(modifierName.stringValue, GUILayout.MinWidth(75));

                            modifierValue.animationCurveValue = EditorGUILayout.CurveField(modifierValue.animationCurveValue);

                            if (GUILayout.Button("X", GUILayout.Width(25)))
                            {
                                priorityModifiers.DeleteArrayElementAtIndex(k); k = m;
                            }

                            GUILayout.EndHorizontal();
                        }

                        if (GUILayout.Button("Add Modifier", EditorStyles.toolbarButton))
                        {
                            priorityModifiers.InsertArrayElementAtIndex(priorityModifiers.arraySize);
                        }

                        GUILayout.EndVertical();
                    }


                    GUILayout.Space(5);

                    // Show Actions TODO
                    if (EditorGUITools.DrawHeader("Actions(" + actions.arraySize + "):", wantName.stringValue + "_actions"))
                    {
                    }


                    GUILayout.EndVertical();

                    if (i != n - 1)
                    {
                        GUILayout.Space(10);
                    }
                }
            }


            GUILayout.Space(5);
            if (GUILayout.Button("Add Want", EditorStyles.toolbarButton))
            {
                wants.InsertArrayElementAtIndex(wants.arraySize);
            }

            GUILayout.EndVertical();
        }
        #endregion


        GUILayout.Space(5f);

        serializedObject.ApplyModifiedProperties();
    }