UnityEditor.QualitySettingsEditor.DoQualityLevelSelection C# (CSharp) Method

DoQualityLevelSelection() private method

private DoQualityLevelSelection ( int currentQualitylevel, IList qualitySettings, int>.Dictionary platformDefaultQualitySettings ) : int
currentQualitylevel int
qualitySettings IList
platformDefaultQualitySettings int>.Dictionary
return int
        private int DoQualityLevelSelection(int currentQualitylevel, IList<QualitySetting> qualitySettings, Dictionary<string, int> platformDefaultQualitySettings)
        {
            GUILayout.BeginHorizontal(new GUILayoutOption[0]);
            GUILayout.FlexibleSpace();
            GUILayout.BeginVertical(new GUILayoutOption[0]);
            int num = currentQualitylevel;
            GUILayout.BeginHorizontal(new GUILayoutOption[0]);
            GUILayoutOption[] options = new GUILayoutOption[] { GUILayout.ExpandWidth(false), GUILayout.Width(80f), GUILayout.Height(20f) };
            Rect position = GUILayoutUtility.GetRect(GUIContent.none, Styles.kToggle, options);
            position.x += EditorGUI.indent;
            position.width -= EditorGUI.indent;
            GUI.Label(position, "Levels", EditorStyles.boldLabel);
            foreach (BuildPlayerWindow.BuildPlatform platform in this.m_ValidPlatforms)
            {
                GUILayoutOption[] optionArray2 = new GUILayoutOption[] { GUILayout.MinWidth(15f), GUILayout.MaxWidth(20f), GUILayout.Height(20f) };
                Rect rect2 = GUILayoutUtility.GetRect(GUIContent.none, Styles.kToggle, optionArray2);
                GUIContent content = EditorGUIUtility.TempContent(platform.smallIcon);
                content.tooltip = platform.title.text;
                GUI.Label(rect2, content);
                content.tooltip = "";
            }
            GUILayoutOption[] optionArray3 = new GUILayoutOption[] { GUILayout.MinWidth(15f), GUILayout.MaxWidth(20f), GUILayout.Height(20f) };
            GUILayoutUtility.GetRect(GUIContent.none, Styles.kToggle, optionArray3);
            GUILayout.EndHorizontal();
            Event current = Event.current;
            for (int i = 0; i < qualitySettings.Count; i++)
            {
                GUILayout.BeginHorizontal(new GUILayoutOption[0]);
                GUIStyle style = ((i % 2) != 0) ? Styles.kListOddBg : Styles.kListEvenBg;
                bool on = num == i;
                GUILayoutOption[] optionArray4 = new GUILayoutOption[] { GUILayout.ExpandWidth(false), GUILayout.Width(80f) };
                Rect rect3 = GUILayoutUtility.GetRect(GUIContent.none, Styles.kToggle, optionArray4);
                switch (current.type)
                {
                    case EventType.MouseDown:
                        if (rect3.Contains(current.mousePosition))
                        {
                            num = i;
                            GUIUtility.keyboardControl = 0;
                            GUIUtility.hotControl = this.m_QualityElementHash;
                            GUI.changed = true;
                            Dragging dragging = new Dragging {
                                m_StartPosition = i,
                                m_Position = i
                            };
                            this.m_Dragging = dragging;
                            current.Use();
                        }
                        break;

                    case EventType.MouseUp:
                        if (GUIUtility.hotControl == this.m_QualityElementHash)
                        {
                            GUIUtility.hotControl = 0;
                            current.Use();
                        }
                        break;

                    case EventType.MouseDrag:
                        if ((GUIUtility.hotControl == this.m_QualityElementHash) && rect3.Contains(current.mousePosition))
                        {
                            this.m_Dragging.m_Position = i;
                            current.Use();
                        }
                        break;

                    case EventType.KeyDown:
                        if ((current.keyCode == KeyCode.UpArrow) || (current.keyCode == KeyCode.DownArrow))
                        {
                            num += (current.keyCode != KeyCode.UpArrow) ? 1 : -1;
                            num = Mathf.Clamp(num, 0, qualitySettings.Count - 1);
                            GUIUtility.keyboardControl = 0;
                            GUI.changed = true;
                            current.Use();
                        }
                        break;

                    case EventType.Repaint:
                    {
                        style.Draw(rect3, GUIContent.none, false, false, on, false);
                        QualitySetting setting = qualitySettings[i];
                        GUI.Label(rect3, EditorGUIUtility.TempContent(setting.m_Name));
                        break;
                    }
                }
                foreach (BuildPlayerWindow.BuildPlatform platform2 in this.m_ValidPlatforms)
                {
                    bool flag2 = false;
                    if (platformDefaultQualitySettings.ContainsKey(platform2.name) && (platformDefaultQualitySettings[platform2.name] == i))
                    {
                        flag2 = true;
                    }
                    GUILayoutOption[] optionArray5 = new GUILayoutOption[] { GUILayout.MinWidth(15f), GUILayout.MaxWidth(20f) };
                    Rect rect4 = GUILayoutUtility.GetRect(Styles.kPlatformTooltip, Styles.kToggle, optionArray5);
                    if (Event.current.type == EventType.Repaint)
                    {
                        style.Draw(rect4, GUIContent.none, false, false, on, false);
                    }
                    Color backgroundColor = GUI.backgroundColor;
                    if (flag2 && !EditorApplication.isPlayingOrWillChangePlaymode)
                    {
                        GUI.backgroundColor = Color.green;
                    }
                    QualitySetting setting2 = qualitySettings[i];
                    bool flag3 = !setting2.m_ExcludedPlatforms.Contains(platform2.name);
                    bool flag4 = GUI.Toggle(rect4, flag3, Styles.kPlatformTooltip, !flag2 ? Styles.kToggle : Styles.kDefaultToggle);
                    if (flag3 != flag4)
                    {
                        if (flag4)
                        {
                            QualitySetting setting3 = qualitySettings[i];
                            setting3.m_ExcludedPlatforms.Remove(platform2.name);
                        }
                        else
                        {
                            QualitySetting setting4 = qualitySettings[i];
                            setting4.m_ExcludedPlatforms.Add(platform2.name);
                        }
                    }
                    GUI.backgroundColor = backgroundColor;
                }
                GUILayoutOption[] optionArray6 = new GUILayoutOption[] { GUILayout.MinWidth(15f), GUILayout.MaxWidth(20f) };
                Rect rect5 = GUILayoutUtility.GetRect(GUIContent.none, Styles.kToggle, optionArray6);
                if (Event.current.type == EventType.Repaint)
                {
                    style.Draw(rect5, GUIContent.none, false, false, on, false);
                }
                if (GUI.Button(rect5, Styles.kIconTrash, GUIStyle.none))
                {
                    this.m_DeleteLevel = i;
                }
                GUILayout.EndHorizontal();
            }
            GUILayout.BeginHorizontal(new GUILayoutOption[0]);
            GUILayoutOption[] optionArray7 = new GUILayoutOption[] { GUILayout.MinWidth(15f), GUILayout.MaxWidth(20f), GUILayout.Height(1f) };
            GUILayoutUtility.GetRect(GUIContent.none, Styles.kToggle, optionArray7);
            DrawHorizontalDivider();
            GUILayout.EndHorizontal();
            GUILayout.BeginHorizontal(new GUILayoutOption[0]);
            GUILayoutOption[] optionArray8 = new GUILayoutOption[] { GUILayout.ExpandWidth(false), GUILayout.Width(80f), GUILayout.Height(20f) };
            Rect rect6 = GUILayoutUtility.GetRect(GUIContent.none, Styles.kToggle, optionArray8);
            rect6.x += EditorGUI.indent;
            rect6.width -= EditorGUI.indent;
            GUI.Label(rect6, "Default", EditorStyles.boldLabel);
            foreach (BuildPlayerWindow.BuildPlatform platform3 in this.m_ValidPlatforms)
            {
                int num3;
                GUILayoutOption[] optionArray9 = new GUILayoutOption[] { GUILayout.MinWidth(15f), GUILayout.MaxWidth(20f), GUILayout.Height(20f) };
                Rect rect7 = GUILayoutUtility.GetRect(GUIContent.none, Styles.kToggle, optionArray9);
                if (!platformDefaultQualitySettings.TryGetValue(platform3.name, out num3))
                {
                    platformDefaultQualitySettings.Add(platform3.name, 0);
                }
                if (<>f__am$cache0 == null)
                {
                    <>f__am$cache0 = new Func<QualitySetting, string>(null, (IntPtr) <DoQualityLevelSelection>m__0);
QualitySettingsEditor