Decompiled source of fiufkis Scrap Beta v2.0.2

fiufkiscrap.dll

Decompiled 2 months ago
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.Versioning;
using BepInEx;
using BepInEx.Configuration;
using BepInEx.Logging;
using LethalLevelLoader;
using Microsoft.CodeAnalysis;
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("fiufkiscrap")]
[assembly: AssemblyConfiguration("Debug")]
[assembly: AssemblyFileVersion("1.0.0.0")]
[assembly: AssemblyInformationalVersion("1.0.0+16b8c0790801f7ecb4d36c1dfbbb59e050c95de9")]
[assembly: AssemblyProduct("fiufkiscrap")]
[assembly: AssemblyTitle("fiufkiscrap")]
[assembly: AssemblyVersion("1.0.0.0")]
[module: RefSafetyRules(11)]
namespace Microsoft.CodeAnalysis
{
	[CompilerGenerated]
	[Microsoft.CodeAnalysis.Embedded]
	internal sealed class EmbeddedAttribute : Attribute
	{
	}
}
namespace System.Runtime.CompilerServices
{
	[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 fiufkiscrap
{
	public class fiufkiscrapconfig
	{
		private static readonly Dictionary<string, ConfigEntry<bool>> lookup = new Dictionary<string, ConfigEntry<bool>>(StringComparer.OrdinalIgnoreCase);

		public static ConfigEntry<bool> BookConfig { get; private set; }

		public static ConfigEntry<bool> BottleConfig { get; private set; }

		public static ConfigEntry<bool> CandleConfig { get; private set; }

		public static ConfigEntry<bool> CardboardBoxConfig { get; private set; }

		public static ConfigEntry<bool> CarTireConfig { get; private set; }

		public static ConfigEntry<bool> CartridgeConfig { get; private set; }

		public static ConfigEntry<bool> DeskLampConfig { get; private set; }

		public static ConfigEntry<bool> KeyboardConfig { get; private set; }

		public static ConfigEntry<bool> MagnetConfig { get; private set; }

		public static ConfigEntry<bool> MonitorConfig { get; private set; }

		public static ConfigEntry<bool> PillowConfig { get; private set; }

		public static ConfigEntry<bool> PottedPlantConfig { get; private set; }

		public static ConfigEntry<bool> VentCoverConfig { get; private set; }

		public fiufkiscrapconfig(ConfigFile configFile)
		{
			BookConfig = configFile.Bind<bool>("House Objects", "Spawn Book", true, (ConfigDescription)null);
			BottleConfig = configFile.Bind<bool>("House Objects", "Spawn Bottle", true, (ConfigDescription)null);
			CandleConfig = configFile.Bind<bool>("House Objects", "Spawn Candle", true, (ConfigDescription)null);
			CardboardBoxConfig = configFile.Bind<bool>("House Objects", "Spawn Cardboard Box", true, (ConfigDescription)null);
			CarTireConfig = configFile.Bind<bool>("House Objects", "Spawn Car Tire", true, (ConfigDescription)null);
			CartridgeConfig = configFile.Bind<bool>("House Objects", "Spawn Cartridge", true, (ConfigDescription)null);
			DeskLampConfig = configFile.Bind<bool>("House Objects", "Spawn Desk Lamp", true, (ConfigDescription)null);
			KeyboardConfig = configFile.Bind<bool>("House Objects", "Spawn Keyboard", true, (ConfigDescription)null);
			MagnetConfig = configFile.Bind<bool>("House Objects", "Spawn Magnet", true, (ConfigDescription)null);
			MonitorConfig = configFile.Bind<bool>("House Objects", "Spawn Monitor", true, (ConfigDescription)null);
			PillowConfig = configFile.Bind<bool>("House Objects", "Spawn Pillow", true, (ConfigDescription)null);
			PottedPlantConfig = configFile.Bind<bool>("House Objects", "Spawn Potted Plant", true, (ConfigDescription)null);
			VentCoverConfig = configFile.Bind<bool>("House Objects", "Spawn Vent Cover", true, (ConfigDescription)null);
			lookup["Book"] = BookConfig;
			lookup["Bottle"] = BottleConfig;
			lookup["Candle"] = CandleConfig;
			lookup["Cardboard Box"] = CardboardBoxConfig;
			lookup["Car Tire"] = CarTireConfig;
			lookup["Cartridge"] = CartridgeConfig;
			lookup["Desk Lamp"] = DeskLampConfig;
			lookup["Keyboard"] = KeyboardConfig;
			lookup["Magnet"] = MagnetConfig;
			lookup["Monitor"] = MonitorConfig;
			lookup["Pillow"] = PillowConfig;
			lookup["Potted Plant"] = PottedPlantConfig;
			lookup["Vent Cover"] = VentCoverConfig;
			ClearUnusedEntries(configFile);
			Plugin.Logger.LogInfo((object)"fiufki's Scrap config is loaded.");
		}

		public static bool TryGet(string itemName, out bool value)
		{
			if (lookup.TryGetValue(itemName, out var value2))
			{
				value = value2.Value;
				return true;
			}
			value = true;
			return false;
		}

		private void ClearUnusedEntries(ConfigFile configFile)
		{
			PropertyInfo property = ((object)configFile).GetType().GetProperty("OrphanedEntries", BindingFlags.Instance | BindingFlags.NonPublic);
			Dictionary<ConfigDefinition, string> dictionary = (Dictionary<ConfigDefinition, string>)property.GetValue(configFile, null);
			dictionary.Clear();
			configFile.Save();
		}
	}
	[BepInPlugin("com.fiufki.fiufkiscrap", "fiufki's Scrap", "2.0.2")]
	[BepInDependency(/*Could not decode attribute arguments.*/)]
	public class Plugin : BaseUnityPlugin
	{
		public const string PluginGUID = "com.fiufki.fiufkiscrap";

		public const string PluginName = "fiufki's Scrap";

		public const string PluginVersion = "2.0.2";

		internal static ManualLogSource Logger;

		public static fiufkiscrapconfig ModConfig { get; private set; }

		private void Awake()
		{
			Logger = ((BaseUnityPlugin)this).Logger;
			ModConfig = new fiufkiscrapconfig(((BaseUnityPlugin)this).Config);
			AssetBundleLoader.AddOnExtendedModLoadedListener((Action<ExtendedMod>)OnExtendedModRegistered, "fiufki", "fiufki's Scrap");
			AssetBundleLoader.AddOnLethalBundleLoadedListener((Action<AssetBundle>)OnLethalBundleLoaded, "fiufkiscrap.lethalbundle");
			InitializeNetworkBehaviours();
			Logger.LogInfo((object)"fiufki's Scrap is loaded.");
		}

		internal static void OnExtendedModRegistered(ExtendedMod extendedmod)
		{
			if ((Object)(object)extendedmod == (Object)null)
			{
				return;
			}
			for (int num = extendedmod.ExtendedItems.Count - 1; num >= 0; num--)
			{
				ExtendedItem val = extendedmod.ExtendedItems[num];
				if (!GetConfigValueForItem(val.Item.itemName))
				{
					extendedmod.ExtendedItems.RemoveAt(num);
					Logger.LogInfo((object)("Disabled spawning of the " + val.Item.itemName + " scrap."));
				}
			}
		}

		internal static void OnLethalBundleLoaded(AssetBundle assetBundle)
		{
			if (!((Object)(object)assetBundle == (Object)null))
			{
			}
		}

		public static bool GetConfigValueForItem(string itemName)
		{
			fiufkiscrapconfig.TryGet(itemName, out var value);
			return value;
		}

		private void InitializeNetworkBehaviours()
		{
			Type[] types = Assembly.GetExecutingAssembly().GetTypes();
			Type[] array = types;
			foreach (Type type in array)
			{
				MethodInfo[] methods = type.GetMethods(BindingFlags.Instance | BindingFlags.Static | BindingFlags.NonPublic);
				MethodInfo[] array2 = methods;
				foreach (MethodInfo methodInfo in array2)
				{
					object[] customAttributes = methodInfo.GetCustomAttributes(typeof(RuntimeInitializeOnLoadMethodAttribute), inherit: false);
					if (customAttributes.Length != 0)
					{
						methodInfo.Invoke(null, null);
					}
				}
			}
		}
	}
}