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);