Decompiled source of BetterFabber v1.0.0

BetterFabber.dll

Decompiled 2 months 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 BepInEx.Logging;
using CG.Objects;
using Gameplay.Factory;
using HarmonyLib;
using Microsoft.CodeAnalysis;
using Photon.Pun;
using UI.Fabricator;
using UnityEngine;
using VoidManager;
using VoidManager.CustomGUI;
using VoidManager.MPModChecks;

[assembly: CompilationRelaxations(8)]
[assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)]
[assembly: Debuggable(DebuggableAttribute.DebuggingModes.Default | DebuggableAttribute.DebuggingModes.DisableOptimizations | DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints | DebuggableAttribute.DebuggingModes.EnableEditAndContinue)]
[assembly: TargetFramework(".NETFramework,Version=v4.7.2", FrameworkDisplayName = ".NET Framework 4.7.2")]
[assembly: AssemblyCompany("BetterFabber")]
[assembly: AssemblyConfiguration("Debug")]
[assembly: AssemblyDescription("Template")]
[assembly: AssemblyFileVersion("1.0.0.0")]
[assembly: AssemblyInformationalVersion("1.0.0")]
[assembly: AssemblyProduct("BetterFabber")]
[assembly: AssemblyTitle("BetterFabber")]
[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 BetterFabber
{
	[HarmonyPatch(typeof(FabricatorData), "TryInsert")]
	internal class AutoRecyclePatch
	{
		[HarmonyPostfix]
		private static void OnChanged(FabricatorData __instance, AbstractCarryableObject x)
		{
			if (BepinPlugin.Bindings.AutoRecycleAlloy.Value && PhotonNetwork.IsMasterClient && ((Object)x).name.Contains("Item_Alloy"))
			{
				__instance.RecycleNow(__instance.SocketItem);
			}
		}
	}
	[BepInPlugin("BetterFabber", "BetterFabber", "1.0.0")]
	[BepInProcess("Void Crew.exe")]
	[BepInDependency(/*Could not decode attribute arguments.*/)]
	public class BepinPlugin : BaseUnityPlugin
	{
		internal class Bindings
		{
			internal static ConfigEntry<float> FabRecycleSpeedMultiplier;

			internal static ConfigEntry<float> FabPrintSpeedMultiplier;

			internal static ConfigEntry<bool> AutoRecycleAlloy;
		}

		internal static ManualLogSource Log;

		private void Awake()
		{
			Log = ((BaseUnityPlugin)this).Logger;
			Bindings.FabRecycleSpeedMultiplier = ((BaseUnityPlugin)this).Config.Bind<float>("General", "FabRecycleSpeedMultiplier", 10f, (ConfigDescription)null);
			Bindings.FabPrintSpeedMultiplier = ((BaseUnityPlugin)this).Config.Bind<float>("General", "FabPrintSpeedMultiplier", 10f, (ConfigDescription)null);
			Bindings.AutoRecycleAlloy = ((BaseUnityPlugin)this).Config.Bind<bool>("General", "AutoRecycleAlloy", true, (ConfigDescription)null);
			Harmony.CreateAndPatchAll(Assembly.GetExecutingAssembly(), "BetterFabber");
			((BaseUnityPlugin)this).Logger.LogInfo((object)"Plugin BetterFabber is loaded!");
		}
	}
	internal class BFGUI : ModSettingsMenu
	{
		private string FabRecycleSpeed;

		private string FabPrintSpeed;

		private string errorMessage;

		public override void Draw()
		{
			//IL_0197: Unknown result type (might be due to invalid IL or missing references)
			//IL_01ba: Unknown result type (might be due to invalid IL or missing references)
			GUILayout.Label("Better Fabber menu", Array.Empty<GUILayoutOption>());
			GUILayout.Label("Fabricator Recycle Speed", Array.Empty<GUILayoutOption>());
			FabRecycleSpeed = GUILayout.TextField(FabRecycleSpeed, Array.Empty<GUILayoutOption>());
			GUILayout.Label("Fabricator Print Speed", Array.Empty<GUILayoutOption>());
			FabPrintSpeed = GUILayout.TextField(FabPrintSpeed, Array.Empty<GUILayoutOption>());
			if (GUILayout.Button("Auto Recycle Alloy: " + (BepinPlugin.Bindings.AutoRecycleAlloy.Value ? "Enabled" : "Disabled"), Array.Empty<GUILayoutOption>()))
			{
				BepinPlugin.Bindings.AutoRecycleAlloy.Value = !BepinPlugin.Bindings.AutoRecycleAlloy.Value;
			}
			if (float.TryParse(FabRecycleSpeed, out var result))
			{
				if (result < 0.25f)
				{
					errorMessage = "Recycle Speed cannot go below 0.25x";
				}
				else if (BepinPlugin.Bindings.FabRecycleSpeedMultiplier.Value != result)
				{
					BepinPlugin.Log.LogInfo((object)("Updating Fab Recycle Speed to " + result));
					BepinPlugin.Bindings.FabRecycleSpeedMultiplier.Value = result;
				}
			}
			if (float.TryParse(FabPrintSpeed, out result))
			{
				if (result < 0.25f)
				{
					errorMessage = "Print Speed cannot go below 0.25x";
				}
				else if (BepinPlugin.Bindings.FabPrintSpeedMultiplier.Value != result)
				{
					BepinPlugin.Log.LogInfo((object)("Updating Fab Print Speed to " + result));
					BepinPlugin.Bindings.FabPrintSpeedMultiplier.Value = result;
				}
			}
			if (errorMessage != null)
			{
				GUI.color = Color.red;
				GUILayout.Label(errorMessage, Array.Empty<GUILayoutOption>());
				errorMessage = null;
				GUI.color = Color.white;
			}
		}

		public override string Name()
		{
			return "Better Fabber";
		}

		public override void OnOpen()
		{
			if (FabRecycleSpeed == null)
			{
				FabRecycleSpeed = BepinPlugin.Bindings.FabRecycleSpeedMultiplier.Value.ToString();
			}
			if (FabPrintSpeed == null)
			{
				FabPrintSpeed = BepinPlugin.Bindings.FabPrintSpeedMultiplier.Value.ToString();
			}
		}
	}
	[HarmonyPatch(typeof(CarryableFactoryUtils), "GetRecycleAnimationDuration")]
	internal class FabricatorRecycleSpeedPatch
	{
		[HarmonyPostfix]
		private static void Patch(ref float __result)
		{
			__result /= BepinPlugin.Bindings.FabRecycleSpeedMultiplier.Value;
		}
	}
	[HarmonyPatch(typeof(CarryableFactoryUtils), "GetCopierAnimationDuration")]
	internal class FabricatorPrintSpeedPatch
	{
		[HarmonyPostfix]
		private static void Patch(ref float __result)
		{
			__result /= BepinPlugin.Bindings.FabPrintSpeedMultiplier.Value;
		}
	}
	public class VoidManagerPlugin : VoidPlugin
	{
		public override MultiplayerType MPType => (MultiplayerType)3;

		public override string Author => "Dragon";

		public override string Description => "Increases fabricator recycle and print speed. Auto-recycles alloy.";
	}
	public static class MyPluginInfo
	{
		public const string PLUGIN_GUID = "BetterFabber";

		public const string PLUGIN_NAME = "BetterFabber";

		public const string PLUGIN_VERSION = "1.0.0";
	}
}