Decompiled source of LetThereBeLight v1.0.0

NoseFlashlight.dll

Decompiled 4 hours ago
using System;
using System.Diagnostics;
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.Versioning;
using BepInEx;
using BepInEx.Configuration;
using BepInEx.Core.Logging.Interpolation;
using BepInEx.Logging;
using BepInEx.Unity.IL2CPP;
using Il2CppInterop.Runtime.Injection;
using UnityEngine;

[assembly: CompilationRelaxations(8)]
[assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)]
[assembly: Debuggable(/*Could not decode attribute arguments.*/)]
[assembly: TargetFramework(".NETCoreApp,Version=v9.0", FrameworkDisplayName = ".NET 9.0")]
[assembly: AssemblyCompany("NoseFlashlight")]
[assembly: AssemblyConfiguration("Debug")]
[assembly: AssemblyFileVersion("1.0.0.0")]
[assembly: AssemblyInformationalVersion("1.0.0")]
[assembly: AssemblyProduct("NoseFlashlight")]
[assembly: AssemblyTitle("NoseFlashlight")]
[assembly: AssemblyVersion("1.0.0.0")]
[module: RefSafetyRules(11)]
namespace NoseFlashlight;

[BepInPlugin("gogogadgetjustice.bigwalk.noseflashlight", "Flashlight", "1.0.0")]
public class NoseFlashlightPlugin : BasePlugin
{
	public const string GUID = "gogogadgetjustice.bigwalk.noseflashlight";

	public const string PluginName = "Flashlight";

	public const string Version = "1.0.0";

	internal static ManualLogSource Log;

	public static ConfigEntry<KeyCode> ToggleKey;

	public static ConfigEntry<KeyCode> ColorKey;

	public static ConfigEntry<float> Range;

	public static ConfigEntry<float> Intensity;

	public static ConfigEntry<float> SpotAngle;

	public static ConfigEntry<float> OffsetForward;

	public static ConfigEntry<float> OffsetDown;

	public override void Load()
	{
		//IL_011a: Unknown result type (might be due to invalid IL or missing references)
		//IL_0120: Expected O, but got Unknown
		Log = ((BasePlugin)this).Log;
		ToggleKey = ((BasePlugin)this).Config.Bind<KeyCode>("General", "ToggleKey", (KeyCode)102, "Press this key to switch the nose flashlight on or off.");
		ColorKey = ((BasePlugin)this).Config.Bind<KeyCode>("General", "ColorKey", (KeyCode)99, "Press this key to cycle through light colors.");
		Range = ((BasePlugin)this).Config.Bind<float>("General", "Range", 20f, "How far the light reaches, in meters.");
		Intensity = ((BasePlugin)this).Config.Bind<float>("General", "Intensity", 4f, "Brightness of the light.");
		SpotAngle = ((BasePlugin)this).Config.Bind<float>("General", "SpotAngle", 50f, "Cone width of the spotlight, in degrees.");
		OffsetForward = ((BasePlugin)this).Config.Bind<float>("Positioning", "OffsetForward", 0.35f, "How far in front of the camera the light sits, in meters.");
		OffsetDown = ((BasePlugin)this).Config.Bind<float>("Positioning", "OffsetDown", 0.08f, "How far below the camera the light sits, in meters.");
		ClassInjector.RegisterTypeInIl2Cpp<NoseFlashlightController>();
		((BasePlugin)this).AddComponent<NoseFlashlightController>();
		ManualLogSource log = Log;
		bool flag = default(bool);
		BepInExInfoLogInterpolatedStringHandler val = new BepInExInfoLogInterpolatedStringHandler(9, 2, ref flag);
		if (flag)
		{
			((BepInExLogInterpolatedStringHandler)val).AppendFormatted<string>("Flashlight");
			((BepInExLogInterpolatedStringHandler)val).AppendLiteral(" ");
			((BepInExLogInterpolatedStringHandler)val).AppendFormatted<string>("1.0.0");
			((BepInExLogInterpolatedStringHandler)val).AppendLiteral(" loaded.");
		}
		log.LogInfo(val);
	}
}
public class NoseFlashlightController : MonoBehaviour
{
	private Light _noseLight;

	private Camera _attachedCamera;

	private bool _isOn;

	private int _colorIndex = 0;

	private readonly Color[] _colors = (Color[])(object)new Color[5]
	{
		Color.white,
		Color.red,
		Color.green,
		Color.blue,
		Color.yellow
	};

