Ejemplo n.º 1
0
        /// <summary>
        /// Decide which platform to change to based on the type of the <see cref="ScenesTransitionSetupDataSO"/>
        /// </summary>
        internal void OnTransitionDidFinish(ScenesTransitionSetupDataSO?setupData, DiContainer container)
        {
            CustomPlatform platform;

            switch (setupData)
            {
            case null when _lobbyGameStateModel.gameState != MultiplayerGameState.Lobby:
            case MenuScenesTransitionSetupDataSO:
                _assetLoader.ToggleHeart(_config.ShowHeart);
                platform = _config.ShowInMenu
                        ? _config.ShufflePlatforms
                            ? RandomPlatform
                            : _platformManager.SingleplayerPlatform
                        : _platformManager.DefaultPlatform;
                break;

            case StandardLevelScenesTransitionSetupDataSO standardLevelScenesTransitionSetupDataSO when standardLevelScenesTransitionSetupDataSO.difficultyBeatmap.parentDifficultyBeatmapSet.beatmapCharacteristic.requires360Movement:
                platform = _platformManager.A360Platform;
                break;

            case StandardLevelScenesTransitionSetupDataSO when _platformManager.APIRequestedPlatform is not null:
                platform = _platformManager.APIRequestedPlatform;
                break;

            case StandardLevelScenesTransitionSetupDataSO:
            case MissionLevelScenesTransitionSetupDataSO:
            case TutorialScenesTransitionSetupDataSO:
                platform = _config.ShufflePlatforms
                        ? RandomPlatform
                        : _platformManager.SingleplayerPlatform;
                break;

            case MultiplayerLevelScenesTransitionSetupDataSO when container.HasBinding <MultiplayerLocalActivePlayerFacade>():
                platform = _platformManager.MultiplayerPlatform;

                break;

            case null:
            case BeatmapEditorScenesTransitionSetupDataSO:
                platform = _platformManager.DefaultPlatform;
                break;

            default:
                return;
            }

            _container = container;
            _environmentHider.UpdateEnvironmentRoot(setupData, container);
            _ = ChangeToPlatformAsync(platform);
        }