Decompiled source of AtlyssPluginSettings v1.0.1

AtlyssPluginSettings.dll

Decompiled a month ago
using System;
using System.Collections;
using System.Collections.Generic;
using System.Diagnostics;
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.Versioning;
using BepInEx;
using BepInEx.Bootstrap;
using BepInEx.Configuration;
using BepInEx.Logging;
using HarmonyLib;
using Microsoft.CodeAnalysis;
using UnityEngine;
using UnityEngine.Events;
using UnityEngine.UI;

[assembly: CompilationRelaxations(8)]
[assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)]
[assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)]
[assembly: TargetFramework(".NETStandard,Version=v2.1", FrameworkDisplayName = ".NET Standard 2.1")]
[assembly: AssemblyCompany("AtlyssPluginSettings")]
[assembly: AssemblyConfiguration("Release")]
[assembly: AssemblyFileVersion("1.0.1.0")]
[assembly: AssemblyInformationalVersion("1.0.1+32b1515bba023bce82d30923425fd3031357dd2b")]
[assembly: AssemblyProduct("AtlyssPluginSettings")]
[assembly: AssemblyTitle("AtlyssPluginSettings")]
[assembly: AssemblyVersion("1.0.1.0")]
namespace Microsoft.CodeAnalysis
{
	[CompilerGenerated]
	[Microsoft.CodeAnalysis.Embedded]
	internal sealed class EmbeddedAttribute : Attribute
	{
	}
}
namespace System.Runtime.CompilerServices
{
	[CompilerGenerated]
	[Microsoft.CodeAnalysis.Embedded]
	[AttributeUsage(AttributeTargets.Class | AttributeTargets.Property | AttributeTargets.Field | AttributeTargets.Event | AttributeTargets.Parameter | AttributeTargets.ReturnValue | AttributeTargets.GenericParameter, AllowMultiple = false, Inherited = false)]
	internal sealed class NullableAttribute : Attribute
	{
		public readonly byte[] NullableFlags;

		public NullableAttribute(byte P_0)
		{
			NullableFlags = new byte[1] { P_0 };
		}

		public NullableAttribute(byte[] P_0)
		{
			NullableFlags = P_0;
		}
	}
	[CompilerGenerated]
	[Microsoft.CodeAnalysis.Embedded]
	[AttributeUsage(AttributeTargets.Class | AttributeTargets.Struct | AttributeTargets.Method | AttributeTargets.Interface | AttributeTargets.Delegate, AllowMultiple = false, Inherited = false)]
	internal sealed class NullableContextAttribute : Attribute
	{
		public readonly byte Flag;

		public NullableContextAttribute(byte P_0)
		{
			Flag = P_0;
		}
	}
}
namespace AtlyssPluginSettings
{
	[BepInPlugin("net.portalsam.AtlyssPluginSettings", "PluginSettings", "1.0.1.0")]
	[BepInProcess("ATLYSS.exe")]
	public class PluginSettings : BaseUnityPlugin
	{
		internal static PluginSettings Instance;

		internal static ManualLogSource Logger { get; private set; }

		private void Awake()
		{
			Instance = this;
			Logger = ((BaseUnityPlugin)this).Logger;
			Harmony.CreateAndPatchAll(Assembly.GetExecutingAssembly(), (string)null);
			Logger.LogInfo((object)"PluginSettings has been initialized!");
		}

		internal static ConfigFile GetConfig()
		{
			return ((BaseUnityPlugin)Instance).Config;
		}
	}
	internal static class SettingsManagerPatch
	{
		[HarmonyPatch(typeof(SettingsManager), "Start")]
		internal static class SettingsManagerStartPatch
		{
			[CompilerGenerated]
			private sealed class <BindButtonCoroutine>d__11 : IEnumerator<object>, IEnumerator, IDisposable
			{
				private int <>1__state;

				private object <>2__current;

				public Text bindButtonText;

				public GameObject buttonObject;

				public ConfigEntryBase configEntry;

				public PluginInfo plugin;

				private KeyCode <foundKey>5__2;

				private string <oldText>5__3;

				private float <keyTimer>5__4;

