Decompiled source of ExtrasButtonTweaks v1.1.1

plugins/ExtrasButtonTweaks/ExtrasButtonTweaks.dll

Decompiled 2 days ago
using System;
using System.Collections;
using System.Collections.Generic;
using System.Diagnostics;
using System.Reflection;
using System.Reflection.Emit;
using System.Runtime.CompilerServices;
using System.Runtime.Versioning;
using BepInEx;
using BepInEx.Configuration;
using BepInEx.Logging;
using BepInEx.NET.Common;
using BepInExResoniteShim;
using Elements.Core;
using FrooxEngine;
using FrooxEngine.UIX;
using HarmonyLib;

[assembly: CompilationRelaxations(8)]
[assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)]
[assembly: Debuggable(/*Could not decode attribute arguments.*/)]
[assembly: TargetFramework(".NETCoreApp,Version=v10.0", FrameworkDisplayName = ".NET 10.0")]
[assembly: AssemblyCompany("art0007i")]
[assembly: AssemblyConfiguration("Release")]
[assembly: AssemblyFileVersion("1.1.1.0")]
[assembly: AssemblyInformationalVersion("1.1.1+1796397cd00d2412b768710007e35dbc48a3ba7f")]
[assembly: AssemblyProduct("ExtrasButtonTweaks")]
[assembly: AssemblyTitle("ExtrasButtonTweaks")]
[assembly: AssemblyMetadata("RepositoryUrl", "https://github.com/art0007i/ExtrasButtonTweaks")]
[assembly: AssemblyVersion("1.1.1.0")]
[module: RefSafetyRules(11)]
namespace ExtrasButtonTweaks;

[ResonitePlugin("art0007i.ExtrasButtonTweaks", "ExtrasButtonTweaks", "1.1.1", "art0007i", "https://github.com/art0007i/ExtrasButtonTweaks")]
[BepInDependency(/*Could not decode attribute arguments.*/)]
public class Plugin : BasePlugin
{
	private class ExtrasButtonTweaksPatch
	{
		[CompilerGenerated]
		private sealed class <Transpiler>d__0 : global::System.Collections.Generic.IEnumerable<CodeInstruction>, global::System.Collections.IEnumerable, global::System.Collections.Generic.IEnumerator<CodeInstruction>, global::System.Collections.IEnumerator, global::System.IDisposable
		{
			private int <>1__state;

			private CodeInstruction <>2__current;

			private int <>l__initialThreadId;

			private global::System.Collections.Generic.IEnumerable<CodeInstruction> codes;

			public global::System.Collections.Generic.IEnumerable<CodeInstruction> <>3__codes;

			private bool <found>5__2;

			private global::System.Collections.Generic.IEnumerator<CodeInstruction> <>7__wrap2;

			CodeInstruction global::System.Collections.Generic.IEnumerator<CodeInstruction>.Current
			{
				[DebuggerHidden]
				get
				{
					return <>2__current;
				}
			}

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

			[DebuggerHidden]
			public <Transpiler>d__0(int <>1__state)
			{
				this.<>1__state = <>1__state;
				<>l__initialThreadId = Environment.CurrentManagedThreadId;
			}

			[DebuggerHidden]
			void global::System.IDisposable.Dispose()
			{
				int num = <>1__state;
				if (num == -3 || (uint)(num - 1) <= 1u)
				{
					try
					{
					}
					finally
					{
						<>m__Finally1();
					}
				}
				<>7__wrap2 = null;
				<>1__state = -2;
			}

