Decompiled source of HandReset v1.0.0

Mods\HandReset.dll

Decompiled 5 days ago
using System;
using System.Diagnostics;
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
using System.Runtime.Versioning;
using FlatPlayer;
using HandReset;
using MelonLoader;
using UnityEngine;

[assembly: CompilationRelaxations(8)]
[assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)]
[assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)]
[assembly: AssemblyTitle("HandReset")]
[assembly: AssemblyDescription("B key hand reset for FlatPlayer")]
[assembly: AssemblyCompany("")]
[assembly: AssemblyProduct("HandReset")]
[assembly: AssemblyCopyright("")]
[assembly: AssemblyTrademark("")]
[assembly: ComVisible(false)]
[assembly: Guid("b2c3d4e5-f6a7-8901-bcde-f12345678901")]
[assembly: AssemblyFileVersion("1.0.0")]
[assembly: MelonInfo(typeof(HandResetMod), "HandReset", "1.0.0", "zekeg", null)]
[assembly: MelonPriority(0)]
[assembly: MelonGame("Stress Level Zero", "BONELAB")]
[assembly: TargetFramework(".NETCoreApp,Version=v6.0", FrameworkDisplayName = ".NET 6.0")]
[assembly: AssemblyVersion("1.0.0.0")]
namespace HandReset;

public class HandResetMod : MelonMod
{
	private FieldInfo _fRPos;

	private FieldInfo _fLPos;

	private FieldInfo _fRRot;

	private FieldInfo _fLRot;

	private FieldInfo _fRDef;

	private FieldInfo _fLDef;

	private FieldInfo _fRIsRot;

	private FieldInfo _fLIsRot;

	private FlatBooter _instance;

	private static readonly Vector3 DEFAULT_RIGHT_POS = new Vector3(0.2f, -0.2f, 0.3f);

	private static readonly Quaternion DEFAULT_RIGHT_ROT = new Quaternion(0.2793f, -0.0586f, -0.0171f, -0.9583f);

	private static readonly Vector3 DEFAULT_LEFT_POS = new Vector3(-0.2f, -0.2f, 0.3f);

	private static readonly Quaternion DEFAULT_LEFT_ROT = new Quaternion(-0.2793f, -0.0586f, -0.0171f, 0.9583f);

	private object GetVal(FieldInfo f)
	{
		if (f == null)
		{
			return null;
		}
		if (!f.IsStatic)
		{
			return f.GetValue(_instance);
		}
		return f.GetValue(null);
	}

	private void SetVal(FieldInfo f, object val)
	{
		if (!(f == null))
		{
			if (f.IsStatic)
			{
				f.SetValue(null, val);
			}
			else
			{
				f.SetValue(_instance, val);
			}
		}
	}

	public override void OnInitializeMelon()
	{
		BindingFlags bindingAttr = BindingFlags.Instance | BindingFlags.Static | BindingFlags.Public | BindingFlags.NonPublic;
		Type typeFromHandle = typeof(FlatBooter);
		_fRPos = typeFromHandle.GetField("rightHandPos", bindingAttr);
		_fLPos = typeFromHandle.GetField("leftHandPos", bindingAttr);
		_fRRot = typeFromHandle.GetField("rightHandRot", bindingAttr);
		_fLRot = typeFromHandle.GetField("leftHandRot", bindingAttr);
		_fRDef = typeFromHandle.GetField("rightHandDef", bindingAttr);
		_fLDef = typeFromHandle.GetField("leftHandDef", bindingAttr);
		_fRIsRot = typeFromHandle.GetField("rightHandIsRotate", bindingAttr);
		_fLIsRot = typeFromHandle.GetField("leftHandIsRotate", bindingAttr);
		FieldInfo field = typeFromHandle.GetField("Instance", bindingAttr);
		if (field != null)
		{
			ref FlatBooter instance = ref _instance;
			object? value = field.GetValue(null);
			instance = (FlatBooter)((value is FlatBooter) ? value : null);
		}
		MelonLogger.Msg("HandReset loaded. Press B to reset hands to defaults.");
	}

	public override void OnUpdate()
	{
		//IL_001c: Unknown result type (might be due to invalid IL or missing references)
		//IL_0032: Unknown result type (might be due to invalid IL or missing references)
		//IL_0048: Unknown result type (might be due to invalid IL or missing references)
		//IL_005e: Unknown result type (might be due to invalid IL or missing references)
		if (_instance != null && Input.GetKeyDown((KeyCode)98))
		{
			SetVal(_fRPos, DEFAULT_RIGHT_POS);
			SetVal(_fLPos, DEFAULT_LEFT_POS);
			SetVal(_fRRot, DEFAULT_RIGHT_ROT);
			SetVal(_fLRot, DEFAULT_LEFT_ROT);
			SetVal(_fRIsRot, false);
			SetVal(_fLIsRot, false);
			MelonLogger.Msg("Hands reset to defaults + movement OFF.");
		}
	}
}