				object IEnumerator<object>.Current
				{
					[DebuggerHidden]
					get
					{
						return <>2__current;
					}
				}

				object IEnumerator.Current
				{
					[DebuggerHidden]
					get
					{
						return <>2__current;
					}
				}

				[DebuggerHidden]
				public <BindButtonCoroutine>d__11(int <>1__state)
				{
					this.<>1__state = <>1__state;
				}

				[DebuggerHidden]
				void IDisposable.Dispose()
				{
					<oldText>5__3 = null;
					<>1__state = -2;
				}

				private bool MoveNext()
				{
					//IL_002d: Unknown result type (might be due to invalid IL or missing references)
					//IL_0185: Unknown result type (might be due to invalid IL or missing references)
					//IL_01af: Unknown result type (might be due to invalid IL or missing references)
					//IL_01ec: Unknown result type (might be due to invalid IL or missing references)
					//IL_01f6: Expected O, but got Unknown
					//IL_00b6: Unknown result type (might be due to invalid IL or missing references)
					//IL_00d4: Unknown result type (might be due to invalid IL or missing references)
					//IL_00d9: Unknown result type (might be due to invalid IL or missing references)
					//IL_00db: Unknown result type (might be due to invalid IL or missing references)
					//IL_00e4: Unknown result type (might be due to invalid IL or missing references)
					//IL_00e6: Unknown result type (might be due to invalid IL or missing references)
					//IL_0105: Unknown result type (might be due to invalid IL or missing references)
					//IL_0108: Invalid comparison between Unknown and I4
					//IL_010a: Unknown result type (might be due to invalid IL or missing references)
					//IL_0110: Invalid comparison between Unknown and I4
					//IL_0112: Unknown result type (might be due to invalid IL or missing references)
					//IL_0116: Unknown result type (might be due to invalid IL or missing references)
					//IL_0117: Unknown result type (might be due to invalid IL or missing references)
					switch (<>1__state)
					{
					default:
						return false;
					case 0:
						<>1__state = -1;
						if (_waitingForKey)
						{
							return false;
						}
						<foundKey>5__2 = (KeyCode)0;
						<oldText>5__3 = bindButtonText.text;
						<keyTimer>5__4 = 5f;
						goto IL_004e;
					case 1:
						<>1__state = -1;
						goto IL_004e;
					case 2:
						{
							<>1__state = -1;
							foreach (Button keybindButton in KeybindButtons)
							{
								((Selectable)keybindButton).interactable = true;
							}
							return false;
						}
						IL_004e:
						if (buttonObject.activeSelf && _pluginSettingsTabReference.activeSelf && _settingsMenuReference.activeSelf)
						{
							_waitingForKey = true;
							foreach (Button keybindButton2 in KeybindButtons)
							{
								((Selectable)keybindButton2).interactable = false;
							}
							KeyCode val = (KeyCode)0;
							foreach (KeyCode value in Enum.GetValues(typeof(KeyCode)))
							{
								if (Input.GetKeyDown(value))
								{
									val = value;
								}
							}
							if ((int)val != 27 && (int)val != 323)
							{
								if ((int)val != 0)
								{
									<foundKey>5__2 = val;
								}
								else
								{
									<keyTimer>5__4 -= Time.deltaTime;
									bindButtonText.text = $"Press a key ({Mathf.Round(<keyTimer>5__4)})";
									if (!(<keyTimer>5__4 <= 0f))
									{
										<>2__current = null;
										<>1__state = 1;
										return true;
									}
								}
							}
						}
						_waitingForKey = false;
						if ((int)<foundKey>5__2 != 0)
						{
							bindButtonText.text = ((object)(KeyCode)(ref <foundKey>5__2)).ToString();
							configEntry.BoxedValue = <foundKey>5__2;
							plugin.Instance.Config.Save();
						}
						else
						{
							bindButtonText.text = <oldText>5__3;
						}
						<>2__current = (object)new WaitForSeconds(0.25f);
						<>1__state = 2;
						return true;
					}
				}

				bool IEnumerator.MoveNext()
				{
					//ILSpy generated this explicit interface implementation from .override directive in MoveNext
					return this.MoveNext();
				}

				[DebuggerHidden]
				void IEnumerator.Reset()
				{
					throw new NotSupportedException();
				}
			}

