internal static void Postfix(ref GameplayCoreInstaller __instance) { var mib = __instance as MonoInstallerBase; var Container = SiraUtil.Accessors.GetDiContainer(ref mib); bool isNotMultiplayer = !Container.HasBinding <MultiplayerLevelSceneSetupData>(); if (isNotMultiplayer) { var config = Container.Resolve <Config>(); var submit = Container.Resolve <Submission>(); var setupData = Container.Resolve <GameplayCoreSceneSetupData>(); var spawnControllerInitData = Container.Resolve <BeatmapObjectSpawnController.InitData>(); if (config.Tweaks.Any(x => x.LevelInfo.Equals(setupData.difficultyBeatmap, Plugin.lastSelectedMode) && x.Selected)) { var tweak = config.Tweaks.Where(x => x.LevelInfo.Equals(setupData.difficultyBeatmap, Plugin.lastSelectedMode) && x.Selected).FirstOrDefault(); if (tweak.NJS != setupData.difficultyBeatmap.noteJumpMovementSpeed) { submit.DisableScoreSubmission("LevelTweaks", "Different NJS"); } spawnControllerInitData.SetField("noteJumpMovementSpeed", tweak.NJS); spawnControllerInitData.SetField("noteJumpStartBeatOffset", tweak.Offset); } } }
internal static void Prefix(ref GameplayCoreInstaller __instance, ref IConnectedPlayer ____connectedPlayer, ref GameplayCoreSceneSetupData ____sceneSetupData) { var mib = __instance as MonoInstallerBase; var Container = SiraUtil.Accessors.GetDiContainer(ref mib); ExtendedPlayerManager exPlayerManager = Container.Resolve <ExtendedPlayerManager>(); ExtendedPlayer? exPlayer = exPlayerManager.GetExtendedPlayer(____connectedPlayer); ExtendedPlayer? hostPlayer = exPlayerManager.GetExtendedPlayer(Container.Resolve <IMultiplayerSessionManager>().connectionOwner); GameplayModifiers?newModifiers; if (____connectedPlayer.HasState("modded") && MPState.FreeModEnabled && exPlayer?.mpexVersion >= _minVersionFreeMod) { newModifiers = exPlayer.lastModifiers; } else { newModifiers = hostPlayer?.lastModifiers; } if (newModifiers != null) { ____sceneSetupData = new GameplayCoreSceneSetupData( ____sceneSetupData.difficultyBeatmap, ____sceneSetupData.previewBeatmapLevel, newModifiers, ____sceneSetupData.playerSpecificSettings, ____sceneSetupData.practiceSettings, ____sceneSetupData.useTestNoteCutSoundEffects, ____sceneSetupData.environmentInfo, ____sceneSetupData.colorScheme ); } }
internal static void Prefix(GameplayCoreInstaller __instance, ref GameplayCoreSceneSetupData ____sceneSetupData) { var mib = __instance as MonoInstallerBase; var Container = Accessors.GetDiContainer(ref mib); Container.BindInterfacesAndSelfTo <Submission>().AsSingle(); }
private static DiContainer GetContainer(GameplayCoreInstaller gameplayCoreInstaller) { MonoInstallerBase monoInstaller = gameplayCoreInstaller; DiContainer container = GetDiContainer(ref monoInstaller); return(container); }
internal static void Prefix(ref GameplayCoreInstaller __instance, ref GameplayCoreSceneSetupData ____sceneSetupData) { var container = GetContainer(__instance); var settings = container.Resolve <MiscSettings>(); if (settings.BPMFixEnabled) { bool actually360 = false; var data = ____sceneSetupData.difficultyBeatmap.beatmapData.beatmapEventsData; var spawnRotationProcessor = new SpawnRotationProcessor(); for (int i = 0; i < data.Count; i++) { var bmEvent = data[i]; if (bmEvent.type == BeatmapEventType.Event14 || bmEvent.type == BeatmapEventType.Event15) { if (spawnRotationProcessor.RotationForEventValue(bmEvent.value) != 0) { actually360 = true; } } } if (!actually360) { var beatmapData = ____sceneSetupData.difficultyBeatmap.beatmapData; SetRotationCount(ref beatmapData, 0); } } }
internal static void Postfix(ref GameplayCoreInstaller __instance, ref GameplayCoreSceneSetupData ____sceneSetupData) { var container = GetContainer(__instance); var settings = container.Resolve <MiscSettings>(); if (settings.BPMFixEnabled) { bool actually360 = false; foreach (var item in ____sceneSetupData.transformedBeatmapData.allBeatmapDataItems) { if (item is SpawnRotationBeatmapEventData rotation) { if (rotation.rotation != 0) { actually360 = true; break; } } } if (!actually360) { container.Unbind <BeatLineManager>(); } } }
internal static void Prefix(GameplayCoreInstaller __instance) { var mib = __instance as MonoInstallerBase; var Container = Accessors.GetDiContainer(ref mib); if (!Container.HasBinding <Submission>()) { Container.BindInterfacesAndSelfTo <Submission>().AsSingle(); } }
//////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////// /// <summary> /// Prefix /// </summary> /// <param name="__instance">GameplayCoreInstaller instance</param> internal static void Prefix(ref GameplayCoreInstaller __instance, ref GameplayCoreSceneSetupData ____sceneSetupData) { if (!(Config.GameTweaker.Enabled && Config.GameTweaker.NoFake360HUD)) { return; } IDifficultyBeatmap l_IDifficultyBeatmap = ____sceneSetupData.difficultyBeatmap; IReadOnlyList <BeatmapEventData> l_BeatmapEventData = l_IDifficultyBeatmap.beatmapData.beatmapEventsData; SpawnRotationProcessor l_SpawnRotationProcessor = new SpawnRotationProcessor(); bool l_Is360 = false; foreach (BeatmapEventData l_CurrentEvent in l_BeatmapEventData) { if (!(l_CurrentEvent.type == BeatmapEventType.Event14 || l_CurrentEvent.type == BeatmapEventType.Event15)) { continue; } if (l_SpawnRotationProcessor.RotationForEventValue(l_CurrentEvent.value) != 0) { l_Is360 = true; break; } } if (!l_Is360) { /// Backup data m_BeatMapToRestore = l_IDifficultyBeatmap.beatmapData; m_BeatMapToRestoreValue = l_IDifficultyBeatmap.beatmapData.spawnRotationEventsCount; /// Add on scene change event callback SDK.Game.Logic.OnSceneChange += Game_OnSceneChange; /// Update rotation count IPA.Utilities.ReflectionUtil.SetProperty <BeatmapData, int>(l_IDifficultyBeatmap.beatmapData, "spawnRotationEventsCount", 0); } }