using System;
using System.Diagnostics;
using System.IO;
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.Versioning;
using BoneLib;
using BoneLib.BoneMenu;
using Il2CppInterop.Runtime.InteropTypes;
using Il2CppSLZ.Marrow;
using MelonLoader;
using MelonLoader.Preferences;
using MelonLoader.Utils;
using UnityEngine;
using jlib;
[assembly: CompilationRelaxations(8)]
[assembly: RuntimeCompatibility(WrapNonExceptionThrows = true)]
[assembly: Debuggable(DebuggableAttribute.DebuggingModes.IgnoreSymbolStoreSequencePoints)]
[assembly: MelonInfo(typeof(JLib), "JLib", "1.0.0", "Jorink", null)]
[assembly: MelonGame("Stress Level Zero", "BONELAB")]
[assembly: MelonColor(255, 255, 0, 0)]
[assembly: MelonAuthorColor(255, 255, 0, 0)]
[assembly: TargetFramework(".NETCoreApp,Version=v6.0", FrameworkDisplayName = ".NET 6.0")]
[assembly: AssemblyVersion("0.0.0.0")]
namespace jlib;
public class JLib : MelonMod
{
public const string Version = "1.0.0";
public static Page rootPage;
public static Player_Health playerHealth;
public override void OnInitializeMelon()
{
//IL_000a: Unknown result type (might be due to invalid IL or missing references)
rootPage = Page.Root.CreatePage("Jorink", Color.red, 0, true);
Hooking.OnLevelLoaded += OnLevelLoaded;
}
private void OnLevelLoaded(LevelInfo levelInfo)
{
playerHealth = ((Il2CppObjectBase)Player.RigManager.health).TryCast<Player_Health>();
}
public static ModPage Register(string name, Color color)
{
//IL_003b: Unknown result type (might be due to invalid IL or missing references)
string text = Path.Combine(MelonEnvironment.UserDataDirectory, "Jorink");
Directory.CreateDirectory(text);
MelonPreferences_Category val = MelonPreferences.CreateCategory(name);
val.SetFilePath(Path.Combine(text, name + ".cfg"));
return new ModPage(rootPage.CreatePage(name, color, 0, true), val);
}
}
public class ModPage
{
public readonly Page page;
public readonly MelonPreferences_Category category;
internal ModPage(Page page, MelonPreferences_Category category)
{
this.page = page;
this.category = category;
}
public MelonPreferences_Entry<bool> Bool(string name, bool defaultValue, Color color, Action<bool> onChange = null)
{
//IL_0035: Unknown result type (might be due to invalid IL or missing references)
MelonPreferences_Entry<bool> entry = category.CreateEntry<bool>(name, defaultValue, (string)null, (string)null, false, false, (ValueValidator)null, (string)null);
page.CreateBool(name, color, entry.Value, (Action<bool>)delegate(bool value)
{
Set(entry, value, onChange);
});
return entry;
}
public MelonPreferences_Entry<float> Float(string name, float defaultValue, float increment, float min, float max, Color color, Action<float> onChange = null)
{
//IL_0035: Unknown result type (might be due to invalid IL or missing references)
MelonPreferences_Entry<float> entry = category.CreateEntry<float>(name, defaultValue, (string)null, (string)null, false, false, (ValueValidator)null, (string)null);
page.CreateFloat(name, color, entry.Value, increment, min, max, (Action<float>)delegate(float value)
{
Set(entry, value, onChange);
});
return entry;
}
public MelonPreferences_Entry<int> Int(string name, int defaultValue, int increment, int min, int max, Color color, Action<int> onChange = null)
{
//IL_0035: Unknown result type (might be due to invalid IL or missing references)
MelonPreferences_Entry<int> entry = category.CreateEntry<int>(name, defaultValue, (string)null, (string)null, false, false, (ValueValidator)null, (string)null);
page.CreateInt(name, color, entry.Value, increment, min, max, (Action<int>)delegate(int value)
{
Set(entry, value, onChange);
});
return entry;
}
public ModPage SubPage(string name, Color color)
{
//IL_0007: Unknown result type (might be due to invalid IL or missing references)
return new ModPage(page.CreatePage(name, color, 0, true), category);
}
public FunctionElement Function(string name, Color color, Action action)
{
//IL_0007: Unknown result type (might be due to invalid IL or missing references)
return page.CreateFunction(name, color, action);
}
public MelonPreferences_Entry<T> Hidden<T>(string name, T defaultValue)
{
return category.CreateEntry<T>(name, defaultValue, (string)null, (string)null, false, false, (ValueValidator)null, (string)null);
}
public void Save<T>(MelonPreferences_Entry<T> entry, T value)
{
Set(entry, value, null);
}
private void Set<T>(MelonPreferences_Entry<T> entry, T value, Action<T> onChange)
{
entry.Value = value;
category.SaveToFile(false);
onChange?.Invoke(value);
}
}