static void Prefix(MissionLevelScenesTransitionSetupDataSO __instance, IDifficultyBeatmap difficultyBeatmap, OverrideEnvironmentSettings overrideColorScheme,
                           MissionObjective[] missionObjectives, GameplayModifiers gameplayModifiers, PlayerSpecificSettings playerSpecificSettings)
        {
            EnvironmentInfoSO environmentInfoSO = difficultyBeatmap.GetEnvironmentInfo();

            if (overrideColorScheme != null && overrideColorScheme.overrideEnvironments)
            {
                environmentInfoSO = overrideColorScheme.GetOverrideEnvironmentInfoForType(environmentInfoSO.environmentType);
            }
            ScoreSubmission._wasDisabled  = false;
            ScoreSubmission.LastDisablers = Array.Empty <string>();
            Plugin.LevelData.GameplayCoreSceneSetupData = new GameplayCoreSceneSetupData(difficultyBeatmap, gameplayModifiers, playerSpecificSettings, PracticeSettings.defaultPracticeSettings, false, environmentInfoSO);
            Plugin.LevelData.IsSet = true;
            Plugin.LevelData.Mode  = Mode.Mission;
            Utilities.Logger.log.Debug("Level Data set");
            __instance.didFinishEvent -= __instance_didFinishEvent;
            __instance.didFinishEvent += __instance_didFinishEvent;
        }
Esempio n. 2
0
        static void Postfix(StandardLevelScenesTransitionSetupDataSO __instance, string gameMode, IDifficultyBeatmap difficultyBeatmap, IPreviewBeatmapLevel previewBeatmapLevel, OverrideEnvironmentSettings overrideEnvironmentSettings,
                            GameplayModifiers gameplayModifiers, ColorScheme overrideColorScheme, PlayerSpecificSettings playerSpecificSettings, ref PracticeSettings practiceSettings, string backButtonText, bool useTestNoteCutSoundEffects)
        {
            EnvironmentInfoSO environmentInfoSO = difficultyBeatmap.GetEnvironmentInfo();

            if (overrideEnvironmentSettings != null && overrideEnvironmentSettings.overrideEnvironments)
            {
                environmentInfoSO = overrideEnvironmentSettings.GetOverrideEnvironmentInfoForType(environmentInfoSO.environmentType);
            }
            ScoreSubmission._wasDisabled  = false;
            ScoreSubmission.LastDisablers = Array.Empty <string>();
            Plugin.LevelData.GameplayCoreSceneSetupData = new GameplayCoreSceneSetupData(difficultyBeatmap, previewBeatmapLevel, gameplayModifiers, playerSpecificSettings, practiceSettings, useTestNoteCutSoundEffects, environmentInfoSO, overrideColorScheme);
            Plugin.LevelData.IsSet = true;
            Plugin.LevelData.Mode  = Mode.Standard;
            Utilities.Logger.log.Debug("Level Data set");
            __instance.didFinishEvent -= __instance_didFinishEvent;
            __instance.didFinishEvent += __instance_didFinishEvent; // Not triggered in multiplayer
        }
        public static void Prefix(IDifficultyBeatmap difficultyBeatmap, ref OverrideEnvironmentSettings overrideEnvironmentSettings)
        {
            //Wrap all of it in try/catch so an exception would not prevent the player from playing songs
            try
            {
                PlaybackController.Instance.SceneTransitionInitCalled();
                VideoMenu.instance.SetSelectedLevel(difficultyBeatmap.level);

                if (!SettingsStore.Instance.PluginEnabled || SettingsStore.Instance.ForceDisableEnvironmentOverrides)
                {
                    Log.Info($"Cinema disabled: {!SettingsStore.Instance.PluginEnabled}, environment override force disabled: {SettingsStore.Instance.ForceDisableEnvironmentOverrides}");
                    return;
                }

                var video = PlaybackController.Instance.VideoConfig;
                if (video == null || (!video.IsPlayable && video.forceEnvironmentModifications != true))
                {
                    Log.Debug($"No video or not playable, DownloadState: {video?.DownloadState}");
                    return;
                }

                if (video.environmentName != null)
                {
                    var overrideSettings = GetOverrideEnvironmentSettingsFor(video.environmentName);
                    if (overrideSettings != null)
                    {
                        overrideEnvironmentSettings = overrideSettings;
                        Log.Debug($"Overriding environment to {video.environmentName} as configured");
                        return;
                    }
                }

                if (video.EnvironmentModified)
                {
                    Log.Debug("Environment is modified, disabling environment override");
                    overrideEnvironmentSettings = null !;
                    return;
                }

                var overrideEnvironmentEnabled = SettingsStore.Instance.OverrideEnvironment;
                if (!overrideEnvironmentEnabled)
                {
                    Log.Debug("Cinema's environment override disallowed by user");
                    return;
                }

                var environmentWhitelist = new[]
                {
                    "BigMirrorEnvironment",
                    "OriginsEnvironment",
                    "BTSEnvironment",
                    "KDAEnvironment",
                    "RocketEnvironment",
                    "DragonsEnvironment",
                    "LinkinParkEnvironment",
                    "KaleidoscopeEnvironment",
                    "GlassDesertEnvironment",
                    "MonstercatEnvironment",
                    "CrabRaveEnvironment",
                    "SkrillexEnvironment",
                    "WeaveEnvironment",
                    "PyroEnvironment"
                };

                var mapEnvironmentInfoSo = difficultyBeatmap.GetEnvironmentInfo();
                if (overrideEnvironmentSettings is { overrideEnvironments : true })
                {
                    var overrideEnvironmentInfo = overrideEnvironmentSettings.GetOverrideEnvironmentInfoForType(mapEnvironmentInfoSo.environmentType);
                    if (environmentWhitelist.Contains(overrideEnvironmentInfo.serializedName))
                    {
                        Log.Debug("Environment override by user is in whitelist, allowing override");
                        return;
                    }
                }

                if (environmentWhitelist.Contains(mapEnvironmentInfoSo.serializedName))
                {
                    Log.Debug("Environment chosen by mapper is in whitelist");
                    overrideEnvironmentSettings = null !;
                    return;
                }

                var bigMirrorOverrideSettings = GetOverrideEnvironmentSettingsFor("BigMirrorEnvironment");
                if (bigMirrorOverrideSettings == null)
                {
                    return;
                }

                overrideEnvironmentSettings = bigMirrorOverrideSettings;
                Log.Info("Overwriting environment to Big Mirror");
            }