Exemplo n.º 1
0
    public void OnGUI()
    {
        if (requestFocus && Event.current.type == EventType.Layout)
        {
            requestFocus = false;
            EditorWindow.FocusWindowIfItsOpen <UTAutomationPlanPopup>();
        }

        EditorGUILayout.LabelField(caption);
        EditorGUILayout.Space();

        GUI.SetNextControlName("AutomationPlanList");
        listData = CUListControl.SelectionList <UTAutomationPlan>(listData, currentItems, itemRenderer, "Plans", GUILayout.ExpandHeight(true));
        if (GUI.GetNameOfFocusedControl() == string.Empty)
        {
            // move focus to the textfield after the dialog is visible
            GUI.FocusControl("AutomationPlanList");
        }
        EditorGUILayout.Space();

        EditorGUILayout.BeginHorizontal();

        EditorGUI.BeginChangeCheck();
        showAllItems = GUILayout.Toggle(showAllItems, "Show hidden plans");
        if (EditorGUI.EndChangeCheck())
        {
            currentItems = showAllItems ? allItems : visibleItems;
            listData.ClearSelection();
            if (currentItems.Count > 0)
            {
                listData[0] = true;
            }
        }

        GUILayout.FlexibleSpace();
        GUI.enabled = !listData.Empty;
        if (GUILayout.Button("Ok"))
        {
            Apply(listData.First);
        }
        GUI.enabled = true;
        if (GUILayout.Button("Cancel"))
        {
            CloseDialog();
        }
        EditorGUILayout.EndHorizontal();
        EditorGUILayout.Space();

        if (Event.current.type == EventType.KeyDown && Event.current.keyCode == KeyCode.Escape)
        {
            CloseDialog();
        }
        wasGuiPaintedAtLeastOnce = true;
    }
Exemplo n.º 2
0
    private void DrawActions()
    {
        GUILayout.Label("Settings", UTEditorResources.TitleStyle);
        EditorGUILayout.Space();
        EditorGUI.BeginChangeCheck();

        EditorGUILayout.BeginHorizontal();
        showHidden = EditorGUILayout.Toggle("Show hidden plans", showHidden);
        debugMode  = EditorGUILayout.Toggle("Debug mode", debugMode);
        EditorGUILayout.EndHorizontal();

        EditorGUILayout.BeginHorizontal();
        clearConsole             = EditorGUILayout.Toggle("Clear console", clearConsole);
        returnToPlanListAfterRun = EditorGUILayout.Toggle("Return to plan list after run", returnToPlanListAfterRun);
        EditorGUILayout.EndHorizontal();

        EditorGUILayout.Space();

        if (EditorGUI.EndChangeCheck())
        {
            UTPreferences.DebugMode = debugMode;
            UTPreferences.ShowHiddenPlansInRunner        = showHidden;
            UTPreferences.ClearConsoleBeforeStart        = clearConsole;
            UTPreferences.ReturnToPlanListAfterPlanIsRun = returnToPlanListAfterRun;
        }

        var planList = showHidden ? plans : visiblePlans;

        listData = CUListControl.SelectionList(listData, planList, renderer, "Plans");

        EditorGUILayout.Space();
        EditorGUILayout.BeginHorizontal();
        GUILayout.FlexibleSpace();

        GUI.enabled = listData.Selection.Count > 0 && !UTomateRunner.Instance.IsRunning;
        if (GUILayout.Button("Run Plan"))
        {
            currentWindow = 1;
            RunSelected();
            // some actions will reload the project and not exiting the gui here
            // will yield all kinds of funky exceptions because the gui is trying to draw on a state that
            // no longer exists.
            GUIUtility.ExitGUI();
        }
        GUI.enabled = true;
        EditorGUILayout.EndHorizontal();
        EditorGUILayout.Space();
    }