			private bool MoveNext()
			{
				//IL_0089: Unknown result type (might be due to invalid IL or missing references)
				//IL_00a2: Unknown result type (might be due to invalid IL or missing references)
				//IL_00ac: Expected O, but got Unknown
				try
				{
					switch (<>1__state)
					{
					default:
						return false;
					case 0:
						<>1__state = -1;
						<found>5__2 = false;
						<>7__wrap2 = codes.GetEnumerator();
						<>1__state = -3;
						break;
					case 1:
						<>1__state = -3;
						break;
					case 2:
						<>1__state = -3;
						break;
					}
					if (((global::System.Collections.IEnumerator)<>7__wrap2).MoveNext())
					{
						CodeInstruction current = <>7__wrap2.Current;
						if (!<found>5__2)
						{
							object operand = current.operand;
							MethodInfo val = (MethodInfo)((operand is MethodInfo) ? operand : null);
							if (val != null && ((MemberInfo)val).Name == "Button")
							{
								<found>5__2 = true;
								<>2__current = new CodeInstruction(OpCodes.Call, (object)typeof(ExtrasButtonTweaksPatch).GetMethod("CreateExtrasButton"));
								<>1__state = 1;
								return true;
							}
						}
						<>2__current = current;
						<>1__state = 2;
						return true;
					}
					<>m__Finally1();
					<>7__wrap2 = null;
					return false;
				}
				catch
				{
					//try-fault
					((global::System.IDisposable)this).Dispose();
					throw;
				}
			}

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

			private void <>m__Finally1()
			{
				<>1__state = -1;
				if (<>7__wrap2 != null)
				{
					((global::System.IDisposable)<>7__wrap2).Dispose();
				}
			}

			[DebuggerHidden]
			void global::System.Collections.IEnumerator.Reset()
			{
				//IL_0000: Unknown result type (might be due to invalid IL or missing references)
				throw new NotSupportedException();
			}

			[DebuggerHidden]
			global::System.Collections.Generic.IEnumerator<CodeInstruction> global::System.Collections.Generic.IEnumerable<CodeInstruction>.GetEnumerator()
			{
				<Transpiler>d__0 <Transpiler>d__;
				if (<>1__state == -2 && <>l__initialThreadId == Environment.CurrentManagedThreadId)
				{
					<>1__state = 0;
					<Transpiler>d__ = this;
				}
				else
				{
					<Transpiler>d__ = new <Transpiler>d__0(0);
				}
				<Transpiler>d__.codes = <>3__codes;
				return <Transpiler>d__;
			}

			[DebuggerHidden]
			global::System.Collections.IEnumerator global::System.Collections.IEnumerable.GetEnumerator()
			{
				return (global::System.Collections.IEnumerator)((global::System.Collections.Generic.IEnumerable<CodeInstruction>)this).GetEnumerator();
			}
		}

		[IteratorStateMachine(typeof(<Transpiler>d__0))]
		public static global::System.Collections.Generic.IEnumerable<CodeInstruction> Transpiler(global::System.Collections.Generic.IEnumerable<CodeInstruction> codes)
		{
			bool found = false;
			global::System.Collections.Generic.IEnumerator<CodeInstruction> enumerator = codes.GetEnumerator();
			try
			{
				while (((global::System.Collections.IEnumerator)enumerator).MoveNext())
				{
					CodeInstruction current = enumerator.Current;
					if (!found)
					{
						object operand = current.operand;
						MethodInfo val = (MethodInfo)((operand is MethodInfo) ? operand : null);
						if (val != null && ((MemberInfo)val).Name == "Button")
						{
							found = true;
							yield return new CodeInstruction(OpCodes.Call, (object)typeof(ExtrasButtonTweaksPatch).GetMethod("CreateExtrasButton"));
							continue;
						}
					}
					yield return current;
				}
			}
			finally
			{
				((global::System.IDisposable)enumerator)?.Dispose();
			}
		}

