// Consolidated decompiled source — Azumatt-ClickToDrop v1.0.2 // Generated by Hexium's decompiled-source browser. Best-effort concatenation of every type in this // version's manifest — decompiler output isn't guaranteed to compile as-is. using System; using System.Runtime.CompilerServices; using Microsoft.CodeAnalysis; using System.IO; using System.Reflection; using BepInEx; using BepInEx.Configuration; using BepInEx.Logging; using HarmonyLib; using UnityEngine; using UnityEngine.EventSystems; // ---- ClickToDrop.dll :: Microsoft.CodeAnalysis.EmbeddedAttribute ---- namespace Microsoft.CodeAnalysis { [CompilerGenerated] [Microsoft.CodeAnalysis.Embedded] internal sealed class EmbeddedAttribute : Attribute { } } // ---- ClickToDrop.dll :: System.Runtime.CompilerServices.NullableAttribute ---- 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; } } } // ---- ClickToDrop.dll :: System.Runtime.CompilerServices.NullableContextAttribute ---- namespace System.Runtime.CompilerServices { [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; } } } // ---- ClickToDrop.dll :: ClickToDrop.ClickToDropPlugin ---- namespace ClickToDrop { [BepInPlugin("Azumatt.ClickToDrop", "ClickToDrop", "1.0.2")] public class ClickToDropPlugin : BaseUnityPlugin { internal const string ModName = "ClickToDrop"; internal const string ModVersion = "1.0.2"; internal const string Author = "Azumatt"; private const string ModGUID = "Azumatt.ClickToDrop"; private static string ConfigFileName = "Azumatt.ClickToDrop.cfg"; private static string ConfigFileFullPath; private readonly Harmony _harmony = new Harmony("Azumatt.ClickToDrop"); public static readonly ManualLogSource ClickToDropLogger; private static ConfigEntry modifierKey; public void Awake() { modifierKey = base.Config.Bind("1 - General", "Modifier Key", KeyCode.LeftControl, "The key that must be held down to drop items"); Assembly executingAssembly = Assembly.GetExecutingAssembly(); _harmony.PatchAll(executingAssembly); SetupWatcher(); } private void OnDestroy() { base.Config.Save(); } private void SetupWatcher() { FileSystemWatcher fileSystemWatcher = new FileSystemWatcher(Paths.ConfigPath, ConfigFileName); fileSystemWatcher.Changed += ReadConfigValues; fileSystemWatcher.Created += ReadConfigValues; fileSystemWatcher.Renamed += ReadConfigValues; fileSystemWatcher.IncludeSubdirectories = true; fileSystemWatcher.SynchronizingObject = ThreadingHelper.SynchronizingObject; fileSystemWatcher.EnableRaisingEvents = true; } private void ReadConfigValues(object sender, FileSystemEventArgs e) { if (!File.Exists(ConfigFileFullPath)) { return; } try { ClickToDropLogger.LogDebug("ReadConfigValues called"); base.Config.Reload(); } catch { ClickToDropLogger.LogError("There was an issue loading your " + ConfigFileName); ClickToDropLogger.LogError("Please check your config entries for spelling and format!"); } } static ClickToDropPlugin() { string configPath = Paths.ConfigPath; char directorySeparatorChar = Path.DirectorySeparatorChar; ConfigFileFullPath = configPath + directorySeparatorChar + ConfigFileName; ClickToDropLogger = BepInEx.Logging.Logger.CreateLogSource("ClickToDrop"); modifierKey = null; } } } // ---- ClickToDrop.dll :: ClickToDrop.UIInventoryAwakePatch ---- namespace ClickToDrop { [HarmonyPatch(typeof(UIInventory), "LeftClickOnBackpackOrChestSlot")] internal static class UIInventoryAwakePatch { private static void Prefix(UIInventory __instance, PointerEventData eventData, Item itemInSlot) { if (Input.GetKey(KeyCode.LeftControl) && (bool)(Object)(object)itemInSlot && !(Object)(object)__instance._currentOperatingChestStorage) { __instance.discardZone.transform.Find("BG (3)").GetComponent().TryDropItem(itemInSlot); __instance.Refresh(); } } } }