Пример #1
0
        void DrawUISounds()
        {
            QUI.DrawTexture(DUIResources.headerUISoundsDatabase.texture, 552, 64);
            float sectionWidth = PAGE_WIDTH - SIDE_BAR_SHADOW_WIDTH * 2;

            QUI.BeginHorizontal(sectionWidth);
            {
                #region New UISound
                if (!NewUISoundAnimBool.value)
                {
                    if (QUI.Button(DUIStyles.GetStyle(DUIStyles.ControlPanel.PageButtonNewUISound), 100 * (1 - SearchPatternAnimBool.faded), 20))
                    {
                        NewUISoundName               = "";
                        NewUISoundAnimBool.target    = true;
                        SearchPatternAnimBool.target = false;
                    }
                }
                else
                {
                    SearchPatternAnimBool.target = false;
                    QUI.DrawTexture(DUIResources.pageButtonNewUISound.active, 100, 20);
                    QUI.Space(80);
                    SaveColors();
                    QUI.SetGUIBackgroundColor(DUIColors.GreenLight.Color);
                    NewUISoundName = EditorGUILayout.TextField(NewUISoundName, GUILayout.Width((sectionWidth - 149) * NewUISoundAnimBool.faded));
                    RestoreColors();
                    if (QUI.Button(DUIStyles.GetStyle(DUIStyles.ControlPanel.PageButtonOk), 20, 20))
                    {
                        if (string.IsNullOrEmpty(NewUISoundName))
                        {
                            EditorUtility.DisplayDialog("Info", "Cannot create an unnamed ui sound. Try again.", "Ok");
                        }
                        else if (DUI.UISoundNameExists(NewUISoundName))
                        {
                            EditorUtility.DisplayDialog("Info", "An ui sound named '" + NewUISoundName + "' already exists in the database. Try again.", "Ok");
                        }
                        else
                        {
                            DUI.CreateUISound(NewUISoundName, soundTypeFilter);
                            NewUISoundAnimBool.target = false;
                            RefreshUISoundsDatabase(true);
                        }
                    }
                    QUI.Space(1);
                    if (QUI.Button(DUIStyles.GetStyle(DUIStyles.ControlPanel.PageButtonCancel), 20, 20))
                    {
                        NewUISoundName            = "";
                        NewUISoundAnimBool.target = false;
                    }
                }
                #endregion
                QUI.Space(342 * (1 - NewUISoundAnimBool.faded) * (1 - SearchPatternAnimBool.faded));
                #region Search
                if (!SearchPatternAnimBool.value)
                {
                    QUI.FlexibleSpace();
                    if (QUI.Button(DUIStyles.GetStyle(DUIStyles.ControlPanel.PageButtonSearch), 100 * (1 - NewUISoundAnimBool.faded), 20))
                    {
                        SearchPattern = string.Empty;
                        SearchPatternAnimBool.target = true;
                        NewUISoundAnimBool.target    = false;
                    }
                }
                else
                {
                    NewUISoundAnimBool.target = false;
                    if (QUI.Button(DUIStyles.GetStyle(DUIStyles.ControlPanel.PageButtonClearSearch), 100 * SearchPatternAnimBool.faded, 20))
                    {
                        SearchPattern = string.Empty;
                        SearchPatternAnimBool.target = false;
                    }
                    GUILayout.Space(1);
                    SaveColors();
                    QUI.SetGUIBackgroundColor(DUIColors.BlueLight.Color);
                    SearchPattern = EditorGUILayout.TextField(SearchPattern, GUILayout.Width((sectionWidth - 210) * SearchPatternAnimBool.faded));
                    RestoreColors();
                    QUI.DrawTexture(DUIResources.pageButtonSearch.active, 100, 20);
                }
                #endregion
            }
            QUI.EndHorizontal();
            QUI.Space(16);
            #region Filter
            QUI.BeginHorizontal(sectionWidth);
            {
                QUI.Space(8);
                QUI.FlexibleSpace();
                QUI.DrawTexture(DUIResources.pageButtonFilterHeader.texture, 302, 10);
                QUI.Space(302);
                QUI.FlexibleSpace();
            }
            QUI.EndHorizontal();
            QUI.Space(10);
            QUI.BeginHorizontal(sectionWidth);
            {
                QUI.Space(-2);
                QUI.FlexibleSpace();
                if (soundTypeFilter == SoundType.All)
                {
                    QUI.DrawTexture(DUIResources.pageButtonFilterAll.active, 100, 20);
                    QUI.Space(80);
                }
                else
                {
                    if (QUI.Button(DUIStyles.GetStyle(DUIStyles.ControlPanel.PageButtonFilterAll), 100, 20))
                    {
                        soundTypeFilter = SoundType.All;
                    }
                }
                QUI.Space(1);
                if (soundTypeFilter == SoundType.UIButtons)
                {
                    QUI.DrawTexture(DUIResources.pageButtonFilterUIButton.active, 100, 20);
                    QUI.Space(80);
                }
                else
                {
                    if (QUI.Button(DUIStyles.GetStyle(DUIStyles.ControlPanel.PageButtonFilterUIButton), 100, 20))
                    {
                        soundTypeFilter = SoundType.UIButtons;
                    }
                }
                QUI.Space(1);
                if (soundTypeFilter == SoundType.UIElements)
                {
                    QUI.DrawTexture(DUIResources.pageButtonFilterUIElement.active, 100, 20);
                    QUI.Space(80);
                }
                else
                {
                    if (QUI.Button(DUIStyles.GetStyle(DUIStyles.ControlPanel.PageButtonFilterUIElement), 100, 20))
                    {
                        soundTypeFilter = SoundType.UIElements;
                    }
                }
                QUI.FlexibleSpace();
            }
            QUI.EndHorizontal();
            #endregion
            QUI.Space(16);
            if (DUI.UISoundsDatabase.Count == 0)
            {
                QUI.DrawTexture(DUIResources.pageImageEmptyDatabase.texture, 552, 256);
                return;
            }
            QUI.DrawTexture(DUIResources.pageUISoundsTableTop.texture, 552, 12);
            for (int i = 0; i < DUI.UISoundsDatabase.Count; i++)
            {
                if (DUI.UISoundsDatabase[i] == null)
                {
                    continue;
                }
                if (soundTypeFilter == SoundType.UIButtons && DUI.UISoundsDatabase[i].soundType == SoundType.UIElements)
                {
                    continue;
                }
                if (soundTypeFilter == SoundType.UIElements && DUI.UISoundsDatabase[i].soundType == SoundType.UIButtons)
                {
                    continue;
                }

                QUI.BeginHorizontal(sectionWidth);
                {
                    if (SearchPatternAnimBool.target)//a search pattern has been entered in the search box
                    {
                        try
                        {
                            if (!Regex.IsMatch(DUI.UISoundsDatabase[i].soundName, SearchPattern, RegexOptions.IgnoreCase))
                            {
                                QUI.EndHorizontal();
                                continue; //this does not match the search pattern --> we do not show this name it
                            }
                        }
                        catch (Exception)
                        { }
                    }
                    DUI.UISoundsDatabase[i].soundType = (SoundType)EditorGUILayout.EnumPopup(DUI.UISoundsDatabase[i].soundType, GUILayout.Width(80));
                    if (SearchPatternAnimBool.target)
                    {
                        QUI.Label(DUI.UISoundsDatabase[i].soundName, DUIStyles.GetStyle(DUIStyles.BlackTextStyle.BlackLabelNormalItalic), 174);
                    }
                    else
                    {
                        QUI.Label(DUI.UISoundsDatabase[i].soundName, DUIStyles.GetStyle(DUIStyles.BlackTextStyle.BlackLabelNormal), 174);
                    }
#if dUI_MasterAudio
                    QUI.Label("Controlled by MasterAudio", DUIStyles.GetStyle(DUIStyles.BlackTextStyle.BlackLabelSmallItalic), 140);
#else
                    QUI.BeginChangeCheck();
                    {
                        DUI.UISoundsDatabase[i].audioClip = (AudioClip)EditorGUILayout.ObjectField("", DUI.UISoundsDatabase[i].audioClip, typeof(AudioClip), false, GUILayout.Width(140));
                    }
                    if (QUI.EndChangeCheck())
                    {
                        Undo.RecordObject(DUI.DUISettings, "Updated UISound");
                        EditorUtility.SetDirty(DUI.UISoundsDatabase[i]);
                        AssetDatabase.SaveAssets();
                    }
#endif
                    QUI.Space(50 * SearchPatternAnimBool.faded);
                    if (QUI.Button(DUIStyles.GetStyle(DUIStyles.ControlPanel.PageButtonPlay), 20, 20))
                    {
                        DUIUtils.PreviewSound(DUI.UISoundsDatabase[i].soundName);
                    }
                    QUI.Space(1);
                    if (QUI.Button(DUIStyles.GetStyle(DUIStyles.ControlPanel.PageButtonStop), 20, 20))
                    {
                        DUIUtils.StopSoundPreview(DUI.UISoundsDatabase[i].soundName);
                    }
                    QUI.Space(1);
                    if (QUI.Button(DUIStyles.GetStyle(DUIStyles.ControlPanel.PageButtonDelete), 100 * (1 - SearchPatternAnimBool.faded), 20))
                    {
                        if (EditorUtility.DisplayDialog("Delete the '" + DUI.UISoundsDatabase[i].soundName + "' ui sound?", "Are you sure you want to proceed?\nOperation cannot be undone!", "Yes", "Cancel"))
                        {
                            DUI.DeleteUISound(DUI.UISoundsDatabase[i].soundName);
                            RefreshUISoundsDatabase(true);
                            QUI.EndHorizontal();
                            continue;
                        }
                    }
                }
                QUI.EndHorizontal();
                QUI.Space(2);
            }
            QUI.Space(-2);
            QUI.DrawTexture(DUIResources.pageUISoundsTableBottom.texture, 552, 12);
        }