			private static GameObject? _dollySettingsMenuReference;

			private static GameObject? _cancelButtonReference;

			private static GameObject? _settingsHeaderReference;

			private static GameObject? _boolToggleReference;

			private static GameObject? _keyCodeReference;

			private static void Postfix(SettingsManager __instance)
			{
				//IL_0134: Unknown result type (might be due to invalid IL or missing references)
				//IL_0153: Unknown result type (might be due to invalid IL or missing references)
				//IL_017e: Unknown result type (might be due to invalid IL or missing references)
				//IL_0188: Expected O, but got Unknown
				//IL_0194: Unknown result type (might be due to invalid IL or missing references)
				//IL_019e: Expected O, but got Unknown
				//IL_01e5: Unknown result type (might be due to invalid IL or missing references)
				//IL_0225: Unknown result type (might be due to invalid IL or missing references)
				SettingsManager __instance2 = __instance;
				KeybindButtons.Clear();
				_settingsMenuReference = Utility.TryFind("_SettingsManager/Canvas_SettingsMenu");
				_dollySettingsMenuReference = Utility.TryFind("_SettingsManager/Canvas_SettingsMenu/_dolly_settingsMenu");
				_cancelButtonReference = Utility.TryFind("_SettingsManager/Canvas_SettingsMenu/_dolly_settingsMenu/_dolly_settingsButtons/Button_cancelSettings");
				_inputSettingsTabReference = Utility.TryFind("_SettingsManager/Canvas_SettingsMenu/_dolly_settingsMenu/_dolly_inputSettingsTab");
				_settingsHeaderReference = Utility.TryFind("_SettingsManager/Canvas_SettingsMenu/_dolly_settingsMenu/_dolly_videoSettingsTab/_backdrop_videoSettings/Scroll View/Viewport/Content/_header_GameEffectSettings");
				_boolToggleReference = Utility.TryFind("_SettingsManager/Canvas_SettingsMenu/_dolly_settingsMenu/_dolly_videoSettingsTab/_backdrop_videoSettings/Scroll View/Viewport/Content/_cell_jiggleBonesToggle");
				_keyCodeReference = Utility.TryFind("_SettingsManager/Canvas_SettingsMenu/_dolly_settingsMenu/_dolly_inputSettingsTab/_backdrop/Scroll View/Viewport/Content/_cell_keybinding_up");
				_resetButtonReference = Utility.TryFind("_SettingsManager/Canvas_SettingsMenu/_dolly_settingsMenu/_dolly_inputSettingsTab/_backdrop/Scroll View/Viewport/Content/_cell_cameraSensitivity/Button_01");
				if (!Object.op_Implicit((Object)(object)_settingsMenuReference) || !Object.op_Implicit((Object)(object)_dollySettingsMenuReference) || !Object.op_Implicit((Object)(object)_cancelButtonReference) || !Object.op_Implicit((Object)(object)_inputSettingsTabReference) || !Object.op_Implicit((Object)(object)_settingsHeaderReference) || !Object.op_Implicit((Object)(object)_boolToggleReference) || !Object.op_Implicit((Object)(object)_keyCodeReference) || !Object.op_Implicit((Object)(object)_resetButtonReference))
				{
					PluginSettings.Logger.LogError((object)"One or more UI elements were not found. Mod will not take any affect.");
					return;
				}
				GameObject obj = Object.Instantiate<GameObject>(_cancelButtonReference, _dollySettingsMenuReference.transform, true);
				((Object)obj).name = "Button_pluginSettings";
				obj.transform.localPosition = new Vector3(-219f, -212f, 0f);
				obj.transform.localScale = new Vector3(1f, 1f, 1f);
				((Component)obj.transform.GetChild(0)).GetComponent<Text>().text = "Plugins";
				Button component = obj.GetComponent<Button>();
				component.onClick = new ButtonClickedEvent();
				((UnityEvent)component.onClick).AddListener((UnityAction)delegate
				{
					__instance2.Set_SettingMenuSelectionIndex(4);
				});
				_pluginSettingsTabReference = Object.Instantiate<GameObject>(_inputSettingsTabReference, _inputSettingsTabReference.transform.parent, true);
				((Object)_pluginSettingsTabReference).name = "_dolly_pluginSettingsTab";
				_pluginSettingsTabReference.transform.localPosition = new Vector3(1f, 1f, 1f);
				_pluginsContentReference = ((Component)_pluginSettingsTabReference.transform.Find("_backdrop/Scroll View/Viewport/Content")).gameObject;
				foreach (Transform item in _pluginsContentReference.transform)
				{
					Object.Destroy((Object)(object)((Component)item).gameObject);
				}
				_pluginSettingsMenuElement = _pluginSettingsTabReference.GetComponent<MenuElement>();
				SetupSettingsMenu();
				PluginSettings.Logger.LogInfo((object)"SettingsManager has been patched.");
			}

