Decompiled source of AssetHelperMenu v1.2.1

AssetHelperMenu.dll

Decompiled a day 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 Microsoft.CodeAnalysis;
using Silksong.AssetHelper.Core;
using Silksong.AssetHelper.Dev;
using Silksong.ModMenu.Elements;
using Silksong.ModMenu.Plugin;
using Silksong.ModMenu.Screens;
using UnityEngine.SceneManagement;

[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("AssetHelperMenu")]
[assembly: AssemblyConfiguration("Release")]
[assembly: AssemblyFileVersion("1.2.1.0")]
[assembly: AssemblyInformationalVersion("1.2.1+b1db11e76e3229bb25a4a548fe0fd86d291ec24f")]
[assembly: AssemblyProduct("AssetHelperMenu")]
[assembly: AssemblyTitle("AssetHelperMenu")]
[assembly: AssemblyMetadata("RepositoryUrl", "https://github.com/silksong-modding/Silksong.AssetHelper")]
[assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)]
[assembly: AssemblyVersion("1.2.1.0")]
[module: UnverifiableCode]
[module: RefSafetyRules(11)]
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;
		}
	}
	[CompilerGenerated]
	[Microsoft.CodeAnalysis.Embedded]
	[AttributeUsage(AttributeTargets.Module, AllowMultiple = false, Inherited = false)]
	internal sealed class RefSafetyRulesAttribute : Attribute
	{
		public readonly int Version;

		public RefSafetyRulesAttribute(int P_0)
		{
			Version = P_0;
		}
	}
}
namespace MonoDetour.HookGen
{
	internal static class DefaultMonoDetourManager
	{
		internal static MonoDetourManager Instance { get; } = New();


		internal static MonoDetourManager New()
		{
			//IL_0019: Unknown result type (might be due to invalid IL or missing references)
			//IL_001f: Expected O, but got Unknown
			return new MonoDetourManager(typeof(DefaultMonoDetourManager).Assembly.GetName().Name);
		}
	}
	[AttributeUsage(AttributeTargets.Assembly | AttributeTargets.Class, AllowMultiple = true, Inherited = false)]
	internal class MonoDetourTargetsAttribute : Attribute, IMonoDetourTargets
	{
		public Type? TargetType { get; }

		public bool IncludeNestedTypes { get; set; }

		public bool DistinguishOverloadsByName { get; set; }

		public string[]? Members { get; set; }

		public string[]? MemberNamePrefixes { get; set; }

		public string[]? MemberNameSuffixes { get; set; }

		public bool GenerateControlFlowVariants { get; set; }

		public MonoDetourTargetsAttribute(Type? targetType = null)
		{
			TargetType = targetType;
			IncludeNestedTypes = true;
			base..ctor();
		}
	}
}
namespace BepInEx
{
	[AttributeUsage(AttributeTargets.Class, Inherited = false, AllowMultiple = false)]
	[Conditional("CodeGeneration")]
	[Microsoft.CodeAnalysis.Embedded]
	internal sealed class BepInAutoPluginAttribute : Attribute
	{
		public BepInAutoPluginAttribute(string? id = null, string? name = null, string? version = null)
		{
		}
	}
}
namespace BepInEx.Preloader.Core.Patching
{
	[AttributeUsage(AttributeTargets.Class, Inherited = false, AllowMultiple = false)]
	[Conditional("CodeGeneration")]
	[Microsoft.CodeAnalysis.Embedded]
	internal sealed class PatcherAutoPluginAttribute : Attribute
	{
		public PatcherAutoPluginAttribute(string? id = null, string? name = null, string? version = null)
		{
		}
	}
}
namespace Microsoft.CodeAnalysis
{
	[Microsoft.CodeAnalysis.Embedded]
	internal sealed class EmbeddedAttribute : Attribute
	{
	}
}
namespace AssetHelperMenu
{
	[BepInDependency(/*Could not decode attribute arguments.*/)]
	[BepInDependency(/*Could not decode attribute arguments.*/)]
	[BepInPlugin("org.silksong-modding.assethelpermenu", "AssetHelperMenu", "1.2.1")]
	public class AssetHelperMenuPlugin : BaseUnityPlugin, IModMenuCustomMenu, IModMenuInterface
	{
		public ConfigEntry<bool> PreferCompressed;

		public const string Id = "org.silksong-modding.assethelpermenu";

		public static string Name => "AssetHelperMenu";

		public static string Version => "1.2.1";

		private void Awake()
		{
			PreferCompressed = ((BaseUnityPlugin)this).Config.Bind<bool>("General", "PreferCompressed", true, "Whether to prefer compressed scene dumps by default");
			((BaseUnityPlugin)this).Logger.LogInfo((object)("Plugin " + Name + " (org.silksong-modding.assethelpermenu) has loaded!"));
		}

		public string ModMenuName()
		{
			return "AssetHelper";
		}