		public static Button CreateExtrasButton(UIBuilder ui, IAssetProvider<Sprite> s, in colorX color, LocaleString text, float buttonTextSplit, float buttonTextSplitGap)
		{
			//IL_0006: Unknown result type (might be due to invalid IL or missing references)
			//IL_000b: Unknown result type (might be due to invalid IL or missing references)
			//IL_002e: Unknown result type (might be due to invalid IL or missing references)
			//IL_002f: Unknown result type (might be due to invalid IL or missing references)
			//IL_003a: Unknown result type (might be due to invalid IL or missing references)
			//IL_003f: Unknown result type (might be due to invalid IL or missing references)
			//IL_0042: Unknown result type (might be due to invalid IL or missing references)
			colorX val = ((colorX)(ref color)).MulRGB(0.66f);
			ui.PushStyle();
			ui.Style.ButtonSprite = (IAssetProvider<Sprite>)(object)RadiantUI_Constants.GetOutlinedSprite(ui.World);
			ui.Style.ButtonColor = val;
			LocaleString val2 = LocaleString.op_Implicit("☰");
			colorX? val3 = val;
			Button result = ui.Button(ref val2, ref val3);
			ui.PopStyle();
			return result;
		}
	}

	private class RemoveVectorActionsPatch
	{
		[CompilerGenerated]
		private sealed class <Transpiler>d__0 : global::System.Collections.Generic.IEnumerable<CodeInstruction>, global::System.Collections.IEnumerable, global::System.Collections.Generic.IEnumerator<CodeInstruction>, global::System.Collections.IEnumerator, global::System.IDisposable
		{
			private int <>1__state;

			private CodeInstruction <>2__current;

			private int <>l__initialThreadId;

			private global::System.Collections.Generic.IEnumerable<CodeInstruction> codes;

			public global::System.Collections.Generic.IEnumerable<CodeInstruction> <>3__codes;

			private MethodInfo <lookFor>5__2;

			private MethodInfo <lookFor2>5__3;

			private global::System.Collections.Generic.IEnumerator<CodeInstruction> <>7__wrap3;

			CodeInstruction global::System.Collections.Generic.IEnumerator<CodeInstruction>.Current
			{
				[DebuggerHidden]
				get
				{
					return <>2__current;
				}
			}

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

			[DebuggerHidden]
			public <Transpiler>d__0(int <>1__state)
			{
				this.<>1__state = <>1__state;
				<>l__initialThreadId = Environment.CurrentManagedThreadId;
			}

			[DebuggerHidden]
			void global::System.IDisposable.Dispose()
			{
				int num = <>1__state;
				if (num == -3 || (uint)(num - 1) <= 2u)
				{
					try
					{
					}
					finally
					{
						<>m__Finally1();
					}
				}
				<lookFor>5__2 = null;
				<lookFor2>5__3 = null;
				<>7__wrap3 = null;
				<>1__state = -2;
			}

			private bool MoveNext()
			{
				//IL_00df: Unknown result type (might be due to invalid IL or missing references)
				//IL_00f8: Unknown result type (might be due to invalid IL or missing references)
				//IL_0102: Expected O, but got Unknown
				//IL_0129: Unknown result type (might be due to invalid IL or missing references)
				//IL_0142: Unknown result type (might be due to invalid IL or missing references)
				//IL_014c: Expected O, but got Unknown
				try
				{
					switch (<>1__state)
					{
					default:
						return false;
					case 0:
						<>1__state = -1;
						<lookFor>5__2 = AccessTools.Method(typeof(ContextMenu), "AddItem", new global::System.Type[4]
						{
							typeof(LocaleString).MakeByRefType(),
							typeof(Uri),
							typeof(colorX?).MakeByRefType(),
							typeof(ButtonEventHandler)
						}, (global::System.Type[])null);
						<lookFor2>5__3 = AccessTools.Method(typeof(ReflectionExtensions), "GetVectorDimensions", (global::System.Type[])null, (global::System.Type[])null);
						<>7__wrap3 = codes.GetEnumerator();
						<>1__state = -3;
						break;
					case 1:
						<>1__state = -3;
						break;
					case 2:
						<>1__state = -3;
						break;
					case 3:
						<>1__state = -3;
						break;
					}
					if (((global::System.Collections.IEnumerator)<>7__wrap3).MoveNext())
					{
						CodeInstruction current = <>7__wrap3.Current;
						if (CodeInstructionExtensions.Calls(current, <lookFor>5__2))
						{
							<>2__current = new CodeInstruction(OpCodes.Call, (object)typeof(RemoveVectorActionsPatch).GetMethod("AddItemProxy"));
							<>1__state = 1;
							return true;
						}
						if (CodeInstructionExtensions.Calls(current, <lookFor2>5__3))
						{
							<>2__current = new CodeInstruction(OpCodes.Call, (object)typeof(RemoveVectorActionsPatch).GetMethod("VectorDimensionsProxy"));
							<>1__state = 2;
							return true;
						}
						<>2__current = current;
						<>1__state = 3;
						return true;
					}
					<>m__Finally1();
					<>7__wrap3 = null;
					return false;
				}
				catch
				{
					//try-fault
					((global::System.IDisposable)this).Dispose();
					throw;
				}
			}

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

