Decompiled source of UniversalPause v1.0.4

RoR2UniversalPause.dll

Decompiled 6 hours ago
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;
		}
	}
}