			private static void SetupSettingsMenu()
			{
				foreach (KeyValuePair<string, PluginInfo> pluginInfo in Chainloader.PluginInfos)
				{
					ConfigFile config = pluginInfo.Value.Instance.Config;
					if (config.Keys.Count < 1)
					{
						continue;
					}
					CreateHeader(pluginInfo.Value.Metadata.Name);
					foreach (KeyValuePair<ConfigDefinition, ConfigEntryBase> item in ((object)config).GetType().GetProperty("Entries", BindingFlags.Instance | BindingFlags.NonPublic).GetValue(config) as Dictionary<ConfigDefinition, ConfigEntryBase>)
					{
						if (item.Value.SettingType == typeof(bool))
						{
							CreateBool(item.Value, pluginInfo.Value);
						}
						else if (item.Value.SettingType == typeof(KeyCode))
						{
							CreateKeyCode(item.Value, pluginInfo.Value);
						}
						else
						{
							CreateField(item.Value, pluginInfo.Value);
						}
					}
				}
			}

			private static void CreateHeader(string headerName)
			{
				//IL_003b: Unknown result type (might be due to invalid IL or missing references)
				GameObject obj = Object.Instantiate<GameObject>(_settingsHeaderReference, _pluginsContentReference.transform, true);
				((Object)obj).name = "_header_" + headerName;
				obj.transform.localScale = new Vector3(1f, 1f, 1f);
				((Component)obj.transform.GetChild(0)).GetComponent<Text>().text = headerName;
			}

			private static void CreateBool(ConfigEntryBase entry, PluginInfo plugin)
			{
				//IL_005f: Unknown result type (might be due to invalid IL or missing references)
				//IL_00f2: Unknown result type (might be due to invalid IL or missing references)
				//IL_0111: Unknown result type (might be due to invalid IL or missing references)
				//IL_012b: Unknown result type (might be due to invalid IL or missing references)
				//IL_013b: Unknown result type (might be due to invalid IL or missing references)
				//IL_0145: Expected O, but got Unknown
				//IL_0157: Unknown result type (might be due to invalid IL or missing references)
				//IL_0161: Expected O, but got Unknown
				//IL_019c: Unknown result type (might be due to invalid IL or missing references)
				//IL_01a6: Expected O, but got Unknown
				ConfigEntryBase entry2 = entry;
				PluginInfo plugin2 = plugin;
				GameObject val = Object.Instantiate<GameObject>(_boolToggleReference, _pluginsContentReference.transform, true);
				((Object)val).name = "_cell_" + entry2.Definition.Key;
				val.transform.localScale = new Vector3(1f, 1f, 1f);
				((Component)val.transform.GetChild(0)).GetComponent<Text>().text = entry2.Definition.Key;
				GameObject gameObject = ((Component)val.transform.GetChild(1)).gameObject;
				((Object)gameObject).name = "Toggle_" + entry2.Definition.Key;
				GameObject obj = Object.Instantiate<GameObject>(_resetButtonReference, val.transform, true);
				((Object)obj).name = "ResetButton";
				obj.transform.localScale = new Vector3(1f, 1f, 1f);
				obj.transform.localPosition = new Vector3(64f, 0f, 0f);
				obj.GetComponent<RectTransform>().sizeDelta = new Vector2(72f, 24f);
				Button component = obj.GetComponent<Button>();
				component.onClick = new ButtonClickedEvent();
				Toggle toggle = gameObject.GetComponent<Toggle>();
				toggle.onValueChanged = new ToggleEvent();
				Toggle obj2 = toggle;
				object boxedValue = entry2.BoxedValue;
				bool flag = default(bool);
				int num;
				if (boxedValue is bool)
				{
					flag = (bool)boxedValue;
					num = 1;
				}
				else
				{
					num = 0;
				}
				obj2.isOn = (byte)((uint)num & (flag ? 1u : 0u)) != 0;
				((UnityEvent)component.onClick).AddListener((UnityAction)delegate
				{
					Toggle obj3 = toggle;
					object defaultValue = entry2.DefaultValue;
					bool flag2 = default(bool);
					int num2;
					if (defaultValue is bool)
					{
						flag2 = (bool)defaultValue;
						num2 = 1;
					}
					else
					{
						num2 = 0;
					}
					obj3.isOn = (byte)((uint)num2 & (flag2 ? 1u : 0u)) != 0;
					entry2.BoxedValue = toggle.isOn;
					plugin2.Instance.Config.Save();
				});
				((UnityEvent<bool>)(object)toggle.onValueChanged).AddListener((UnityAction<bool>)delegate
				{
					entry2.BoxedValue = toggle.isOn;
					plugin2.Instance.Config.Save();
				});
			}

