Decompiled source of DoubleTimeMod v1.1.0

DoubleTimeMod.dll

Decompiled 5 hours ago
using System;
using System.Diagnostics;
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.Versioning;
using Aggro.Core.Networking;
using BepInEx;
using BepInEx.Configuration;
using HarmonyLib;
using TMPro;
using UnityEngine;

[assembly: CompilationRelaxations(8)]
[assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)]
[assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)]
[assembly: TargetFramework(".NETStandard,Version=v2.1", FrameworkDisplayName = ".NET Standard 2.1")]
[assembly: AssemblyCompany("DoubleTimeMod")]
[assembly: AssemblyConfiguration("Release")]
[assembly: AssemblyFileVersion("1.0.0.0")]
[assembly: AssemblyInformationalVersion("1.0.0")]
[assembly: AssemblyProduct("DoubleTimeMod")]
[assembly: AssemblyTitle("DoubleTimeMod")]
[assembly: AssemblyVersion("1.0.0.0")]
namespace DoubleTimeMod;

[BepInPlugin("bilibili.hualidexiaoningmenga.supermod", "哔哩哔哩-华丽的小柠檬啊_超级整合包MOD", "1.1.0")]
public class Plugin : BaseUnityPlugin
{
	public static ConfigEntry<float> TimeMultiplierConfig;

	public static ConfigEntry<bool> EnableCountdownNumbersConfig;

	private void Awake()
	{
		TimeMultiplierConfig = ((BaseUnityPlugin)this).Config.Bind<float>("时间设置", "TimeMultiplier", 2f, "卡车等待时间和准备时间的放大倍数 (默认2倍)");
		EnableCountdownNumbersConfig = ((BaseUnityPlugin)this).Config.Bind<bool>("UI设置", "EnableCountdownNumbers", true, "是否在游戏中显示数字倒计时 (true为开启,false为关闭)");
		((BaseUnityPlugin)this).Logger.LogInfo((object)"[哔哩哔哩-华丽的小柠檬啊_超级整合包MOD] 插件已成功加载!");
		((BaseUnityPlugin)this).Logger.LogInfo((object)$"读取配置:时间倍率={TimeMultiplierConfig.Value}, UI倒计时={EnableCountdownNumbersConfig.Value}");
		Harmony.CreateAndPatchAll(typeof(ShiftManagerPatch), (string)null);
		Harmony.CreateAndPatchAll(typeof(TruckTimerPatch), (string)null);
		((BaseUnityPlugin)this).Logger.LogInfo((object)"[哔哩哔哩-华丽的小柠檬啊_超级整合包MOD] 所有功能注入完毕。");
	}

	private void OnGUI()
	{
		//IL_0028: Unknown result type (might be due to invalid IL or missing references)
		//IL_002e: Invalid comparison between Unknown and I4
		//IL_003a: Unknown result type (might be due to invalid IL or missing references)
		//IL_0040: Expected O, but got Unknown
		//IL_004e: Unknown result type (might be due to invalid IL or missing references)
		//IL_008f: Unknown result type (might be due to invalid IL or missing references)
		//IL_0096: Expected O, but got Unknown
		//IL_009d: Unknown result type (might be due to invalid IL or missing references)
		//IL_00c9: Unknown result type (might be due to invalid IL or missing references)
		//IL_0107: Unknown result type (might be due to invalid IL or missing references)
		//IL_0145: Unknown result type (might be due to invalid IL or missing references)
		//IL_0183: Unknown result type (might be due to invalid IL or missing references)
		//IL_019f: Unknown result type (might be due to invalid IL or missing references)
		try
		{
			if (EnableCountdownNumbersConfig.Value && (Object)(object)NetworkAggroManagerBase<ShiftManager>.instance != (Object)null)
			{
				ShiftManager instance = NetworkAggroManagerBase<ShiftManager>.instance;
				if ((int)instance.GetShiftPhase() == 2)
				{
					int secondsRemainingInt = instance.secondsRemainingInt;
					GUIStyle val = new GUIStyle();
					val.fontSize = 40;
					val.normal.textColor = Color.yellow;
					val.alignment = (TextAnchor)1;
					val.fontStyle = (FontStyle)1;
					Rect val2 = default(Rect);
					((Rect)(ref val2))..ctor((float)Screen.width / 2f - 100f, 80f, 200f, 100f);
					GUIStyle val3 = new GUIStyle(val);
					val3.normal.textColor = Color.black;
					GUI.Label(new Rect(((Rect)(ref val2)).x - 2f, ((Rect)(ref val2)).y, ((Rect)(ref val2)).width, ((Rect)(ref val2)).height), $"准备时间: {secondsRemainingInt}s", val3);
					GUI.Label(new Rect(((Rect)(ref val2)).x + 2f, ((Rect)(ref val2)).y, ((Rect)(ref val2)).width, ((Rect)(ref val2)).height), $"准备时间: {secondsRemainingInt}s", val3);
					GUI.Label(new Rect(((Rect)(ref val2)).x, ((Rect)(ref val2)).y - 2f, ((Rect)(ref val2)).width, ((Rect)(ref val2)).height), $"准备时间: {secondsRemainingInt}s", val3);
					GUI.Label(new Rect(((Rect)(ref val2)).x, ((Rect)(ref val2)).y + 2f, ((Rect)(ref val2)).width, ((Rect)(ref val2)).height), $"准备时间: {secondsRemainingInt}s", val3);
					GUI.Label(val2, $"准备时间: {secondsRemainingInt}s", val);
				}
			}
		}
		catch (Exception)
		{
		}
	}
}
public class ShiftManagerPatch
{
	[HarmonyPatch(typeof(ShiftManager), "ServerGetStrikeOutDuration")]
	[HarmonyPostfix]
	public static void DoubleStrikeOutDuration(ref float __result)
	{
		__result *= Plugin.TimeMultiplierConfig.Value;
	}

	[HarmonyPatch(typeof(ShiftManager), "OnEntityCreated")]
	[HarmonyPostfix]
	public static void DoubleOrganizationalDuration(ShiftManager __instance)
	{
		__instance.organizationalDuration *= Plugin.TimeMultiplierConfig.Value;
	}
}
public class TruckTimerPatch
{
	[HarmonyPatch(typeof(TruckTimerFloaterUI), "OnUpdatePresentationEarly")]
	[HarmonyPostfix]
	public static void AddNumbersToTruckTimer(TruckTimerFloaterUI __instance)
	{
		if (Plugin.EnableCountdownNumbersConfig.Value && (Object)(object)__instance.bayNumberText != (Object)null && (Object)(object)__instance.assignedOutboundBay != (Object)null)
		{
			int secondsRemainingInt = __instance.assignedOutboundBay.secondsRemainingInt;
			((TMP_Text)__instance.bayNumberText).enableAutoSizing = true;
			((TMP_Text)__instance.bayNumberText).fontSizeMin = 10f;
			((TMP_Text)__instance.bayNumberText).fontSizeMax = 60f;
			((TMP_Text)__instance.bayNumberText).text = $"{__instance.assignedOutboundBay.bayID}\n{secondsRemainingInt}";
		}
	}
}