Exemplo n.º 3
0
    public override void OnInspectorGUI()                        // 画 GUI
    {
        ProDraw();
        if (Target.activeConfiguration)
        {
            GUILayout.Label("游戏使用该配置".AddYellow());
        }
        else
        {
            EditorGUILayout.BeginHorizontal();
            GUILayout.Label("游戏不是使用这个配置");
            GUILayout.FlexibleSpace();
            if (GUILayout.Button("使用该配置"))
            {
                SMSceneConfigurationUtil.EnsureActiveConfiguration(Target, true);
                SyncBuildSettingsIfRequired();
            }
            EditorGUILayout.EndHorizontal();
        }

        MyCreate.Box(() =>
        {
            sceneListHeight = CUResizableContainer.BeginVertical(sceneListHeight);
            sceneListData   = CUListControl.SelectionList(sceneListData, scenes, sceneRenderer);
            CUResizableContainer.EndVertical();

            bool isChooseScene = !sceneListData.Empty;
            GUI.enabled        = isChooseScene;                                   // 判断有没有点击场景
            int width          = Screen.width / 3 - 10;
            MyGUI.Heng(() =>
            {
                MyGUI.Button(isChooseScene ? "关卡".AddGreen() : "关卡", width, ChangeToLevel);
                MyGUI.Button(isChooseScene ? "场景".AddOrange() : "关卡", width, ChangeToScreen);
                MyGUI.Button("Ignore", width, ChangeToIgnore);
            });
            GUI.enabled = !sceneListData.Empty && IsScreen(scenes[sceneListData.First]);// 判断点击的场景是否标记 Screen
            MyGUI.Heng(() =>
            {
                MyGUI.Button("开始场景", width, ChangeToFirstScreen);
                MyGUI.Button("关卡完成后场景", width, ChangeToFirstScreenAfterLevel);
                GUI.enabled = sceneListData.Selection.Count == 1;
                MyGUI.Button("打开", width, () =>
                {
                    OpenScene(sceneListData);
                });
            });
        });
        MyGUI.AddSpace(4);
        GUI.enabled = true;
        MyCreate.Box(() =>
        {
            levelListHeight = CUResizableContainer.BeginVertical(levelListHeight);
            levelListData   = CUListControl.SelectionList(levelListData, Target.levels, levelRenderer, "关卡");
            CUResizableContainer.EndVertical();

            GUI.enabled = !levelListData.Empty;
            MyGUI.Heng(() =>
            {
                MyGUI.AddSpace();
                MyGUI.Button("First", MoveToFirst);
                MyGUI.Button("↑", MoveUp);
                MyGUI.Button("↓", MoveDown);
                MyGUI.Button("Last", MoveToLast);
            });
            GUI.enabled = true;
        });
    }
