Decompiled source of Item Lights And Effects Fix v1.1.1

BepInEx/plugins/Item_Lights_And_Effects_Fix/ItemLightsAndEffectsFix.dll

Decompiled 3 weeks ago
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.Versioning;
using System.Security;
using System.Security.Permissions;
using BepInEx;
using BepInEx.Configuration;
using HarmonyLib;
using Microsoft.CodeAnalysis;
using UnityEngine;
using UnityEngine.VFX;

[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("ItemLightsAndEffectsFix")]
[assembly: AssemblyConfiguration("Debug")]
[assembly: AssemblyFileVersion("1.0.0.0")]
[assembly: AssemblyInformationalVersion("1.0.0")]
[assembly: AssemblyProduct("ItemLightsAndEffectsFix")]
[assembly: AssemblyTitle("ItemLightsAndEffectsFix")]
[assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)]
[assembly: AssemblyVersion("1.0.0.0")]
[module: UnverifiableCode]
[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 ItemLightsAndEffectsFix
{
	public class Config
	{
		public ConfigFile configFile;

		public string VFX_WHITELISTED { get; set; }

		public string LIGHT_WHITELISTED { get; set; }

		public string VFX_BLACKLISTED { get; set; }

		public string LIGHT_BLACKLISTED { get; set; }

		public Config(ConfigFile cfg)
		{
			configFile = cfg;
		}

		private T ConfigEntry<T>(string section, string key, T defaultVal, string description)
		{
			return configFile.Bind<T>(section, key, defaultVal, description).Value;
		}

		public void BindConfig()
		{
			VFX_WHITELISTED = ConfigEntry("Whitelists", "VFX Whitelist", "", "The mod will always change the item's VFX state if it is present in this list \nExemple: itemName1,itemName2,itemName3,");
			LIGHT_WHITELISTED = ConfigEntry("Whitelists", "Light Whitelist", "", "The mod will always change the item's Light state if it is present in this list \nExemple: itemName1,itemName2,itemName3,");
			VFX_BLACKLISTED = ConfigEntry("Blacklists", "VFX Blacklist", "", "The mod will not change the item's VFX state if it is present in this list \nExemple: itemName1,itemName2,itemName3,");
			LIGHT_BLACKLISTED = ConfigEntry("Blacklists", "Light Blacklist", "", "The mod will not change the item's Light state if it is present in this list \nExemple: itemName1,itemName2,itemName3,");
		}
	}
	[HarmonyPatch(typeof(GrabbableObject))]
	internal class EnableItemMeshesPatch_Patch
	{
		[HarmonyPostfix]
		[HarmonyPatch("EnableItemMeshes")]
		private static void EnableItemMeshesPatch(GrabbableObject __instance, ref bool enable)
		{
			VisualEffect[] componentsInChildren = ((Component)__instance).gameObject.GetComponentsInChildren<VisualEffect>();
			Light[] componentsInChildren2 = ((Component)__instance).gameObject.GetComponentsInChildren<Light>();
			string item = __instance.itemProperties?.itemName ?? "Item_Name_Not_Found";
			string item2 = ((Component)__instance).GetComponentInChildren<ScanNodeProperties>()?.headerText ?? "Item_Name_Not_Found";
			if (!Plugin.VFX_blacklist.Contains(item) && !Plugin.VFX_blacklist.Contains(item2) && (!__instance.itemProperties.requiresBattery || Plugin.VFX_whitelist.Contains(item) || Plugin.VFX_whitelist.Contains(item2)))
			{
				for (int i = 0; i < componentsInChildren.Length; i++)
				{
					if (!((Component)componentsInChildren[i]).gameObject.CompareTag("DoNotSet") && !((Component)componentsInChildren[i]).gameObject.CompareTag("InteractTrigger"))
					{
						((Behaviour)componentsInChildren[i]).enabled = enable;
					}
				}
			}
			if (Plugin.Light_blacklist.Contains(item) || Plugin.Light_blacklist.Contains(item2) || (__instance.itemProperties.requiresBattery && !Plugin.Light_whitelist.Contains(item) && !Plugin.Light_whitelist.Contains(item2)))
			{
				return;
			}
			for (int j = 0; j < componentsInChildren2.Length; j++)
			{
				if (!((Component)componentsInChildren2[j]).gameObject.CompareTag("DoNotSet") && !((Component)componentsInChildren2[j]).gameObject.CompareTag("InteractTrigger"))
				{
					((Behaviour)componentsInChildren2[j]).enabled = enable;
				}
			}
		}
	}
	[BepInPlugin("Entity378.ItemLightsAndEffectsFix", "ItemLightsAndEffectsFix", "1.1.1")]
	public class Plugin : BaseUnityPlugin
	{
		private Harmony harmony = new Harmony("Entity378.ItemLightsAndEffectsFix");

		private const string GUID = "Entity378.ItemLightsAndEffectsFix";

		private const string NAME = "ItemLightsAndEffectsFix";

		private const string VERSION = "1.1.1";

		public static List<string> VFX_whitelist;

		public static List<string> Light_whitelist;

		public static List<string> VFX_blacklist;

		public static List<string> Light_blacklist;

		public static Config cfg { get; private set; }

		private void Awake()
		{
			cfg = new Config(((BaseUnityPlugin)this).Config);
			cfg.BindConfig();
			VFX_whitelist = cfg.VFX_WHITELISTED.Split(',').ToList();
			Light_whitelist = cfg.LIGHT_WHITELISTED.Split(',').ToList();
			VFX_blacklist = cfg.VFX_BLACKLISTED.Split(',').ToList();
			Light_blacklist = cfg.LIGHT_BLACKLISTED.Split(',').ToList();
			harmony.PatchAll();
			((BaseUnityPlugin)this).Logger.LogInfo((object)"ItemLightsAndEffectsFix: Plugin Loaded!");
		}
	}
	public static class PluginInfo
	{
		public const string PLUGIN_GUID = "ItemLightsAndEffectsFix";

		public const string PLUGIN_NAME = "ItemLightsAndEffectsFix";

		public const string PLUGIN_VERSION = "1.0.0";
	}
}