Exemplo n.º 1
0
    /// <summary>
    ///  Moves the selected level to the last position, making it the last level of the game.
    /// </summary>
    private void MoveToLast()
    {
        BeforeChange("Move level to last position");
        IList <string> selectedLevels = levelListData.GetSelectedItems(Target.levels);

        SMSceneConfigurationOperation.Build(Target).MoveLevelToBottom(selectedLevels).Apply(Target);
        levelListData.SetSelectedItems(Target.levels, selectedLevels);
        EditorUtility.SetDirty(Target);
    }
Exemplo n.º 2
0
    private void ChangeToIgnore()                                // 不作标记
    {
        BeforeChange("Change scenes to ignore");
        IList <string> selectedScenes = sceneListData.GetSelectedItems(scenes);

        SMSceneConfigurationOperation.Build(Target).Ignore(selectedScenes).Apply(Target);
        levelListData.ClearSelection();
        SyncBuildSettingsIfRequired();
        EditorUtility.SetDirty(Target);
    }
    public static SMSceneConfigurationOperation Build(SMSceneConfiguration configuration)
    {
        SMSceneConfigurationOperation result = new SMSceneConfigurationOperation();

        result.firstScreen           = configuration.firstScreen;
        result.firstScreenAfterLevel = configuration.firstScreenAfterLevel;
        result.screens.AddRange(configuration.screens);
        result.levels.AddRange(configuration.levels);
        return(result);
    }
Exemplo n.º 4
0
    /// <summary>
    /// Drop levels from the level list into the scene list
    /// </summary>
    private void DropLevelInScenes(IList <int> levelIndices)
    {
        BeforeChange("Remove levels");
        IList <string> selectedLevels = ListOperation <string> .FilterList(Target.levels, levelIndices);

        SMSceneConfigurationOperation.Build(Target).Ignore(selectedLevels).Apply(Target);
        sceneListData.SetSelectedItems(scenes, selectedLevels);
        levelListData.ClearSelection();
        SyncBuildSettingsIfRequired();
        EditorUtility.SetDirty(Target);
    }
Exemplo n.º 5
0
    private void ChangeToFirstScreenAfterLevel()                 // 关卡结束跳转场景
    {
        string scene = scenes[sceneListData.First];

        if (Target.firstScreenAfterLevel != scene)
        {
            BeforeChange("Change scene to be first screen after last level");
            SMSceneConfigurationOperation.Build(Target).FirstScreenAfterLevel(scene).Apply(Target);
            SyncBuildSettingsIfRequired();
            EditorUtility.SetDirty(Target);
        }
    }
Exemplo n.º 6
0
    private void ChangeToFirstScreen()                           // 标记成开始场景
    {
        string scene = scenes[sceneListData.First];

        if (Target.firstScreen != scene)
        {
            BeforeChange("Change scene to be first screen");
            SMSceneConfigurationOperation.Build(Target).FirstScreen(scene).Apply(Target);
            SyncBuildSettingsIfRequired();
            EditorUtility.SetDirty(Target);
        }
    }
    /// <summary>
    /// Drop scenes from the scene list into the level list or move levels inside the level list
    /// </summary>
    private void DropScenesInLevels(IList <int> sceneIndices, int index, Type dragSource)
    {
        if (dragSource.Equals(typeof(SMSceneListDragSource)))
        {
            BeforeChange("Add scenes as level");
            IList <string> selectedScenes = ListOperation <string> .FilterList(scenes, sceneIndices);

            SMSceneConfigurationOperation.Build(Target).Level(selectedScenes).MoveLevelToPosition(selectedScenes, index).Apply(Target);
            levelListData.SetSelectedItems(Target.levels, selectedScenes);
            SyncBuildSettingsIfRequired();
        }
        else
        {
            BeforeChange("Move level");
            IList <string> selectedLevel = ListOperation <string> .FilterList(Target.levels, sceneIndices);

            SMSceneConfigurationOperation.Build(Target).MoveLevelToPosition(selectedLevel, index).Apply(Target);
            levelListData.SetSelectedItems(Target.levels, selectedLevel);
        }
        EditorUtility.SetDirty(Target);
    }
Exemplo n.º 8
0
 protected override void FixInvalidScenes()
 {
     SMSceneConfigurationOperation.Build(Target).Ignore(invalidScreens).Ignore(invalidLevels).Apply(Target);
 }