			private void <>m__Finally1()
			{
				<>1__state = -1;
				if (<>7__wrap3 != null)
				{
					((global::System.IDisposable)<>7__wrap3).Dispose();
				}
			}

			[DebuggerHidden]
			void global::System.Collections.IEnumerator.Reset()
			{
				//IL_0000: Unknown result type (might be due to invalid IL or missing references)
				throw new NotSupportedException();
			}

			[DebuggerHidden]
			global::System.Collections.Generic.IEnumerator<CodeInstruction> global::System.Collections.Generic.IEnumerable<CodeInstruction>.GetEnumerator()
			{
				<Transpiler>d__0 <Transpiler>d__;
				if (<>1__state == -2 && <>l__initialThreadId == Environment.CurrentManagedThreadId)
				{
					<>1__state = 0;
					<Transpiler>d__ = this;
				}
				else
				{
					<Transpiler>d__ = new <Transpiler>d__0(0);
				}
				<Transpiler>d__.codes = <>3__codes;
				return <Transpiler>d__;
			}

			[DebuggerHidden]
			global::System.Collections.IEnumerator global::System.Collections.IEnumerable.GetEnumerator()
			{
				return (global::System.Collections.IEnumerator)((global::System.Collections.Generic.IEnumerable<CodeInstruction>)this).GetEnumerator();
			}
		}

		public static MethodInfo averageFunc = AccessTools.Method(typeof(InspectorMemberActions), "SetAllToAvg", (global::System.Type[])null, (global::System.Type[])null);

		[IteratorStateMachine(typeof(<Transpiler>d__0))]
		public static global::System.Collections.Generic.IEnumerable<CodeInstruction> Transpiler(global::System.Collections.Generic.IEnumerable<CodeInstruction> codes)
		{
			MethodInfo lookFor = AccessTools.Method(typeof(ContextMenu), "AddItem", new global::System.Type[4]
			{
				typeof(LocaleString).MakeByRefType(),
				typeof(Uri),
				typeof(colorX?).MakeByRefType(),
				typeof(ButtonEventHandler)
			}, (global::System.Type[])null);
			MethodInfo lookFor2 = AccessTools.Method(typeof(ReflectionExtensions), "GetVectorDimensions", (global::System.Type[])null, (global::System.Type[])null);
			global::System.Collections.Generic.IEnumerator<CodeInstruction> enumerator = codes.GetEnumerator();
			try
			{
				while (((global::System.Collections.IEnumerator)enumerator).MoveNext())
				{
					CodeInstruction current = enumerator.Current;
					if (CodeInstructionExtensions.Calls(current, lookFor))
					{
						yield return new CodeInstruction(OpCodes.Call, (object)typeof(RemoveVectorActionsPatch).GetMethod("AddItemProxy"));
					}
					else if (CodeInstructionExtensions.Calls(current, lookFor2))
					{
						yield return new CodeInstruction(OpCodes.Call, (object)typeof(RemoveVectorActionsPatch).GetMethod("VectorDimensionsProxy"));
					}
					else
					{
						yield return current;
					}
				}
			}
			finally
			{
				((global::System.IDisposable)enumerator)?.Dispose();
			}
		}