			private static void CreateKeyCode(ConfigEntryBase entry, PluginInfo plugin)
			{
				//IL_005f: Unknown result type (might be due to invalid IL or missing references)
				//IL_00b3: Unknown result type (might be due to invalid IL or missing references)
				//IL_00bd: Expected O, but got Unknown
				//IL_00ee: Unknown result type (might be due to invalid IL or missing references)
				//IL_010d: Unknown result type (might be due to invalid IL or missing references)
				//IL_0127: Unknown result type (might be due to invalid IL or missing references)
				//IL_0137: Unknown result type (might be due to invalid IL or missing references)
				//IL_0141: Expected O, but got Unknown
				//IL_017b: Unknown result type (might be due to invalid IL or missing references)
				//IL_0180: Unknown result type (might be due to invalid IL or missing references)
				//IL_0187: Unknown result type (might be due to invalid IL or missing references)
				//IL_01b3: Unknown result type (might be due to invalid IL or missing references)
				//IL_01bd: Expected O, but got Unknown
				//IL_01c9: Unknown result type (might be due to invalid IL or missing references)
				//IL_01d3: Expected O, but got Unknown
				//IL_0186: Unknown result type (might be due to invalid IL or missing references)
				ConfigEntryBase entry2 = entry;
				PluginInfo plugin2 = plugin;
				GameObject val = Object.Instantiate<GameObject>(_keyCodeReference, _pluginsContentReference.transform, true);
				((Object)val).name = "_cell_keybinding_" + entry2.Definition.Key;
				val.transform.localScale = new Vector3(1f, 1f, 1f);
				((Component)val.transform.GetChild(0)).GetComponent<Text>().text = entry2.Definition.Key;
				GameObject buttonObject = ((Component)val.transform.GetChild(1)).gameObject;
				Button component = buttonObject.GetComponent<Button>();
				component.onClick = new ButtonClickedEvent();
				GameObject obj = Object.Instantiate<GameObject>(_resetButtonReference, val.transform, true);
				((Object)obj).name = "ResetButton";
				obj.transform.localScale = new Vector3(1f, 1f, 1f);
				obj.transform.localPosition = new Vector3(64f, 0f, 0f);
				obj.GetComponent<RectTransform>().sizeDelta = new Vector2(72f, 24f);
				Button component2 = obj.GetComponent<Button>();
				component2.onClick = new ButtonClickedEvent();
				Text keybindText = ((Component)buttonObject.transform.GetChild(0)).GetComponent<Text>();
				Text obj2 = keybindText;
				KeyCode val3 = (KeyCode)((entry2.BoxedValue is KeyCode val2) ? ((int)val2) : 0);
				obj2.text = ((object)(KeyCode)(ref val3)).ToString();
				KeybindButtons.Add(component);
				((UnityEvent)component.onClick).AddListener((UnityAction)delegate
				{
					((MonoBehaviour)PluginSettings.Instance).StartCoroutine(BindButtonCoroutine(buttonObject, keybindText, entry2, plugin2));
				});
				((UnityEvent)component2.onClick).AddListener((UnityAction)delegate
				{
					keybindText.text = entry2.DefaultValue.ToString();
					entry2.BoxedValue = entry2.DefaultValue;
					plugin2.Instance.Config.Save();
				});
			}