Exemplo n.º 4
0
    public override void OnInspectorGUI()                        // 画 GUI
    {
        ProDraw();
        if (Target.activeConfiguration)
        {
            GUILayout.Label("游戏使用该配置".AddYellow());
        }
        else
        {
            EditorGUILayout.BeginHorizontal();
            GUILayout.Label("游戏不是使用这个配置");
            GUILayout.FlexibleSpace();
            if (GUILayout.Button("使用该配置"))
            {
                SMSceneConfigurationUtil.EnsureActiveConfiguration(Target, true);
                SyncBuildSettingsIfRequired();
            }
            EditorGUILayout.EndHorizontal();
        }
        int workWidth = Screen.width / 3 - 34;
        WorkflowActionEnum targetWork = Target.actionAfterGroup;
        bool isLevel = targetWork == WorkflowActionEnum.LoadNextLevel;

        MyGUI.Heng(() =>
        {
            MyGUI.Text("组结束,加载:");
            MyGUI.Button(isLevel?"[下一关卡]".AddGreen(): "下一关卡".AddLightGreen(), workWidth, () =>
            {
                if (!isLevel)
                {
                    ChangeToWorkflowAction(WorkflowActionEnum.LoadNextLevel);
                }
            });
            MyGUI.AddSpace(2);
            MyGUI.Button(isLevel ? "标记场景".AddLightGreen() : "[标记场景]".AddGreen(), workWidth, () =>
            {
                if (isLevel)
                {
                    ChangeToWorkflowAction(WorkflowActionEnum.LoadScreen);
                }
            });
            MyGUI.AddSpace();
            GUI.enabled = sceneListData.Selection.Count == 1;
            MyGUI.Button("打开", workWidth - 25, () =>
            {
                OpenScene(sceneListData);
            });
            GUI.enabled = true;
        });


        MyCreate.Box(() =>
        {
            sceneListHeight = CUResizableContainer.BeginVertical(sceneListHeight);
            sceneListData   = CUListControl.SelectionList(sceneListData, scenes, sceneRenderer);
            CUResizableContainer.EndVertical();

            bool isChooseScene = !sceneListData.Empty;
            GUI.enabled        = isChooseScene;                                   // 判断有没有点击场景
            int width          = Screen.width / 3 - 10;

            MyGUI.Heng(() =>
            {
                MyGUI.Button(isChooseScene ? "关卡".AddGreen() : "关卡", width, ChangeToLevel);
                MyGUI.Button(isChooseScene ? "场景".AddOrange() : "关卡", width, ChangeToScreen);
                MyGUI.Button("Ignore", width, ChangeToIgnore);
            });
            GUI.enabled = !sceneListData.Empty && IsScreen(scenes[sceneListData.First]);// 判断点击的场景是否标记 Screen
            MyCreate.Heng(() =>
            {
                MyGUI.Button("开始场景", width, ChangeToFirstScreen);
                MyGUI.Button("关卡完成后场景", width, ChangeToFirstScreenAfterLevel);
                GUI.enabled = GUI.enabled && Target.actionAfterGroup == WorkflowActionEnum.LoadScreen;// 是否选择了标记场景
                MyGUI.Button("完成组后场景", width, ChangeToFirstScreenAfterGroup);
            });
        });

        MyGUI.AddSpace(4);
        GUI.enabled = true;

        MyCreate.Box(() =>
        {
            levelListHeight = CUResizableContainer.BeginVertical(levelListHeight);
            EditorGUILayout.BeginHorizontal();
            groupListWidth = CUResizableContainer.BeginHorizontal(groupListWidth);
            int lastGroup  = groupListData.First;
            groupListData  = CUListControl.SelectionList(groupListData, Target.groups, groupRenderer, "组");
            if (lastGroup != groupListData.First)
            {
                levelListData.ClearSelection();
            }

            CUResizableContainer.EndHorizontal();
            GUI.enabled   = SelectedGroup != null;
            levelListData = CUListControl.SelectionList(levelListData, currentGroupLevels, levelRenderer, "关卡");
            GUI.enabled   = true;
            EditorGUILayout.EndHorizontal();
            CUResizableContainer.EndVertical();

            MyGUI.Heng(() =>
            {
                MyGUI.Button("+", AddGroup);
                GUI.enabled = !groupListData.Empty && Target.groups.Length > 1;
                MyGUI.Button("-", RemoveGroup);
                GUI.enabled = !groupListData.Empty;
                MyGUI.Button("改名", RenameGroup);
                GUI.enabled = true;
                MyGUI.AddSpace();
                GUI.enabled = !levelListData.Empty;
                MyGUI.Button("First", MoveToFirst);
                MyGUI.Button("↑", MoveUp);
                MyGUI.Button("↓", MoveDown);
                MyGUI.Button("Last", MoveToLast);
                GUI.enabled = true;
            });
        });
    }
    /// <summary>
    /// Draws the list of scenes in the inspector GUI.
    /// </summary>
    protected void SceneGUI()
    {
        sceneListHeight = CUResizableContainer.BeginVertical(sceneListHeight);
        sceneListData   = CUListControl.SelectionList(sceneListData, scenes, sceneRenderer, "Available Scenes");
        CUResizableContainer.EndVertical();

        GUI.enabled = !sceneListData.Empty;
        EditorGUILayout.BeginHorizontal();
        if (GUILayout.Button("Level"))
        {
            ChangeToLevel();
        }
        if (GUILayout.Button("Screen"))
        {
            ChangeToScreen();
        }
        if (GUILayout.Button("Ignore"))
        {
            ChangeToIgnore();
        }
        EditorGUILayout.EndHorizontal();

        GUI.enabled = !sceneListData.Empty && IsScreen(scenes[sceneListData.First]);
        EditorGUILayout.BeginHorizontal();
        if (GUILayout.Button("First Screen"))
        {
            ChangeToFirstScreen();
        }
        if (GUILayout.Button("After last Level"))
        {
            ChangeToFirstScreenAfterLevel();
        }

        EditorGUILayout.EndHorizontal();
        GUI.enabled = true;
        EditorGUILayout.Space();

        levelListHeight = CUResizableContainer.BeginVertical(levelListHeight);
        levelListData   = CUListControl.SelectionList(levelListData, Target.levels, levelRenderer, "Levels");
        CUResizableContainer.EndVertical();

        GUI.enabled = !levelListData.Empty;
        EditorGUILayout.BeginHorizontal();
        GUILayout.FlexibleSpace();
        if (GUILayout.Button("First"))
        {
            MoveToFirst();
        }
        if (GUILayout.Button("Up"))
        {
            MoveUp();
        }
        if (GUILayout.Button("Down"))
        {
            MoveDown();
        }
        if (GUILayout.Button("Last"))
        {
            MoveToLast();
        }
        EditorGUILayout.EndHorizontal();
        GUI.enabled = true;
    }
    /// <summary>
    /// Draws the list of scenes in the inspector GUI.
    /// </summary>
    protected void SceneGUI()
    {
        SMWorkflowActionType action = (SMWorkflowActionType)EditorGUILayout.EnumPopup(new GUIContent("Action after Group", ""), Target.actionAfterGroup);

        if (action != Target.actionAfterGroup)
        {
            ChangeToWorkflowAction(action);
        }
        GUILayout.Space(5);

        sceneListHeight = CUResizableContainer.BeginVertical(sceneListHeight);
        sceneListData   = CUListControl.SelectionList(sceneListData, scenes, sceneRenderer, "Available Scenes");
        CUResizableContainer.EndVertical();

        GUI.enabled = !sceneListData.Empty && SelectedGroup != null;
        EditorGUILayout.BeginHorizontal();
        if (GUILayout.Button("Level"))
        {
            ChangeToLevel();
        }
        GUI.enabled = !sceneListData.Empty;
        if (GUILayout.Button("Screen"))
        {
            ChangeToScreen();
        }
        if (GUILayout.Button("Ignore"))
        {
            ChangeToIgnore();
        }
        EditorGUILayout.EndHorizontal();

        GUI.enabled = !sceneListData.Empty && IsScreen(scenes[sceneListData.First]);
        EditorGUILayout.BeginHorizontal();
        if (GUILayout.Button("First Screen"))
        {
            ChangeToFirstScreen();
        }
        if (GUILayout.Button("After last Level"))
        {
            ChangeToFirstScreenAfterLevel();
        }

        GUI.enabled = GUI.enabled && Target.actionAfterGroup == SMWorkflowActionType.LoadScreen;
        if (GUILayout.Button("After Group"))
        {
            ChangeToFirstScreenAfterGroup();
        }

        EditorGUILayout.EndHorizontal();
        GUI.enabled = true;
        EditorGUILayout.Space();

        levelListHeight = CUResizableContainer.BeginVertical(levelListHeight);
        EditorGUILayout.BeginHorizontal();
        groupListWidth = CUResizableContainer.BeginHorizontal(groupListWidth);
        int lastGroup = groupListData.First;

        groupListData = CUListControl.SelectionList(groupListData, Target.groups, levelRenderer, "Groups");
        if (lastGroup != groupListData.First)
        {
            // group changed reset level selection
            levelListData.ClearSelection();
        }

        CUResizableContainer.EndHorizontal();
        GUI.enabled   = SelectedGroup != null;
        levelListData = CUListControl.SelectionList(levelListData, currentGroupLevels, levelRenderer, "Levels");
        GUI.enabled   = true;
        EditorGUILayout.EndHorizontal();
        CUResizableContainer.EndVertical();

        EditorGUILayout.BeginHorizontal();
        if (GUILayout.Button("+"))
        {
            AddGroup();
        }
        GUI.enabled = !groupListData.Empty && Target.groups.Length > 1;
        if (GUILayout.Button("-"))
        {
            RemoveGroup();
        }
        GUI.enabled = !groupListData.Empty;
        if (GUILayout.Button("Rename"))
        {
            RenameGroup();
        }
        GUI.enabled = true;
        GUILayout.FlexibleSpace();
        GUI.enabled = !levelListData.Empty;
        if (GUILayout.Button("First"))
        {
            MoveToFirst();
        }
        if (GUILayout.Button("Up"))
        {
            MoveUp();
        }
        if (GUILayout.Button("Down"))
        {
            MoveDown();
        }
        if (GUILayout.Button("Last"))
        {
            MoveToLast();
        }
        GUI.enabled = true;
        EditorGUILayout.EndHorizontal();
    }