Decompiled source of InstantDeliveries v1.9.6

InstantDeliveryMod.dll

Decompiled a week ago
using System;
using System.Diagnostics;
using System.IO;
using System.Linq;
using System.Reflection;
using System.Resources;
using System.Runtime.CompilerServices;
using System.Runtime.Versioning;
using System.Security;
using System.Security.Permissions;
using HarmonyLib;
using Il2CppFishNet.Connection;
using Il2CppScheduleOne.Delivery;
using InstantDeliveryMod;
using MelonLoader;
using MelonLoader.Utils;
using Microsoft.CodeAnalysis;

[assembly: CompilationRelaxations(8)]
[assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)]
[assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)]
[assembly: MelonInfo(typeof(InstantDelivery), "InstantDeliveryMod", "1.9.6", "wall-E", null)]
[assembly: MelonGame("TVGS", "Schedule I")]
[assembly: TargetFramework(".NETCoreApp,Version=v6.0", FrameworkDisplayName = ".NET 6.0")]
[assembly: AssemblyCompany("InstantDeliveryMod")]
[assembly: AssemblyConfiguration("Release")]
[assembly: AssemblyFileVersion("1.0.0.0")]
[assembly: AssemblyInformationalVersion("1.0.0")]
[assembly: AssemblyProduct("InstantDeliveryMod")]
[assembly: AssemblyTitle("InstantDeliveryMod")]
[assembly: NeutralResourcesLanguage("en-US")]
[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 InstantDeliveryMod
{
	public class InstantDelivery : MelonMod
	{
		private static string configPath = Path.Combine(MelonEnvironment.UserDataDirectory, "InstantDeliveryMod.cfg");

		public static bool instantVanArrivalEnabled = true;

		public static bool immersiveDeliveries = false;

		public override void OnInitializeMelon()
		{
			if (MelonTypeBase<MelonMod>.RegisteredMelons.Any((MelonMod mod) => ((MelonBase)mod).Info.Name == "IncreasedStackLimit"))
			{
				MelonLogger.Error("Instant Deliveries is incompatible with the [IncreasedStackLimit] for now... issues may occur while using both mods!");
			}
			MelonLogger.Msg("InstantDeliveryMod Loaded! :P");
			LoadConfig();
		}

		private void LoadConfig()
		{
			if (File.Exists(configPath))
			{
				string[] array = File.ReadAllLines(configPath);
				foreach (string text in array)
				{
					if (text.StartsWith("InstantVanArrival="))
					{
						instantVanArrivalEnabled = !bool.TryParse(text.Split('=')[1].Trim(), out var result) || result;
					}
					else if (text.StartsWith("ImmersiveDeliveries="))
					{
						immersiveDeliveries = bool.TryParse(text.Split('=')[1].Trim(), out var result2) && result2;
					}
				}
			}
			else
			{
				SaveConfig();
			}
			MelonLogger.Msg($"Config Loaded - Instant Van Arrival: {instantVanArrivalEnabled}, Immersive Deliveries: {immersiveDeliveries}");
		}

		private static void SaveConfig()
		{
			File.WriteAllText(configPath, $"InstantVanArrival={instantVanArrivalEnabled}\nImmersiveDeliveries={immersiveDeliveries}");
			MelonLogger.Msg("Config file created.");
		}
	}
	[HarmonyPatch(typeof(DeliveryManager), "ReceiveDelivery")]
	public class Patch_ReceiveDelivery
	{
		private static void Prefix(NetworkConnection conn, ref DeliveryInstance delivery)
		{
			if (delivery != null)
			{
				if (InstantDelivery.immersiveDeliveries)
				{
					delivery.TimeUntilArrival = GetRandomDeliveryTime();
					MelonLogger.Msg($"Immersive delivery time set to {delivery.TimeUntilArrival} seconds for delivery ID: {delivery.DeliveryID}");
				}
				else if (InstantDelivery.instantVanArrivalEnabled)
				{
					delivery.TimeUntilArrival = 1;
					MelonLogger.Msg("Instant delivery set to 1 second for delivery ID: " + delivery.DeliveryID);
				}
			}
		}

		private static int GetRandomDeliveryTime()
		{
			return new Random().Next(30, 121);
		}
	}
}