Decompiled source of SignalTranslatorDisplay v1.0.3

SignalTranslatorDisplay.dll

Decompiled 2 months ago
using System;
using System.Collections;
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 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("SignalTranslatorDisplay")]
[assembly: AssemblyConfiguration("Release")]
[assembly: AssemblyFileVersion("1.0.0.0")]
[assembly: AssemblyInformationalVersion("1.0.0+cb7ed95b997b24faddae44c6278e105b56cec200")]
[assembly: AssemblyProduct("SignalTranslatorDisplay")]
[assembly: AssemblyTitle("SignalTranslatorDisplay")]
[assembly: SecurityPermission(SecurityAction.RequestMinimum, SkipVerification = true)]
[assembly: AssemblyVersion("1.0.0.0")]
[module: UnverifiableCode]
namespace SignalTranslatorDisplay;

[BepInPlugin("Dev1A3.SignalTranslatorDisplay", "SignalTranslatorDisplay", "1.0.1")]
internal class PluginLoader : BaseUnityPlugin
{
	private const string modGUID = "Dev1A3.SignalTranslatorDisplay";

	private readonly Harmony harmony = new Harmony("Dev1A3.SignalTranslatorDisplay");

	private const string modVersion = "1.0.1";

	private static bool initialized;

	public static PluginLoader Instance { get; private set; }

	private void Awake()
	{
		if (!initialized)
		{
			initialized = true;
			Instance = this;
			Assembly executingAssembly = Assembly.GetExecutingAssembly();
			harmony.PatchAll(executingAssembly);
			SignalTranslatorConfig.InitConfig();
		}
	}

	public void BindConfig<T>(ref ConfigEntry<T> config, string section, string key, T defaultValue, string description = "")
	{
		config = ((BaseUnityPlugin)this).Config.Bind<T>(section, key, defaultValue, description);
	}
}
internal class SignalTranslatorConfig
{
	public static ConfigEntry<bool> OriginalEnabled;

	public static ConfigEntry<bool> ChatEnabled;

	public static ConfigEntry<bool> TipEnabled;

	public static void InitConfig()
	{
		PluginLoader.Instance.BindConfig(ref OriginalEnabled, "Settings", "Default Popup", defaultValue: true, "Should the signal transmission be shown as the default popup?");
		PluginLoader.Instance.BindConfig(ref ChatEnabled, "Settings", "Chat Message", defaultValue: true, "Should the signal transmission be shown as a chat message?");
		PluginLoader.Instance.BindConfig(ref TipEnabled, "Settings", "Small Popup", defaultValue: false, "Should the signal transmission be shown as a small popup?");
	}
}
[HarmonyPatch]
internal class Patch
{
	private static MethodInfo AddChatMessage = AccessTools.Method(typeof(HUDManager), "AddChatMessage", (Type[])null, (Type[])null);

	[HarmonyPatch(typeof(HUDManager), "DisplaySignalTranslatorMessage")]
	[HarmonyPrefix]
	internal static bool DisplaySignalTranslatorMessage(ref IEnumerator __result, HUDManager __instance, string signalMessage, int seed, SignalTranslator signalTranslator)
	{
		if ((Object)(object)signalTranslator != (Object)null)
		{
			__result = DisplayMessageCoroutine(__instance, signalMessage, seed, signalTranslator);
		}
		return false;
	}

	private static IEnumerator DisplayMessageCoroutine(HUDManager __instance, string signalMessage, int seed, SignalTranslator signalTranslator)
	{
		Random signalMessageRandom = new Random(seed + StartOfRound.Instance.randomMapSeed);
		if (SignalTranslatorConfig.OriginalEnabled.Value)
		{
			__instance.signalTranslatorAnimator.SetBool("transmitting", true);
		}
		signalTranslator.localAudio.Play();
		__instance.UIAudio.PlayOneShot(signalTranslator.startTransmissionSFX, 1f);
		((TMP_Text)__instance.signalTranslatorText).text = "";
		yield return (object)new WaitForSeconds(1.21f);
		if ((Object)(object)signalTranslator != (Object)null)
		{
			string text = "Receiving Signal";
			if (SignalTranslatorConfig.ChatEnabled.Value)
			{
				AddChatMessage?.Invoke(__instance, new object[2] { signalMessage, text });
			}
			if (SignalTranslatorConfig.TipEnabled.Value)
			{
				((TMP_Text)__instance.tipsPanelHeader).text = text;
				((TMP_Text)__instance.tipsPanelBody).text = signalMessage;
				__instance.tipsPanelAnimator.SetTrigger("TriggerHint");
			}
		}
		if (SignalTranslatorConfig.OriginalEnabled.Value)
		{
			for (int i = 0; i < signalMessage.Length; i++)
			{
				if ((Object)(object)signalTranslator == (Object)null)
				{
					break;
				}
				if (!((Component)signalTranslator).gameObject.activeSelf)
				{
					break;
				}
				__instance.UIAudio.PlayOneShot(signalTranslator.typeTextClips[Random.Range(0, signalTranslator.typeTextClips.Length)]);
				TextMeshProUGUI signalTranslatorText = __instance.signalTranslatorText;
				((TMP_Text)signalTranslatorText).text = ((TMP_Text)signalTranslatorText).text + signalMessage[i];
				float num = Mathf.Min((float)signalMessageRandom.Next(-1, 4) * 0.5f, 0f);
				yield return (object)new WaitForSeconds(0.7f + num);
			}
		}
		if ((Object)(object)signalTranslator != (Object)null)
		{
			__instance.UIAudio.PlayOneShot(signalTranslator.finishTypingSFX);
			signalTranslator.localAudio.Stop();
		}
		yield return (object)new WaitForSeconds(0.5f);
		__instance.signalTranslatorAnimator.SetBool("transmitting", false);
	}
}
public static class MyPluginInfo
{
	public const string PLUGIN_GUID = "SignalTranslatorDisplay";

	public const string PLUGIN_NAME = "SignalTranslatorDisplay";

	public const string PLUGIN_VERSION = "1.0.0";
}