		public static ContextMenuItem AddItemProxy(ContextMenu menu, in LocaleString label, Uri icon, in colorX? color, ButtonEventHandler action)
		{
			if (HideVectorAverage.Value && ((global::System.Delegate)(object)action).Method == averageFunc)
			{
				return null;
			}
			return menu.AddItem(ref label, icon, ref color, action);
		}

		public static int VectorDimensionsProxy(global::System.Type type)
		{
			if (HideVectorSetTo.Value)
			{
				return 0;
			}
			return ReflectionExtensions.GetVectorDimensions(type);
		}
	}

	private class AllowDropPatch
	{
		[CompilerGenerated]
		private sealed class <Transpiler>d__0 : global::System.Collections.Generic.IEnumerable<CodeInstruction>, global::System.Collections.IEnumerable, global::System.Collections.Generic.IEnumerator<CodeInstruction>, global::System.Collections.IEnumerator, global::System.IDisposable
		{
			private int <>1__state;

			private CodeInstruction <>2__current;

			private int <>l__initialThreadId;

			private global::System.Collections.Generic.IEnumerable<CodeInstruction> codes;

			public global::System.Collections.Generic.IEnumerable<CodeInstruction> <>3__codes;

			private MethodInfo <lookFor>5__2;

			private global::System.Collections.Generic.IEnumerator<CodeInstruction> <>7__wrap2;

			private CodeInstruction <code>5__4;

			CodeInstruction global::System.Collections.Generic.IEnumerator<CodeInstruction>.Current
			{
				[DebuggerHidden]
				get
				{
					return <>2__current;
				}
			}

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

			[DebuggerHidden]
			public <Transpiler>d__0(int <>1__state)
			{
				this.<>1__state = <>1__state;
				<>l__initialThreadId = Environment.CurrentManagedThreadId;
			}

			[DebuggerHidden]
			void global::System.IDisposable.Dispose()
			{
				int num = <>1__state;
				if (num == -3 || (uint)(num - 1) <= 2u)
				{
					try
					{
					}
					finally
					{
						<>m__Finally1();
					}
				}
				<lookFor>5__2 = null;
				<>7__wrap2 = null;
				<code>5__4 = null;
				<>1__state = -2;
			}

			private bool MoveNext()
			{
				//IL_00f2: Unknown result type (might be due to invalid IL or missing references)
				//IL_010b: Unknown result type (might be due to invalid IL or missing references)
				//IL_0115: Expected O, but got Unknown
				//IL_007f: Unknown result type (might be due to invalid IL or missing references)
				//IL_0096: Unknown result type (might be due to invalid IL or missing references)
				//IL_009c: Unknown result type (might be due to invalid IL or missing references)
				//IL_00a6: Expected O, but got Unknown
				try
				{
					switch (<>1__state)
					{
					default:
						return false;
					case 0:
						<>1__state = -1;
						<lookFor>5__2 = AccessTools.Property(typeof(IValueFieldProxySource), "Field").SetMethod;
						<>7__wrap2 = codes.GetEnumerator();
						<>1__state = -3;
						goto IL_012f;
					case 1:
						<>1__state = -3;
						goto IL_00bc;
					case 2:
						<>1__state = -3;
						if (CodeInstructionExtensions.Calls(<code>5__4, <lookFor>5__2))
						{
							<>2__current = new CodeInstruction(OpCodes.Call, (object)typeof(AllowDropPatch).GetMethod("Inject"));
							<>1__state = 3;
							return true;
						}
						goto IL_0128;
					case 3:
						{
							<>1__state = -3;
							goto IL_0128;
						}
						IL_00bc:
						<>2__current = <code>5__4;
						<>1__state = 2;
						return true;
						IL_0128:
						<code>5__4 = null;
						goto IL_012f;
						IL_012f:
						if (((global::System.Collections.IEnumerator)<>7__wrap2).MoveNext())
						{
							<code>5__4 = <>7__wrap2.Current;
							if (CodeInstructionExtensions.Is(<code>5__4, OpCodes.Castclass, (MemberInfo)(object)typeof(IValueFieldProxySource)))
							{
								<>2__current = new CodeInstruction(OpCodes.Dup, (object)null);
								<>1__state = 1;
								return true;
							}
							goto IL_00bc;
						}
						<>m__Finally1();
						<>7__wrap2 = null;
						return false;
					}
				}
				catch
				{
					//try-fault
					((global::System.IDisposable)this).Dispose();
					throw;
				}
			}

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

