示例#1
0
    void DisplayEditMainArea()
    {
        try
        {
            currentDatabase[selectedEvent].Key = EditorGUILayout.TextField(new GUIContent("Key: "), currentDatabase[selectedEvent].Key);

            _optionsScrollPos = EditorGUILayout.BeginScrollView(_optionsScrollPos, "box", GUILayout.ExpandHeight(true));
            EditorStyles.textField.wordWrap     = true;
            currentDatabase[selectedEvent].Text = EditorGUILayout.TextArea(currentDatabase[selectedEvent].Text, GUILayout.ExpandHeight(true));

            EditorGUILayout.Space();


            EditorGUILayout.PrefixLabel("Image: ");
            currentDatabase[selectedEvent].ImageId = EditorGUILayout.TextField(currentDatabase[selectedEvent].ImageId);

            EditorGUILayout.Space();
            EditorGUILayout.PrefixLabel("Sounds: ");
            var si = currentDatabase[selectedEvent].SoundIds;
            var sv = currentDatabase[selectedEvent].SoundVolumes;
            for (int i = 0; i < si.Count; i++)
            {
                EditorGUILayout.BeginHorizontal();
                if (GUILayout.Button("-", GUILayout.Width(25)))
                {
                    si.RemoveAt(i);
                    EditorUtility.SetDirty(currentDatabase);
                    return;
                }

                si[i] = GUILayout.TextField(si[i]);
                EditorGUILayout.EndHorizontal();
                sv[i] = EditorGUILayout.Slider("Volume", sv[i], 0, 1);
            }
            if (GUILayout.Button("+", GUILayout.Width(100)))
            {
                si.Add("");
            }

            EditorGUILayout.Space();
            EditorGUILayout.Space();
            EditorGUILayout.PrefixLabel("Flags: ");
            var f1 = currentDatabase[selectedEvent].Flags;
            for (int i = 0; i < f1.Count; i++)
            {
                EditorGUILayout.BeginHorizontal();
                if (GUILayout.Button("-", GUILayout.Width(25)))
                {
                    f1.RemoveAt(i);
                    EditorUtility.SetDirty(currentDatabase);
                    return;
                }

                f1[i] = GUILayout.TextField(f1[i]);
                EditorGUILayout.EndHorizontal();
            }
            if (GUILayout.Button("+", GUILayout.Width(100)))
            {
                currentDatabase[selectedEvent].Flags.Add("");
            }

            EditorGUILayout.Space();
            EditorGUILayout.Space();
            EditorGUILayout.PrefixLabel("Clear Flags: ");
            var cf = currentDatabase[selectedEvent].ClearFlags;
            for (int i = 0; i < cf.Count; i++)
            {
                EditorGUILayout.BeginHorizontal();
                if (GUILayout.Button("-", GUILayout.Width(25)))
                {
                    cf.RemoveAt(i);
                    EditorUtility.SetDirty(currentDatabase);
                    return;
                }

                cf[i] = GUILayout.TextField(cf[i]);
                EditorGUILayout.EndHorizontal();
            }
            if (GUILayout.Button("+", GUILayout.Width(100)))
            {
                currentDatabase[selectedEvent].ClearFlags.Add("");
            }

            EditorGUILayout.Space();
            EditorGUILayout.PrefixLabel("Options:");
            var o = currentDatabase[selectedEvent].Options;
            for (int i = 0; i < o.Count; i++)
            {
                EditorGUILayout.BeginHorizontal();
                if (GUILayout.Button("-", GUILayout.Width(25)))
                {
                    o.RemoveAt(i);
                    EditorUtility.SetDirty(currentDatabase);
                    return;
                }

                o[i].Text = GUILayout.TextField(o[i].Text);
                EditorGUILayout.EndHorizontal();

                EditorGUILayout.BeginHorizontal();
                EditorGUILayout.PrefixLabel("Targets:");
                EditorGUILayout.BeginVertical();
                var t = o[i].Targets;
                for (int j = 0; j < t.Count; j++)
                {
                    EditorGUILayout.BeginHorizontal();
                    if (GUILayout.Button("-", GUILayout.Width(25)))
                    {
                        t.RemoveAt(j);
                        EditorUtility.SetDirty(currentDatabase);
                        return;
                    }
                    t[j] = GUILayout.TextField(t[j]);
                    if (GUILayout.Button("→", GUILayout.Width(25)))
                    {
                        selectedEvent = currentDatabase.IndexOf(t[j]);
                    }
                    EditorGUILayout.EndHorizontal();
                }
                if (GUILayout.Button("+", GUILayout.Width(100)))
                {
                    o[i].Targets.Add("");
                }
                EditorGUILayout.Space();
                EditorGUILayout.EndVertical();
                EditorGUILayout.EndHorizontal();


                EditorGUILayout.BeginHorizontal();
                EditorGUILayout.PrefixLabel("Required Flags:");
                EditorGUILayout.BeginVertical();
                var rf = o[i].RequiredFlags;
                for (int j = 0; j < rf.Count; j++)
                {
                    EditorGUILayout.BeginHorizontal();
                    if (GUILayout.Button("-", GUILayout.Width(25)))
                    {
                        rf.RemoveAt(j);
                        EditorUtility.SetDirty(currentDatabase);
                        return;
                    }
                    rf[j] = GUILayout.TextField(rf[j]);
                    if (GUILayout.Button("→", GUILayout.Width(25)))
                    {
                        selectedEvent = currentDatabase.IndexOf(rf[j]);
                    }
                    EditorGUILayout.EndHorizontal();
                }
                if (GUILayout.Button("+", GUILayout.Width(100)))
                {
                    o[i].RequiredFlags.Add("");
                }
                EditorGUILayout.Space();
                EditorGUILayout.EndVertical();
                EditorGUILayout.EndHorizontal();


                EditorGUILayout.BeginHorizontal();
                EditorGUILayout.PrefixLabel("Not Allowed Flags:");
                EditorGUILayout.BeginVertical();
                var nf = o[i].NotAllowedFlags;
                for (int j = 0; j < nf.Count; j++)
                {
                    EditorGUILayout.BeginHorizontal();
                    if (GUILayout.Button("-", GUILayout.Width(25)))
                    {
                        nf.RemoveAt(j);
                        EditorUtility.SetDirty(currentDatabase);
                        return;
                    }
                    nf[j] = GUILayout.TextField(nf[j]);
                    if (GUILayout.Button("→", GUILayout.Width(25)))
                    {
                        selectedEvent = currentDatabase.IndexOf(nf[j]);
                    }
                    EditorGUILayout.EndHorizontal();
                }
                if (GUILayout.Button("+", GUILayout.Width(100)))
                {
                    o[i].NotAllowedFlags.Add("");
                }
                EditorGUILayout.Space();
                EditorGUILayout.EndVertical();
                EditorGUILayout.EndHorizontal();
            }
            if (GUILayout.Button("+", GUILayout.Width(100)))
            {
                o.Add(new EventOption());
            }

            EditorGUILayout.EndScrollView();
        }
        catch (Exception exc)
        {
            Debug.LogError(exc, this);
            state = State.BLANK;
        }
    }