UnityEditor.BuildPlayerWindow.ShowBuildTargetSettings C# (CSharp) Method

ShowBuildTargetSettings() private method

private ShowBuildTargetSettings ( ) : void
return void
        private void ShowBuildTargetSettings()
        {
            BuildTarget selectedStandaloneTarget;
            Dictionary<GUIContent, BuildTarget> architecturesForPlatform;
            GUIContent[] contentArray;
            int num4;
            EditorGUIUtility.labelWidth = Mathf.Min((float) 180f, (float) ((base.position.width - 265f) * 0.47f));
            BuildTarget target = CalculateSelectedBuildTarget();
            BuildPlatform platform = s_BuildPlatforms.BuildPlatformFromTargetGroup(EditorUserBuildSettings.selectedBuildTargetGroup);
            bool flag = BuildPipeline.LicenseCheck(target);
            GUILayout.Space(18f);
            Rect position = GUILayoutUtility.GetRect((float) 50f, (float) 36f);
            position.x++;
            GUI.Label(new Rect(position.x + 3f, position.y + 3f, 32f, 32f), platform.title.image, GUIStyle.none);
            GUI.Toggle(position, false, platform.title.text, styles.platformSelector);
            GUILayout.Space(10f);
            if (((platform.targetGroup == BuildTargetGroup.WebGL) && !BuildPipeline.IsBuildTargetSupported(target)) && (IntPtr.Size == 4))
            {
                GUILayout.Label("Building for WebGL requires a 64-bit Unity editor.", new GUILayoutOption[0]);
                GUIBuildButtons(false, false, false, platform);
                return;
            }
            if (((flag && !string.IsNullOrEmpty(ModuleManager.GetTargetStringFromBuildTarget(target))) && (ModuleManager.GetBuildPostProcessor(target) == null)) && ((EditorUserBuildSettings.selectedBuildTargetGroup != BuildTargetGroup.Standalone) || !IsAnyStandaloneModuleLoaded()))
            {
                GUILayout.Label("No " + s_BuildPlatforms.GetBuildTargetDisplayName(target) + " module loaded.", new GUILayoutOption[0]);
                GUILayoutOption[] options = new GUILayoutOption[] { GUILayout.ExpandWidth(false) };
                if (GUILayout.Button("Module Manager", EditorStyles.miniButton, options))
                {
                    InternalEditorUtility.ShowPackageManagerWindow();
                }
                GUIBuildButtons(false, false, false, platform);
                return;
            }
            if (Application.HasProLicense() && !InternalEditorUtility.HasAdvancedLicenseOnBuildTarget(target))
            {
                string text = string.Format("{0} is not included in your Unity Pro license. Your {0} build will include a Unity Personal Edition splash screen.\n\nYou must be eligible to use Unity Personal Edition to use this build option. Please refer to our EULA for further information.", s_BuildPlatforms.GetBuildTargetDisplayName(target));
                GUILayout.BeginVertical(EditorStyles.helpBox, new GUILayoutOption[0]);
                GUILayout.Label(text, EditorStyles.wordWrappedMiniLabel, new GUILayoutOption[0]);
                GUILayout.BeginHorizontal(new GUILayoutOption[0]);
                if (GUILayout.Button("EULA", EditorStyles.miniButton, new GUILayoutOption[0]))
                {
                    Application.OpenURL("http://unity3d.com/legal/eula");
                }
                if (GUILayout.Button(string.Format("Add {0} to your Unity Pro license", s_BuildPlatforms.GetBuildTargetDisplayName(target)), EditorStyles.miniButton, new GUILayoutOption[0]))
                {
                    Application.OpenURL("http://unity3d.com/get-unity");
                }
                GUILayout.EndHorizontal();
                GUILayout.EndVertical();
            }
            GUIContent downloadErrorForTarget = styles.GetDownloadErrorForTarget(target);
            if (downloadErrorForTarget != null)
            {
                GUILayout.Label(downloadErrorForTarget, EditorStyles.wordWrappedLabel, new GUILayoutOption[0]);
                GUIBuildButtons(false, false, false, platform);
                return;
            }
            if (!flag)
            {
                int num = s_BuildPlatforms.BuildPlatformIndexFromTargetGroup(platform.targetGroup);
                GUILayout.Label(styles.notLicensedMessages[num, 0], EditorStyles.wordWrappedLabel, new GUILayoutOption[0]);
                GUILayout.Space(5f);
                GUILayout.BeginHorizontal(new GUILayoutOption[0]);
                GUILayout.FlexibleSpace();
                if ((styles.notLicensedMessages[num, 1].text.Length != 0) && GUILayout.Button(styles.notLicensedMessages[num, 1], new GUILayoutOption[0]))
                {
                    Application.OpenURL(styles.notLicensedMessages[num, 2].text);
                }
                GUILayout.EndHorizontal();
                GUIBuildButtons(false, false, false, platform);
                return;
            }
            IBuildWindowExtension buildWindowExtension = ModuleManager.GetBuildWindowExtension(ModuleManager.GetTargetStringFromBuildTargetGroup(platform.targetGroup));
            if (buildWindowExtension != null)
            {
                buildWindowExtension.ShowPlatformBuildOptions();
            }
            GUI.changed = false;
            switch (platform.targetGroup)
            {
                case BuildTargetGroup.Standalone:
                {
                    BuildTarget bestStandaloneTarget = GetBestStandaloneTarget(EditorUserBuildSettings.selectedStandaloneTarget);
                    selectedStandaloneTarget = EditorUserBuildSettings.selectedStandaloneTarget;
                    int selectedIndex = Math.Max(0, Array.IndexOf<BuildTarget>(s_BuildPlatforms.standaloneSubtargets, BuildPlatforms.DefaultTargetForPlatform(bestStandaloneTarget)));
                    int index = EditorGUILayout.Popup(styles.standaloneTarget, selectedIndex, s_BuildPlatforms.standaloneSubtargetStrings, new GUILayoutOption[0]);
                    if (index != selectedIndex)
                    {
                        selectedStandaloneTarget = s_BuildPlatforms.standaloneSubtargets[index];
                        goto Label_0523;
                    }
                    architecturesForPlatform = BuildPlatforms.GetArchitecturesForPlatform(bestStandaloneTarget);
                    if (architecturesForPlatform == null)
                    {
                        goto Label_0523;
                    }
                    contentArray = new List<GUIContent>(architecturesForPlatform.Keys).ToArray();
                    num4 = 0;
                    if (index == selectedIndex)
                    {
                        foreach (KeyValuePair<GUIContent, BuildTarget> pair in architecturesForPlatform)
                        {
                            if (((BuildTarget) pair.Value) == bestStandaloneTarget)
                            {
                                num4 = Math.Max(0, Array.IndexOf<GUIContent>(contentArray, pair.Key));
                                break;
                            }
                        }
                    }
                    break;
                }
                case BuildTargetGroup.WebPlayer:
                {
                    GUI.enabled = BuildPipeline.LicenseCheck(BuildTarget.WebPlayerStreamed);
                    bool flag2 = EditorGUILayout.Toggle(styles.webPlayerStreamed, EditorUserBuildSettings.webPlayerStreamed, new GUILayoutOption[0]);
                    if (GUI.changed)
                    {
                        EditorUserBuildSettings.webPlayerStreamed = flag2;
                    }
                    EditorUserBuildSettings.webPlayerOfflineDeployment = EditorGUILayout.Toggle(styles.webPlayerOfflineDeployment, EditorUserBuildSettings.webPlayerOfflineDeployment, new GUILayoutOption[0]);
                    goto Label_056E;
                }
                case BuildTargetGroup.iPhone:
                    if (Application.platform == RuntimePlatform.OSXEditor)
                    {
                        EditorUserBuildSettings.symlinkLibraries = EditorGUILayout.Toggle(styles.symlinkiOSLibraries, EditorUserBuildSettings.symlinkLibraries, new GUILayoutOption[0]);
                    }
                    goto Label_056E;

                default:
                    goto Label_056E;
            }
            num4 = EditorGUILayout.Popup(styles.architecture, num4, contentArray, new GUILayoutOption[0]);
            selectedStandaloneTarget = architecturesForPlatform[contentArray[num4]];
        Label_0523:
            if (selectedStandaloneTarget != EditorUserBuildSettings.selectedStandaloneTarget)
            {
                EditorUserBuildSettings.selectedStandaloneTarget = selectedStandaloneTarget;
                GUIUtility.ExitGUI();
            }
        Label_056E:
            GUI.enabled = true;
            bool enableBuildButton = (buildWindowExtension == null) || buildWindowExtension.EnabledBuildButton();
            bool enableBuildAndRunButton = false;
            bool flag5 = (buildWindowExtension == null) || buildWindowExtension.ShouldDrawScriptDebuggingCheckbox();
            bool flag6 = (buildWindowExtension != null) && buildWindowExtension.ShouldDrawExplicitNullCheckbox();
            bool flag7 = (buildWindowExtension == null) || buildWindowExtension.ShouldDrawDevelopmentPlayerCheckbox();
            bool flag8 = ((target == BuildTarget.StandaloneLinux) || (target == BuildTarget.StandaloneLinux64)) || (target == BuildTarget.StandaloneLinuxUniversal);
            IBuildPostprocessor buildPostProcessor = ModuleManager.GetBuildPostProcessor(target);
            bool flag9 = (buildPostProcessor != null) && buildPostProcessor.SupportsScriptsOnlyBuild();
            bool canInstallInBuildFolder = false;
            if (BuildPipeline.IsBuildTargetSupported(target))
            {
                bool flag11 = (buildWindowExtension == null) || buildWindowExtension.ShouldDrawProfilerCheckbox();
                GUI.enabled = flag7;
                if (flag7)
                {
                    EditorUserBuildSettings.development = EditorGUILayout.Toggle(styles.debugBuild, EditorUserBuildSettings.development, new GUILayoutOption[0]);
                }
                bool development = EditorUserBuildSettings.development;
                GUI.enabled = development;
                GUI.enabled = GUI.enabled && (platform.targetGroup != BuildTargetGroup.WebPlayer);
                if (flag11)
                {
                    if (!GUI.enabled)
                    {
                        if (!development)
                        {
                            styles.profileBuild.tooltip = "Profiling only enabled in Development Player";
                        }
                        else if (platform.targetGroup == BuildTargetGroup.WebPlayer)
                        {
                            styles.profileBuild.tooltip = "Autoconnect not available from webplayer. Manually connect in Profiler";
                        }
                    }
                    else
                    {
                        styles.profileBuild.tooltip = string.Empty;
                    }
                    EditorUserBuildSettings.connectProfiler = EditorGUILayout.Toggle(styles.profileBuild, EditorUserBuildSettings.connectProfiler, new GUILayoutOption[0]);
                }
                GUI.enabled = development;
                if (flag5)
                {
                    EditorUserBuildSettings.allowDebugging = EditorGUILayout.Toggle(styles.allowDebugging, EditorUserBuildSettings.allowDebugging, new GUILayoutOption[0]);
                }
                if (flag6)
                {
                    GUI.enabled = !development;
                    if (!GUI.enabled)
                    {
                        EditorUserBuildSettings.explicitNullChecks = true;
                    }
                    EditorUserBuildSettings.explicitNullChecks = EditorGUILayout.Toggle(styles.explicitNullChecks, EditorUserBuildSettings.explicitNullChecks, new GUILayoutOption[0]);
                    GUI.enabled = development;
                }
                if (flag9)
                {
                    EditorUserBuildSettings.buildScriptsOnly = EditorGUILayout.Toggle(styles.buildScriptsOnly, EditorUserBuildSettings.buildScriptsOnly, new GUILayoutOption[0]);
                }
                GUI.enabled = !development;
                if (flag8)
                {
                    EditorUserBuildSettings.enableHeadlessMode = EditorGUILayout.Toggle(styles.enableHeadlessMode, EditorUserBuildSettings.enableHeadlessMode && !development, new GUILayoutOption[0]);
                }
                GUI.enabled = true;
                GUILayout.FlexibleSpace();
                canInstallInBuildFolder = Unsupported.IsDeveloperBuild() && PostprocessBuildPlayer.SupportsInstallInBuildFolder(target);
                if (enableBuildButton)
                {
                    enableBuildAndRunButton = (buildWindowExtension == null) ? !EditorUserBuildSettings.installInBuildFolder : (buildWindowExtension.EnabledBuildAndRunButton() && !EditorUserBuildSettings.installInBuildFolder);
                }
            }
            else
            {
                GUILayoutOption[] optionArray2 = new GUILayoutOption[] { GUILayout.ExpandWidth(true) };
                GUILayout.BeginHorizontal(optionArray2);
                GUILayoutOption[] optionArray3 = new GUILayoutOption[] { GUILayout.ExpandWidth(true) };
                GUILayout.BeginVertical(optionArray3);
                int num5 = s_BuildPlatforms.BuildPlatformIndexFromTargetGroup(platform.targetGroup);
                GUILayout.Label(styles.GetTargetNotInstalled(num5, 0), new GUILayoutOption[0]);
                if ((styles.GetTargetNotInstalled(num5, 1) != null) && GUILayout.Button(styles.GetTargetNotInstalled(num5, 1), new GUILayoutOption[0]))
                {
                    Application.OpenURL(styles.GetTargetNotInstalled(num5, 2).text);
                }
                GUILayout.EndVertical();
                GUILayout.FlexibleSpace();
                GUILayout.EndHorizontal();
            }
            GUIBuildButtons(buildWindowExtension, enableBuildButton, enableBuildAndRunButton, canInstallInBuildFolder, platform);
        }