		public AbstractMenuScreen BuildCustomMenu()
		{
			//IL_0007: Unknown result type (might be due to invalid IL or missing references)
			//IL_000c: Unknown result type (might be due to invalid IL or missing references)
			//IL_0012: Expected O, but got Unknown
			//IL_0012: Unknown result type (might be due to invalid IL or missing references)
			//IL_003c: Expected O, but got Unknown
			//IL_003d: Unknown result type (might be due to invalid IL or missing references)
			//IL_0067: Expected O, but got Unknown
			//IL_0068: Unknown result type (might be due to invalid IL or missing references)
			//IL_008e: Expected O, but got Unknown
			//IL_008f: Unknown result type (might be due to invalid IL or missing references)
			//IL_00b9: Expected O, but got Unknown
			//IL_00ba: Unknown result type (might be due to invalid IL or missing references)
			//IL_00e0: Expected O, but got Unknown
			//IL_00e1: Unknown result type (might be due to invalid IL or missing references)
			//IL_0107: Expected O, but got Unknown
			//IL_010e: Unknown result type (might be due to invalid IL or missing references)
			//IL_0114: Expected O, but got Unknown
			//IL_0162: Unknown result type (might be due to invalid IL or missing references)
			//IL_016a: Expected O, but got Unknown
			PaginatedMenuScreenBuilder val = new PaginatedMenuScreenBuilder(ModMenuName(), 8);
			ConfigEntryFactory val2 = new ConfigEntryFactory();
			<AssetHelperMenuPlugin>F79F8426CE8491B0C3CE5DE195955AE1237DCD1ED9C96F2906064935F55BDB485__ModMenuExtensions.AddButton(val, "Open debug folder", delegate
			{
				Process.Start(DebugTools.DebugDataDir);
			});
			<AssetHelperMenuPlugin>F79F8426CE8491B0C3CE5DE195955AE1237DCD1ED9C96F2906064935F55BDB485__ModMenuExtensions.AddButton(val, "Open cache folder", delegate
			{
				Process.Start(AssetPaths.CacheDirectory);
			});
			<AssetHelperMenuPlugin>F79F8426CE8491B0C3CE5DE195955AE1237DCD1ED9C96F2906064935F55BDB485__ModMenuExtensions.AddButton(val, "Dump asset names", (Action)DebugTools.DumpAllAssetNames);
			<AssetHelperMenuPlugin>F79F8426CE8491B0C3CE5DE195955AE1237DCD1ED9C96F2906064935F55BDB485__ModMenuExtensions.AddButton(val, "Dump asset request", delegate
			{
				DebugTools.SerializeAssetRequest("asset_request.json");
			});
			<AssetHelperMenuPlugin>F79F8426CE8491B0C3CE5DE195955AE1237DCD1ED9C96F2906064935F55BDB485__ModMenuExtensions.AddButton(val, "Dump addressable assets", (Action)DebugTools.DumpAllAddressableAssets);
			<AssetHelperMenuPlugin>F79F8426CE8491B0C3CE5DE195955AE1237DCD1ED9C96F2906064935F55BDB485__ModMenuExtensions.AddButton(val, "Dump loaded bundle names", (Action)DebugTools.DumpLoadedBundleNames);
			PaginatedMenuScreenBuilder val3 = new PaginatedMenuScreenBuilder("Scene hierarchy tools", 8);
			MenuElement val4 = default(MenuElement);
			if (val2.GenerateMenuElement((ConfigEntryBase)(object)PreferCompressed, ref val4))
			{
				val3.Add(val4);
			}
			val3.AddButton("Dump current scene hierarchy", delegate
			{
				//IL_0001: Unknown result type (might be due to invalid IL or missing references)
				//IL_0006: Unknown result type (might be due to invalid IL or missing references)
				Scene activeScene = SceneManager.GetActiveScene();
				DumpGameObjectPaths(((Scene)(ref activeScene)).name);
			});
			val3.AddButton("Dump loaded scene hierarchies", delegate
			{
				//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)
				for (int i = 0; i < SceneManager.sceneCount; i++)
				{
					Scene sceneAt = SceneManager.GetSceneAt(i);
					DumpGameObjectPaths(((Scene)(ref sceneAt)).name);
				}
			});
			PaginatedMenuScreen subpage = val3.Build();
			<AssetHelperMenuPlugin>F79F8426CE8491B0C3CE5DE195955AE1237DCD1ED9C96F2906064935F55BDB485__ModMenuExtensions.AddSubpageButton(val, (AbstractMenuScreen)(object)subpage);
			return (AbstractMenuScreen)(object)val.Build();
		}

		private void DumpGameObjectPaths(string sceneName)
		{
			try
			{
				((BaseUnityPlugin)this).Logger.LogInfo((object)("Dumping scene hierarchy for scene " + sceneName));
				DebugTools.DumpGameObjectPaths(sceneName, PreferCompressed.Value);
			}
			catch (Exception ex)
			{
				((BaseUnityPlugin)this).Logger.LogError((object)("Error dumping paths for scene " + sceneName + "\n" + ex));
			}
		}
	}
	internal static class <AssetHelperMenuPlugin>F79F8426CE8491B0C3CE5DE195955AE1237DCD1ED9C96F2906064935F55BDB485__ModMenuExtensions
	{
		public static TextButton AddButton(this PaginatedMenuScreenBuilder self, string label, Action onClick)
		{
			//IL_0001: Unknown result type (might be due to invalid IL or missing references)
			//IL_0007: Expected O, but got Unknown
			TextButton val = new TextButton(label);
			val.OnSubmit = (Action)Delegate.Combine(val.OnSubmit, onClick);
			self.Add((MenuElement)(object)val);
			return val;
		}

		public static TextButton AddSubpageButton(this PaginatedMenuScreenBuilder self, AbstractMenuScreen subpage, string? label = null)
		{
			AbstractMenuScreen subpage2 = subpage;
			if (label == null)
			{
				label = subpage2.TitleText.text;
			}
			return self.AddButton(label, delegate
			{
				MenuScreenNavigation.Show(subpage2, (HistoryMode)0);
			});
		}
	}
}