	public NoseFlashlightController(nint ptr)
		: base((global::System.IntPtr)ptr)
	{
	}//IL_0010: Unknown result type (might be due to invalid IL or missing references)
	//IL_0015: Unknown result type (might be due to invalid IL or missing references)
	//IL_001c: Unknown result type (might be due to invalid IL or missing references)
	//IL_0021: Unknown result type (might be due to invalid IL or missing references)
	//IL_0028: Unknown result type (might be due to invalid IL or missing references)
	//IL_002d: Unknown result type (might be due to invalid IL or missing references)
	//IL_0034: Unknown result type (might be due to invalid IL or missing references)
	//IL_0039: Unknown result type (might be due to invalid IL or missing references)
	//IL_0040: Unknown result type (might be due to invalid IL or missing references)
	//IL_0045: Unknown result type (might be due to invalid IL or missing references)


	private void Update()
	{
		//IL_0032: Unknown result type (might be due to invalid IL or missing references)
		//IL_004e: Unknown result type (might be due to invalid IL or missing references)
		Camera main = Camera.main;
		if ((Object)(object)main != (Object)null && (Object)(object)main != (Object)(object)_attachedCamera)
		{
			AttachTo(main);
		}
		if (Input.GetKeyDown(NoseFlashlightPlugin.ToggleKey.Value))
		{
			Toggle();
		}
		if (Input.GetKeyDown(NoseFlashlightPlugin.ColorKey.Value))
		{
			CycleColor();
		}
	}

	private void AttachTo(Camera cam)
	{
		_attachedCamera = cam;
		if ((Object)(object)_noseLight == (Object)null)
		{
			CreateLight();
		}
		((Component)_noseLight).transform.SetParent(((Component)cam).transform, false);
		ApplyOffset();
	}

	private void CreateLight()
	{
		//IL_0006: Unknown result type (might be due to invalid IL or missing references)
		//IL_000c: Expected O, but got Unknown
		//IL_0037: Unknown result type (might be due to invalid IL or missing references)
		GameObject val = new GameObject("NoseFlashlight");
		_noseLight = val.AddComponent<Light>();
		_noseLight.type = (LightType)0;
		_noseLight.color = _colors[_colorIndex];
		_noseLight.shadows = (LightShadows)2;
		val.SetActive(_isOn);
		ApplySettings();
	}

	private void CycleColor()
	{
		//IL_003c: Unknown result type (might be due to invalid IL or missing references)
		//IL_0052: Unknown result type (might be due to invalid IL or missing references)
		//IL_0058: Expected O, but got Unknown
		if (!((Object)(object)_noseLight == (Object)null))
		{
			_colorIndex = (_colorIndex + 1) % _colors.Length;
			_noseLight.color = _colors[_colorIndex];
			ManualLogSource log = NoseFlashlightPlugin.Log;
			bool flag = default(bool);
			BepInExInfoLogInterpolatedStringHandler val = new BepInExInfoLogInterpolatedStringHandler(34, 1, ref flag);
			if (flag)
			{
				((BepInExLogInterpolatedStringHandler)val).AppendLiteral("Flashlight color changed to index ");
				((BepInExLogInterpolatedStringHandler)val).AppendFormatted<int>(_colorIndex);
			}
			log.LogInfo(val);
		}
	}

	private void ApplyOffset()
	{
		//IL_0038: Unknown result type (might be due to invalid IL or missing references)
		//IL_004e: Unknown result type (might be due to invalid IL or missing references)
		if (!((Object)(object)_noseLight == (Object)null))
		{
			((Component)_noseLight).transform.localPosition = new Vector3(0f, 0f - NoseFlashlightPlugin.OffsetDown.Value, NoseFlashlightPlugin.OffsetForward.Value);
			((Component)_noseLight).transform.localRotation = Quaternion.identity;
		}
	}

	private void ApplySettings()
	{
		if (!((Object)(object)_noseLight == (Object)null))
		{
			_noseLight.range = NoseFlashlightPlugin.Range.Value;
			_noseLight.intensity = NoseFlashlightPlugin.Intensity.Value;
			_noseLight.spotAngle = NoseFlashlightPlugin.SpotAngle.Value;
			ApplyOffset();
		}
	}

	private void Toggle()
	{
		//IL_0066: Unknown result type (might be due to invalid IL or missing references)
		//IL_006d: Expected O, but got Unknown
		if ((Object)(object)_noseLight == (Object)null)
		{
			Camera main = Camera.main;
			if ((Object)(object)main == (Object)null)
			{
				return;
			}
			AttachTo(main);
		}
		ApplySettings();
		_isOn = !_isOn;
		((Component)_noseLight).gameObject.SetActive(_isOn);
		ManualLogSource log = NoseFlashlightPlugin.Log;
		bool flag = default(bool);
		BepInExInfoLogInterpolatedStringHandler val = new BepInExInfoLogInterpolatedStringHandler(16, 1, ref flag);
		if (flag)
		{
			((BepInExLogInterpolatedStringHandler)val).AppendLiteral("Nose flashlight ");
			((BepInExLogInterpolatedStringHandler)val).AppendFormatted<string>(_isOn ? "ON" : "OFF");
		}
		log.LogInfo(val);
	}
}