			private static void CreateField(ConfigEntryBase entry, PluginInfo plugin)
			{
				//IL_005f: Unknown result type (might be due to invalid IL or missing references)
				//IL_00dd: Unknown result type (might be due to invalid IL or missing references)
				//IL_00fc: Unknown result type (might be due to invalid IL or missing references)
				//IL_0116: Unknown result type (might be due to invalid IL or missing references)
				//IL_0127: Unknown result type (might be due to invalid IL or missing references)
				//IL_0131: Expected O, but got Unknown
				//IL_0170: Unknown result type (might be due to invalid IL or missing references)
				//IL_0175: Unknown result type (might be due to invalid IL or missing references)
				//IL_0187: Expected O, but got Unknown
				//IL_01b0: Unknown result type (might be due to invalid IL or missing references)
				//IL_01d0: Unknown result type (might be due to invalid IL or missing references)
				//IL_01eb: Unknown result type (might be due to invalid IL or missing references)
				//IL_0211: Unknown result type (might be due to invalid IL or missing references)
				//IL_0272: Unknown result type (might be due to invalid IL or missing references)
				//IL_0291: Unknown result type (might be due to invalid IL or missing references)
				//IL_02d2: Unknown result type (might be due to invalid IL or missing references)
				//IL_030f: Unknown result type (might be due to invalid IL or missing references)
				//IL_032e: Unknown result type (might be due to invalid IL or missing references)
				//IL_0376: Unknown result type (might be due to invalid IL or missing references)
				//IL_038f: Unknown result type (might be due to invalid IL or missing references)
				//IL_03e7: Unknown result type (might be due to invalid IL or missing references)
				//IL_03f1: Expected O, but got Unknown
				ConfigEntryBase entry2 = entry;
				PluginInfo plugin2 = plugin;
				GameObject val = Object.Instantiate<GameObject>(_keyCodeReference, _pluginsContentReference.transform, true);
				((Object)val).name = "_cell_input_" + entry2.Definition.Key;
				val.transform.localScale = new Vector3(1f, 1f, 1f);
				GameObject gameObject = ((Component)val.transform.GetChild(0)).gameObject;
				gameObject.GetComponent<Text>().text = entry2.Definition.Key;
				Object.Destroy((Object)(object)((Component)val.transform.GetChild(1)).gameObject);
				GameObject obj = Object.Instantiate<GameObject>(_resetButtonReference, val.transform, true);
				((Object)obj).name = "ResetButton";
				obj.transform.localScale = new Vector3(1f, 1f, 1f);
				obj.transform.localPosition = new Vector3(64f, 0f, 0f);
				obj.GetComponent<RectTransform>().sizeDelta = new Vector2(72f, 24f);
				Button component = obj.GetComponent<Button>();
				component.onClick = new ButtonClickedEvent();
				GameObject val2 = new GameObject("InputField", new Type[4]
				{
					typeof(RectTransform),
					typeof(CanvasRenderer),
					typeof(Image),
					typeof(InputField)
				})
				{
					layer = LayerMask.NameToLayer("UI")
				};
				val2.transform.SetParent(val.transform, true);
				val2.transform.localScale = new Vector3(1f, 1f, 1f);
				val2.transform.localPosition = new Vector3(187f, 0f, 0f);
				val2.GetComponent<RectTransform>().sizeDelta = new Vector2(156f, 20f);
				Image component2 = val2.GetComponent<Image>();
				((Graphic)component2).color = new Color(0.2f, 0.2f, 0.2f, 1f);
				component2.type = (Type)1;
				component2.sprite = val.GetComponent<Image>().sprite;
				InputField inputField = val2.GetComponent<InputField>();
				GameObject obj2 = Object.Instantiate<GameObject>(gameObject, val2.transform, true);
				obj2.layer = LayerMask.NameToLayer("UI");
				obj2.transform.localScale = new Vector3(1f, 1f, 1f);
				obj2.transform.localPosition = new Vector3(0f, 0f, 0f);
				((Object)obj2).name = "Text";
				Text component3 = obj2.GetComponent<Text>();
				component3.fontSize = 16;
				component3.text = "";
				obj2.GetComponent<RectTransform>().sizeDelta = new Vector2(142f, 20f);
				GameObject obj3 = Object.Instantiate<GameObject>(gameObject, val2.transform, true);
				obj3.layer = LayerMask.NameToLayer("UI");
				obj3.transform.localScale = new Vector3(1f, 1f, 1f);
				obj3.transform.localPosition = new Vector3(0f, 0f, 0f);
				((Object)obj3).name = "Placeholder";
				Text component4 = obj3.GetComponent<Text>();
				component4.fontSize = 16;
				component4.text = "Enter a value...";
				((Graphic)component4).color = new Color(1f, 1f, 1f, 0.35f);
				obj3.GetComponent<RectTransform>().sizeDelta = new Vector2(142f, 20f);
				inputField.textComponent = component3;
				inputField.placeholder = (Graphic)(object)component4;
				inputField.SetTextWithoutNotify(entry2.BoxedValue.ToString());
				inputField.MoveTextStart(true);
				((UnityEvent)component.onClick).AddListener((UnityAction)delegate
				{
					inputField.text = entry2.BoxedValue.ToString();
					entry2.BoxedValue = entry2.DefaultValue;
					plugin2.Instance.Config.Save();
				});
				((UnityEvent<string>)(object)inputField.onSubmit).AddListener((UnityAction<string>)delegate
				{
					bool flag = false;
					try
					{
						TypeConverter converter = TomlTypeConverter.GetConverter(entry2.SettingType);
						if (!TomlTypeConverter.CanConvert(entry2.SettingType))
						{
							return;
						}
						entry2.BoxedValue = converter.ConvertToObject(inputField.text, entry2.SettingType);
						flag = true;
						plugin2.Instance.Config.Save();
					}
					catch (Exception arg)
					{
						PluginSettings.Logger.LogWarning((object)$"Input String: \"{inputField.text}\" created exception: \n{arg}");
					}
					if (!flag)
					{
						inputField.text = "";
					}
				});
			}