			private void <>m__Finally1()
			{
				<>1__state = -1;
				if (<>7__wrap2 != null)
				{
					((global::System.IDisposable)<>7__wrap2).Dispose();
				}
			}

			[DebuggerHidden]
			void global::System.Collections.IEnumerator.Reset()
			{
				//IL_0000: Unknown result type (might be due to invalid IL or missing references)
				throw new NotSupportedException();
			}

			[DebuggerHidden]
			global::System.Collections.Generic.IEnumerator<CodeInstruction> global::System.Collections.Generic.IEnumerable<CodeInstruction>.GetEnumerator()
			{
				<Transpiler>d__0 <Transpiler>d__;
				if (<>1__state == -2 && <>l__initialThreadId == Environment.CurrentManagedThreadId)
				{
					<>1__state = 0;
					<Transpiler>d__ = this;
				}
				else
				{
					<Transpiler>d__ = new <Transpiler>d__0(0);
				}
				<Transpiler>d__.codes = <>3__codes;
				return <Transpiler>d__;
			}

			[DebuggerHidden]
			global::System.Collections.IEnumerator global::System.Collections.IEnumerable.GetEnumerator()
			{
				return (global::System.Collections.IEnumerator)((global::System.Collections.Generic.IEnumerable<CodeInstruction>)this).GetEnumerator();
			}
		}

		[IteratorStateMachine(typeof(<Transpiler>d__0))]
		public static global::System.Collections.Generic.IEnumerable<CodeInstruction> Transpiler(global::System.Collections.Generic.IEnumerable<CodeInstruction> codes)
		{
			MethodInfo lookFor = AccessTools.Property(typeof(IValueFieldProxySource), "Field").SetMethod;
			global::System.Collections.Generic.IEnumerator<CodeInstruction> enumerator = codes.GetEnumerator();
			try
			{
				while (((global::System.Collections.IEnumerator)enumerator).MoveNext())
				{
					CodeInstruction code = enumerator.Current;
					if (CodeInstructionExtensions.Is(code, OpCodes.Castclass, (MemberInfo)(object)typeof(IValueFieldProxySource)))
					{
						yield return new CodeInstruction(OpCodes.Dup, (object)null);
					}
					yield return code;
					if (CodeInstructionExtensions.Calls(code, lookFor))
					{
						yield return new CodeInstruction(OpCodes.Call, (object)typeof(AllowDropPatch).GetMethod("Inject"));
					}
				}
			}
			finally
			{
				((global::System.IDisposable)enumerator)?.Dispose();
			}
		}

		public static void Inject(IValueFieldProxySource source)
		{
			//IL_0032: Unknown result type (might be due to invalid IL or missing references)
			((IValueReceiver)((ContainerWorker<Component>)(object)((IComponent)source).Slot).AttachComponent(typeof(ValueReceiver<>).MakeGenericType(new global::System.Type[1] { ((object)source).GetType().GetGenericArguments()[0] }), true, (Action<Component>)null)).TryAssignField(source.Field);
		}
	}

	internal static ManualLogSource Log;

	internal static ConfigEntry<bool> ButtonVisuals;

	internal static ConfigEntry<bool> HideVectorAverage;

	internal static ConfigEntry<bool> HideVectorSetTo;

	internal static ConfigEntry<bool> AllowDrop;

