using System.Diagnostics; using System.Reflection; using System.Runtime.CompilerServices; using System.Runtime.Versioning; using BepInEx; using RoR2; using RoR2.UI; using UnityEngine; [assembly: CompilationRelaxations(8)] [assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)] [assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)] [assembly: TargetFramework(".NETStandard,Version=v2.1", FrameworkDisplayName = ".NET Standard 2.1")] [assembly: AssemblyCompany("RoR2UniversalPause")] [assembly: AssemblyConfiguration("Debug")] [assembly: AssemblyFileVersion("1.0.0.0")] [assembly: AssemblyInformationalVersion("1.0.0")] [assembly: AssemblyProduct("RoR2UniversalPause")] [assembly: AssemblyTitle("RoR2UniversalPause")] [assembly: AssemblyVersion("1.0.0.0")] namespace RoR2UniversalPause; [BepInPlugin("com.fukarron.universalitempause", "Universal Item Picker Pause", "1.0.4")] public class UniversalItemPause : BaseUnityPlugin { private bool isPausedByMe = false; private int cursorHiddenFrames = 0; private const int BUFFER_MAX = 3; public void LateUpdate() { if (!RoR2Application.isInSinglePlayer || !((Object)(object)Run.instance != (Object)null)) { return; } bool flag = false; bool flag2 = false; if (LocalUserManager.readOnlyLocalUsersList != null) { foreach (LocalUser readOnlyLocalUsers in LocalUserManager.readOnlyLocalUsersList) { if (readOnlyLocalUsers != null) { if ((Object)(object)readOnlyLocalUsers.eventSystem != (Object)null && readOnlyLocalUsers.eventSystem.isCursorVisible) { flag = true; } if ((Object)(object)readOnlyLocalUsers.cameraRigController != (Object)null && (Object)(object)readOnlyLocalUsers.cameraRigController.hud != (Object)null && (Object)(object)readOnlyLocalUsers.cameraRigController.hud.scoreboardPanel != (Object)null && readOnlyLocalUsers.cameraRigController.hud.scoreboardPanel.activeInHierarchy) { flag2 = true; } } } } bool visible = Cursor.visible; bool flag3 = Object.op_Implicit((Object)(object)ConsoleWindow.instance) && ((Component)ConsoleWindow.instance).gameObject.activeInHierarchy; if (flag || visible || flag3 || flag2) { if (!isPausedByMe) { Time.timeScale = 0f; isPausedByMe = true; } cursorHiddenFrames = 0; } else if (isPausedByMe) { cursorHiddenFrames++; if (cursorHiddenFrames >= 3) { Time.timeScale = 1f; isPausedByMe = false; cursorHiddenFrames = 0; } } if (isPausedByMe) { Time.timeScale = 0f; } } }