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; }
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"); }