	public override void Load()
	{
		//IL_00a7: Unknown result type (might be due to invalid IL or missing references)
		//IL_00bd: Unknown result type (might be due to invalid IL or missing references)
		//IL_00d3: Unknown result type (might be due to invalid IL or missing references)
		//IL_0104: Unknown result type (might be due to invalid IL or missing references)
		//IL_0110: Expected O, but got Unknown
		//IL_0188: Unknown result type (might be due to invalid IL or missing references)
		//IL_0192: Expected O, but got Unknown
		//IL_01dc: Unknown result type (might be due to invalid IL or missing references)
		//IL_01e6: Expected O, but got Unknown
		Log = ((BasePlugin)this).Log;
		ButtonVisuals = ((BasePlugin)this).Config.Bind<bool>("General", "ButtonVisuals", true, "When true button visuals will be changed.");
		HideVectorAverage = ((BasePlugin)this).Config.Bind<bool>("General", "HideVectorAverage", false, "When true vector average option will be hidden.");
		HideVectorSetTo = ((BasePlugin)this).Config.Bind<bool>("General", "HideVectorSetTo", false, "When true vector set to options will be hidden.");
		AllowDrop = ((BasePlugin)this).Config.Bind<bool>("General", "AllowDrop", true, "When true you can drop onto the extras button.");
		MethodInfo val = typeof(InspectorMemberActions).GetNestedType("<>c__DisplayClass5_0", AccessTools.all)?.GetNestedType("<<Pressed>b__0>d", AccessTools.all)?.GetMethod("MoveNext", AccessTools.all);
		if (val != (MethodInfo)null)
		{
			((BasePlugin)this).HarmonyInstance.Patch((MethodBase)(object)val, (HarmonyMethod)null, (HarmonyMethod)null, new HarmonyMethod(typeof(RemoveVectorActionsPatch).GetMethod("Transpiler")), (HarmonyMethod)null, (HarmonyMethod)null);
		}
		else
		{
			Log.LogWarning((object)"Failed to patch context menu, options to disable 'Vector Average' and 'Vector Set To' will not work!");
		}
		MethodInfo toPatch = AccessTools.Method(typeof(SyncMemberEditorBuilder), "GenerateMemberField", (global::System.Type[])null, (global::System.Type[])null);
		MethodInfo patchFunc = AccessTools.Method(typeof(ExtrasButtonTweaksPatch), "Transpiler", (global::System.Type[])null, (global::System.Type[])null);
		ApplyPatch(((BasePlugin)this).HarmonyInstance, ButtonVisuals.Value, toPatch, patchFunc);
		ButtonVisuals.SettingChanged += (EventHandler)delegate
		{
			ApplyPatch(((BasePlugin)this).HarmonyInstance, ButtonVisuals.Value, toPatch, patchFunc);
		};
		MethodInfo patchFunc2 = AccessTools.Method(typeof(AllowDropPatch), "Transpiler", (global::System.Type[])null, (global::System.Type[])null);
		ApplyPatch(((BasePlugin)this).HarmonyInstance, AllowDrop.Value, toPatch, patchFunc2);
		AllowDrop.SettingChanged += (EventHandler)delegate
		{
			ApplyPatch(((BasePlugin)this).HarmonyInstance, AllowDrop.Value, toPatch, patchFunc2);
		};
	}

	private void ApplyPatch(Harmony harmony, bool b, MethodInfo toPatch, MethodInfo patchFunc)
	{
		//IL_0009: Unknown result type (might be due to invalid IL or missing references)
		//IL_0015: Expected O, but got Unknown
		if (b)
		{
			harmony.Patch((MethodBase)(object)toPatch, (HarmonyMethod)null, (HarmonyMethod)null, new HarmonyMethod(patchFunc), (HarmonyMethod)null, (HarmonyMethod)null);
		}
		else
		{
			harmony.Unpatch((MethodBase)(object)toPatch, patchFunc);
		}
	}
}
public static class PluginMetadata
{
	public const string GUID = "art0007i.ExtrasButtonTweaks";

	public const string NAME = "ExtrasButtonTweaks";

	public const string VERSION = "1.1.1";

	public const string AUTHORS = "art0007i";

	public const string REPOSITORY_URL = "https://github.com/art0007i/ExtrasButtonTweaks";
}