Decompiled source of Console Unlocker v1.1.0

ConsoleUnlocker.dll

Decompiled 2 years ago
using System;
using System.Diagnostics;
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.Versioning;
using System.Security;
using System.Security.Permissions;
using BepInEx;
using BepInEx.Configuration;
using BepInEx.Unity.Mono;
using Eremite;
using QFSW.QC;
using UnityEngine;

[assembly: CompilationRelaxations(8)]
[assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)]
[assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)]
[assembly: TargetFramework(".NETFramework,Version=v4.7.1", FrameworkDisplayName = ".NET Framework 4.7.1")]
[assembly: AssemblyCompany("ConsoleUnlocker")]
[assembly: AssemblyConfiguration("Release")]
[assembly: AssemblyFileVersion("1.0.0.0")]
[assembly: AssemblyInformationalVersion("1.0.0")]
[assembly: AssemblyProduct("ConsoleUnlocker")]
[assembly: AssemblyTitle("ConsoleUnlocker")]
[assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)]
[assembly: AssemblyVersion("1.0.0.0")]
[module: UnverifiableCode]
namespace ConsoleUnlocker;

[BepInPlugin("com.Skrip.ConsoleUnlocker", "ConsoleUnlocker", "1.0.0.0")]
internal class Loader : BaseUnityPlugin
{
	public const string ModName = "ConsoleUnlocker";

	public const string Author = "Skrip";

	public const string GUID = "com.Skrip.ConsoleUnlocker";

	public const string Version = "1.0.0.0";

	private static Loader _instance;

	private ConfigEntry<KeyCode> toggleConsoleKey;

	private GameObject ourObject;

	private static QuantumConsole quantumConsole;

	private static bool isConsoleOpen;

	public static Loader Instance
	{
		get
		{
			if ((Object)(object)_instance == (Object)null)
			{
				_instance = new Loader();
			}
			return _instance;
		}
		private set
		{
			_instance = value;
		}
	}

	public static bool IsConsoleOpen
	{
		get
		{
			return isConsoleOpen;
		}
		set
		{
			isConsoleOpen = value;
		}
	}

	public static QuantumConsole QuantumConsole
	{
		get
		{
			//IL_0040: Unknown result type (might be due to invalid IL or missing references)
			//IL_004a: Expected O, but got Unknown
			if ((Object)(object)quantumConsole == (Object)null)
			{
				quantumConsole = Object.FindObjectOfType<QuantumConsole>();
				if ((Object)(object)quantumConsole == (Object)null)
				{
					if ((Object)(object)Instance.ourObject == (Object)null)
					{
						Instance.ourObject = new GameObject("QuantumConsoleObject");
					}
					quantumConsole = Instance.ourObject.AddComponent<QuantumConsole>();
				}
				quantumConsole.LogToConsole("Console unlocked by Skrip @ Nexus Mods", true);
			}
			return quantumConsole;
		}
		set
		{
			quantumConsole = value;
		}
	}

	private void Awake()
	{
		toggleConsoleKey = ((BaseUnityPlugin)this).Config.Bind<KeyCode>("Hotkeys", "ToggleConsole", (KeyCode)282, "Key to toggle the console window.");
	}

	private void Update()
	{
		//IL_0006: Unknown result type (might be due to invalid IL or missing references)
		if (InputHelper.GetKeyDown(toggleConsoleKey.Value))
		{
			ToggleConsole();
		}
		if (IsConsoleOpen && !GameMB.IsGameActive)
		{
			ToggleConsole();
		}
		if (IsConsoleOpen && !GameMB.TimeScaleService.IsPaused())
		{
			GameMB.TimeScaleService.Pause(false);
		}
		if (IsConsoleOpen)
		{
			QuantumConsole.FocusConsoleInput();
		}
	}

	public static void ToggleConsole()
	{
		if (!GameMB.IsGameActive && !IsConsoleOpen)
		{
			Console.WriteLine("Must be in game to toggle console!");
		}
		else if ((Object)(object)QuantumConsole == (Object)null)
		{
			Console.WriteLine("Unable to toggle the console!");
		}
		else if ((Object)(object)QuantumConsole != (Object)null)
		{
			((Behaviour)QuantumConsole).enabled = !IsConsoleOpen;
			((Behaviour)((Component)QuantumConsole).GetComponent<Canvas>()).enabled = !IsConsoleOpen;
			QuantumConsole.Toggle();
			QuantumConsole.FocusConsoleInput();
			IsConsoleOpen = !IsConsoleOpen;
			if (IsConsoleOpen)
			{
				GameMB.TimeScaleService.Pause(false);
				MB.InputService.LockInput((object)QuantumConsole);
			}
			else
			{
				GameMB.TimeScaleService.Unpause(false);
				MB.InputService.ReleaseInput((object)QuantumConsole);
			}
		}
	}
}