			[IteratorStateMachine(typeof(<BindButtonCoroutine>d__11))]
			private static IEnumerator BindButtonCoroutine(GameObject buttonObject, Text bindButtonText, ConfigEntryBase configEntry, PluginInfo plugin)
			{
				//yield-return decompiler failed: Unexpected instruction in Iterator.Dispose()
				return new <BindButtonCoroutine>d__11(0)
				{
					buttonObject = buttonObject,
					bindButtonText = bindButtonText,
					configEntry = configEntry,
					plugin = plugin
				};
			}
		}

		[HarmonyPatch(typeof(SettingsManager), "Set_SettingMenuSelectionIndex")]
		internal static class SettingsManagerSelectionPatch
		{
			private static void Finalizer(int _index)
			{
				if ((Object)(object)_pluginSettingsMenuElement != (Object)null)
				{
					_pluginSettingsMenuElement.isEnabled = _index == 4;
				}
			}
		}

		private static MenuElement? _pluginSettingsMenuElement;

		private static GameObject? _inputSettingsTabReference;

		private static GameObject? _pluginSettingsTabReference;

		private static GameObject? _pluginsContentReference;

		private static GameObject? _resetButtonReference;

		private static GameObject? _settingsMenuReference;

		private static readonly List<Button> KeybindButtons = new List<Button>();

		private static bool _waitingForKey;

		private const int Plugin = 4;
	}
	public static class Utility
	{
		public static GameObject? TryFind(string name)
		{
			GameObject obj = GameObject.Find(name);
			if ((Object)(object)obj == (Object)null)
			{
				PluginSettings.Logger.LogError((object)("GameObject \"" + name + "\" could not be found! Please report this as an issue. [ https://github.com/portalsam1/AtlyssPluginSettings ]"));
			}
			return obj;
		}
	}
}